自动化运维工具ansible:(三)playbook中template、tags、roles操作示例

本文详细介绍了Ansible的template模块,用于动态生成配置文件;tags模块,允许按需执行特定任务;以及roles功能,通过层次结构自动加载变量、任务等。文章通过创建roles目录、定义全局变量、配置角色目录结构和编写各模块来演示如何在playbook中使用roles。
摘要由CSDN通过智能技术生成

目录

一:template模块介绍

二: tags模块

三: roles

3.1roles内各目录含义解释 

3.2在一个playbook中使用roles的步骤 

3.2.1创建以roles命令的目录

3.2.2创建全局变量目录

3.2.3在roles目录中分别创建以各角色名称命令的目录,如httpd 

3.2.4在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空

3.2.5在每个角色的handlers、tasks、meta、defaults、vars目录下创建main.yml文件,千万不能自定义

3.2.6在playbook文件中,调用各角色 

3.3实验 

一:template模块介绍

ansible的template模块,可以将带有参数的配置文件传递到目标地址,可以对文件进行属组属主的修改以及备份。优先类似于docker的consul。

templates功能:根据模板文件动态生成对应的配置文件,命名必须以 .j2 结尾

示例:

yum -y install httpd
rpm -qc httpd
 
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
#修改httpd配置文件
[root@localhost conf]# vim /etc/httpd/conf/httpd.conf 		
42 Listen {
  {http_port}}				#给监听端口定义变量
43 MaxClients {
  {client_num}}		#最大并发量定义变量
95 ServerName {
  {server_name}}		#给域名定义变量

vim /etc/ansible/hosts
[webserver]
192.168.163.150 httpd_port=192.168.163.150:80 server_name="www.test.com:80" access_num=100

vim apache.yaml
- hosts: webserver
  remote_user: root
  vars:
   - ap: httpd
  tasks:
   - name: install httpd
     yum: name={
  {ap}}
   - name: create configure file
     template: src=/root/httpd/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
     notify:
      - restart httpd
   - name: start httpd server
     service: name={
  {ap}} enabled=true state=started
  handlers:
   - name: restart httpd
     service: name={
  {ap}} state=restarted

ansible-playbook apache.yaml --syntax-check
ansible-playbook apache.yaml    #执行脚本

去两台远程主机上查看
ansible webserver -m shell -a 'cat /etc/httpd/conf/httpd.conf | grep -i "listen"'
ansible webserver -m shell -a 'cat /etc/httpd/conf/httpd.conf | grep -i "maxclient"'
ansible webserver -m shell -a 'cat /etc/httpd/conf/httpd.conf | grep -i "servername"'


二: tags模块

当你写了一个很长的playbook,其中有很多的任务,这并没有什么问题,不过在实际使用这个剧本时,你可能只是想要执行其中的一部分任务而已,或者,你只想要执行其中一类任务而已,而并非想要执行整个剧本中的全部任务,这时,我们可以借助tags模块为任务进行打标签操作,任务存在标签后,我们可以在执行playbook时利用标签,指定执行哪些任务,或者不执行哪些任务

简单的说:在一个playbook中,我们一般会定义很多个task,如果我们只想执行其中的某一个task或多个task时就可以使用tags标签功能了。

示例:

vim tags1.yaml
- hosts: webserver
  remote_user: root
  tasks:
   - name: copy hosts file
     copy: src=/etc/hosts dest=/o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值