ansible | templates - tags(模板)

该博客介绍了如何使用Ansible的templates模块创建配置文件模板,并通过ssh-agent添加私钥,实现远程复制配置文件。文章还展示了如何利用tags模块控制任务执行,允许选择性运行部分任务,提高自动化部署效率。
摘要由CSDN通过智能技术生成

templates 模板

[root@ansible ~]# cd /opt/
[root@ansible opt]# ssh-agent bash	'//控制用来保存公钥身份验证所使用的私钥'
[root@ansible opt]# ssh-add 		'//把专用秘钥添加至ssh-agent高速缓存中'
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@ansible opt]# scp root@192.168.126.12:/etc/httpd/conf/httpd.conf /opt/
'//将webserver端的apache配置文件远程复制至本地'
httpd.conf                                     100%   11KB  10.1MB/s   00:00
[root@ansible opt]# vim httpd.conf 
'//修改配置文件,添加模板(变量)'
43 Listen {{http_port}}			'//监听'
98 ServerName {{server_name}}	'//域名'
99 MaxClients {{access_num}}	'//访问量'

[root@ansible opt]# mv httpd.conf httpd.conf.j2
'//修改完配置文件,复制一份,j2格式表示为模板'
[root@ansible opt]# vim /etc/ansible/hosts 
'//后续需要对参数进行赋值'
25 [webserver]		'//设定变量'
26 192.168.126.12 http_port=192.168.126.12:80 server_name="www.xcf.com:80" access_num=300
[root@ansible opt]# vim apache.yml

- hosts: webserver		'//指定webserver'
  remote_user: root		'//指定远程主机使用root用户'
  vars:		'//变量可以定义在vars中,也可以在hosts主机清单中'
   - package: httpd
   - server: httpd
  tasks:
   - name: check latest		'//检查最新版本'
     yum: name={{package}} state=latest		'//安装最新版本服务'
   - name: configure apache		'//配置apache'
     template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
     '//源文件在ansible端,生成至对方服务器端'
     notify:		'//修改配置文件后需重启服务'
      - restart httpd
   - name: statrt httpd		'//最后一步需要开启服务项'
     service: name={{server}} enabled=true state=started	'//开启自启'
  handlers:		'//notify通知handlers执行'
   - name: restart httpd		'//重启服务使配置生效'
     service: name={{server}} state=restarted

[root@ansible opt]# ansible-playbook apache.yml --syntax-check
'//检查语法,正确'
playbook: apache.yml
[root@ansible opt]# ansible-playbook apache.yml 
'//执行'
PLAY [webserver] ****************************************************************

TASK [Gathering Facts] **********************************************************
ok: [192.168.126.12]

TASK [check latest] *************************************************************
ok: [192.168.126.12]

TASK [configure apache] *********************************************************
changed: [192.168.126.12]

TASK [statrt httpd] *************************************************************
ok: [192.168.126.12]

RUNNING HANDLER [restart httpd] *************************************************
changed: [192.168.126.12]

PLAY RECAP **********************************************************************
192.168.126.12             : ok=5    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
'//切换至webserver主机,查看配置文件是否更改'
[root@webserver ~]# grep -i Listen /etc/httpd/conf/httpd.conf
[root@webserver ~]# grep -i MaxClients /etc/httpd/conf/httpd.conf
[root@webserver ~]# grep -i ServerName /etc/httpd/conf/httpd.conf
'//可以看到配置好的模板已自动生效'
'//所有服务器皆可按照模板来,非常强大及便捷!'

tags 模块

1.在一个剧本中,一般会定义多个task,而tags可以选择执行哪一个
[root@ansible opt]# vim file.yml

- hosts: webserver
  remote_user: root
  tasks:
   - name: Copy hosts file		'//复制操作'
     copy: src=/etc/hosts dest=/opt/hosts
     tags:		'//标记,打标签,以上为一个整体'
      - only
   - name: touch file		'//另一个操作'
     file: path=/opt/hosts01 state=touch
'//以上操作表示为只执行完第一个就结束而不执行第二个'
'//若不设置标签则会执行到底
'
[root@ansible opt]# ansible-playbook file.yml --syntax-check

playbook: file.yml
[root@ansible opt]# ansible-playbook file.yml --tags="only"

PLAY [webserver] ****************************************************************

TASK [Gathering Facts] **********************************************************
ok: [192.168.126.12]

TASK [Copy hosts file] **********************************************************
changed: [192.168.126.12]

PLAY RECAP **********************************************************************
192.168.126.12             : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
[root@ansible opt]# ansible webserver -a "ls /opt"
192.168.126.12 | CHANGED | rc=0 >>
hosts		'//结果反馈,只有hosts,没有hosts01,执行成功'
rh

--always--
[root@ansible opt]# vim file.yml

- hosts: webserver
  remote_user: root
  tasks:
   - name: Copy hosts file
     copy: src=/etc/hosts dest=/opt/hosts
     tags:
      - only
   - name: touch file
     file: path=/opt/hosts01 state=touch
     tags:		'//添加此项,always表示在任何条件前提下始终执行'
      - always

[root@ansible opt]# ansible webserver -a "rm -rf /opt/hosts"
[WARNING]: Consider using the file module with state=absent rather than running
'rm'.  If you need to use command because file is insufficient you can add
'warn: false' to this command task or set 'command_warnings=False' in
ansible.cfg to get rid of this message.
192.168.126.12 | CHANGED | rc=0 >>
'//删除旧文件,方便后续测试'
[root@ansible opt]# ansible-playbook file.yml 

PLAY [webserver] ****************************************************************

TASK [Gathering Facts] **********************************************************
ok: [192.168.126.12]

TASK [Copy hosts file] **********************************************************
changed: [192.168.126.12]

TASK [touch file] ***************************************************************
changed: [192.168.126.12]

PLAY RECAP **********************************************************************
192.168.126.12             : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible opt]# ansible webserver -a "ls -l /opt"
192.168.126.12 | CHANGED | rc=0 >>
总用量 4
-rw-r--r--  1 root root 158 4月   8 10:00 hosts
-rw-r--r--  1 root root   0 4月   8 10:00 hosts01		'//有了,always生效'
drwxr-xr-x. 2 root root   6 3月  26 2015 rh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xucf1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值