ansible-3

目录

一、Templates 模块

1.1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量

1.2.修改主机清单文件,使用主机变量定义一个变量名相同,而值不同的变量

1.3.编写 playbook 

 二、tags 模块

三、Roles 模块

四、编写模块

4.1.编写httpd模块

4.2.编写mysql模块

4.3.编写php模块

4.4.编写roles


一、Templates 模块

Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件,可以看作是一个编译过的模板文件,用来产生目标文本,传递Python的变量给模板去替换模板中的标记。

1.1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量
 

cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2vim /opt/httpd.conf.j2
Listen {{http_port}}                #42行,修改
ServerName {{server_name}}            #95行,修改
DocumentRoot "{{root_dir}}"          #119行,修改

1.2.修改主机清单文件,使用主机变量定义一个变量名相同,而值不同的变量

vim /etc/ansible/hosts       
[webservers]
192.168.190.104 http_port=8080 server_name=www.accp.com:80 root_dir=/etc/httpd/htdocs[dbservers]
192.168.190.105 http_port=8081 server_name=www.benet.com:80 root_dir=/etc/httpd/htdocs

1.3.编写 playbook 

vim apache.yaml
---
- name: install httpdhosts: allremote_user: rootvars:- pk: httpd- service: httpdtasks:- name: install httpd pk yum: name={{pk}} state=latest- name: copy confg filetemplate: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.confnotify: - restart httpd- name: start httpd serverservice: name={{service}} enabled=true state=startedhandlers:- name: restart httpdservice: name={{service}} state=restartedansible-playbook apache.yaml

 二、tags 模块

可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。
playbook还提供了一个特殊的tags为always。作用就是当使用always当tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。

vim webhosts.yaml
---
- hosts: webserversremote_user: roottasks:- name: copy hosts filecopy: src=/etc/hosts dest=/opt/hoststags:- wys- name: touch filefile: path=/opt/testhost state=touchansible-playbook webhosts.yaml --tags='wys'

查看 

vim webhosts.yaml
---
- hosts: webserversremote_user: roottasks:- name: Copy hosts filecopy: src=/etc/hosts dest=/opt/hoststags:- only     #可自定义- name: touch filefile: path=/opt/testhost state=touchtags:- always    #表示始终要运行的代码

三、Roles 模块

Ansible为了层次化、结构化地组织Playbook,使用了角色(roles),roles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。

roles 的目录结构:
cd /etc/ansible/
tree roles/
roles/
├── web/
│   ├── files/
│   ├── templates/
│   ├── tasks/
│   ├── handlers/
│   ├── vars/
│   ├── defaults/
│   └── meta/
└── db/├── files/├── templates/├── tasks/├── handlers/├── vars/├── defaults/└── meta/
/roles 内各目录含义解释
●files
用来存放由 copy 模块或 script 模块调用的文件。●templates
用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。●tasks
此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。●handlers
此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。●vars
此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。●defaults
此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。●meta
此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。
在一个 playbook 中使用 roles 的步骤:
(1)创建以 roles 命名的目录
mkdir /etc/ansible/roles/ -p    #yum装完默认就有(2)创建全局变量目录(可选)
mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all     #文件名自己定义,引用的时候注意(3)在 roles 目录中分别创建以各角色名称命令的目录,如 httpd、mysql
mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql(4)在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}(5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml(6)修改 site.yml 文件,针对不同主机去调用不同的角色
vim /etc/ansible/site.yml
---
- hosts: webserversremote_user: rootroles:- httpd
- hosts: dbserversremote_user: rootroles:- mysql(7)运行 ansible-playbook
cd /etc/ansible
ansible-playbook site.yml示例:
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -ptouch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

四、编写模块

4.1.编写httpd模块

vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install apacheyum: name={{pkg}} state=latest
- name: start apacheservice: enabled=true name={{svc}} state=started//定义变量:可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中
vim /etc/ansible/roles/httpd/vars/main.yml
pkg: httpd
svc: httpd

4.2.编写mysql模块

vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mysqlyum: name={{pkg}} state=latest
- name: start mysqlservice: enabled=true name={{svc}} state=startedvim /etc/ansible/roles/mysql/vars/main.yml
pkg:- mariadb- mariadb-server
svc: mariadb

4.3.编写php模块

vim /etc/ansible/roles/php/tasks/main.yml
- name: install phpyum: name={{pkg}} state=latest
- name: start php-fpmservice: enabled=true name={{svc}} state=startedvim /etc/ansible/roles/php/vars/main.yml
pkg:- php- php-fpm
svc: php-fpm

4.4.编写roles

vim /etc/ansible/site.yml
---
- hosts: webserversremote_user: rootroles:- httpd- mysql- phpcd /etc/ansible
ansible-playbook site.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环形链表问题详解

引言 环形链表的题大家都应该做过,如果没有做过可以去某扣上做一下 ,下面有传送门 141. 环形链表 - 力扣(LeetCode)https://leetcode.cn/problems/linked-list-cycle/submissions/530160081/ 正文 如果在面试的情况下出现了环形链表的题大…

43.乐理基础-拍号-常见的拍号与强弱关系

首先拍号的定义:39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 通过 39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 应该可以知道 Y的取值只能是2、4、8、16、32、64。。。。因为Y指的是Y分音符,…

数据结构之单单单——链表

一.链表 1)链表的概念 链表(Linked List)是一种物理存储结构上非连续,非顺序的储存结构,数据元素的逻辑顺序是通过链表中指针链接次序实现的。要注意,链表也是线性表----->但链表在物理结构上不是线性的…

(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目

(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目PbootCMS内核开发的网站模板,该模板适用于物流运输网站、仓储货运网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机端,同一个后台…

SOLIDWORKS Electrical电气元件智能开孔

实际的电气元器件安装中,一些元器件需要穿过孔洞安装,例如按钮、指示灯会在配电柜的控制面板上,需要穿过控制面板安装。这部分内容放在软件建模、装配时,往往比较复杂因为考虑孔的大小符合元器件规格、孔跟随元器件移动、同一元器…

MinimogWP WordPress 主题下载——优雅至上,功能无限

无论你是个人博客写手、创意工作者还是企业站点的管理员,MinimogWP 都将成为你在 WordPress 平台上的理想之选。以其优雅、灵活和功能丰富而闻名,MinimogWP 不仅提供了令人惊叹的外观,还为你的网站带来了无限的创作和定制可能性。 无与伦比的…

后端常用技能:解决java项目前后端传输数据中文出现乱码、问号问题

0. 问题背景 最近做一个解析数据的小工具,本地运行时都正常,发布到服务器上后在导出文件数据时发现中文全部变成了问号,特此记录下问题解决的思路和过程 1. 环境 java 1.8 springboot 2.6.13 额外引入了fastjson,commons-csv等…

5.1 Java全栈开发前端+后端(全栈工程师进阶之路)-服务端框架-MyBatis框架-相信我看这一篇足够

0.软件框架技术简介 软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也 指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。 框架的功能类似于基础设…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷1(私有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

XSKY SDS 6.4 重磅更新:NFS 性能飙升 3 倍,对象多站点等 10 多项功能强势升级

近日,XSKY星辰天合发布了 XSKY SDS V6.4 新版本,该版本在文件的性能提升、对象容灾能力完善方面改进异常显著,同时也大幅提高了存储系统的安全特性,适配更多的信创软硬件生态。 近来,软件定义存储(SDS&…

【C++】map和set的基础详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

静态住宅代理 IP 的影响

在不断发展的在线业务和数字营销领域,保持领先地位势在必行。在业界掀起波澜的最新创新之一是静态住宅代理 IP 的利用。这些知识产权曾经是为精通技术的个人保留的利基工具,现在正在成为各行业企业的游戏规则改变者。 一、静态住宅代理IP到底是什么&…

背靠腾讯电商的视频号小店项目,怎么去操作呢?新手做店必看!

大家好,我是电商小V 视频号小店作为腾讯电商推出的电商项目,可以说现在就是处于爆火的状态,一直也是备受关注的,同时也是吸引了很多的玩家入驻,因为视频号小店就是一个新的平台,一个新的场地,现…

学习软考----数据库系统工程师25

关系规范化 1NF(第一范式) 2NF(第二范式) 3NF(第三范式) BCNF(巴克斯范式) 4NF(第四范式) 总结

在 Linux 中复制文件和目录

目录 ⛳️推荐 前言 在 Linux 命令行中复制文件 将文件复制到另一个目录 复制文件但重命名 将多个文件复制到另一个位置 复制时处理重复文件 交互式复制文件 在 Linux 命令行中复制目录 仅复制目录的内容(不是目录) 复制多个目录 测试你的知…

74从零开始学Java之排序算法中的冒泡和选择排序

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…

值得推荐的多款iPaaS工具

当今企业面临着日益复杂的数据和系统集成挑战,为了提高业务效率和灵活性,许多企业转向了iPaaS工具(Integration Platform as a Service,即集成平台即服务)。iPaaS工具可以帮助企业轻松地连接和集成各种应用程序、数据和…

Xinstall助力推广结算统计,让数据一目了然

在当今数字化营销的时代,推广活动的成功与否往往取决于精准的数据统计和分析。然而,对于许多广告主和开发者来说,推广结算统计却是一个令人头疼的问题。数据分散、渠道繁多、统计口径不一,这些问题都给推广效果的衡量带来了极大的…

Camtasia Studio 的功能介绍及常规操作教程

随着数字媒体时代的快速发展,视频已经成为人们获取信息、娱乐和沟通的主要方式之一。在这样的背景下,一款强大且易于使用的视频编辑和制作工具显得尤为重要。Camtasia Studio就是这样一款能够满足各种视频制作需求的优秀软件。 一、Camtasia Studio的特…

pandas处理excel问题(记录)

1. pandas读取excel合并单元格问题 网上查到的都是 df[col] df[col].ffill() 这个能解决大部分简单合并的问题,遇到复杂的就不行了遇到上图中 有空的情况,ffill() 也会向下填充。 所以不能通过这种方式 import openpyxl # 拆分所有的合并单元格&#…