说明:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值,可以省略;gather_facts参数制定了在以下任务执行前,是否先执行setup模块获取相关信息,这在后面的task或使用到setup获取的信息时用到;vars参数制定了变量,这里指一个user变量,其值为test,需要注意的是,变量值一定要引号括起来;user制定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。
收集客户端的信息:
ansible client -m setup
8.ansible playbook循环
修改testhost组下主机的/tmp/目录下的1.txt,2.txt,3.txt(首先保证这些文件存在)的权限修改为600,属主改为root,属组改为root:
编辑一个loop.yml脚本:
vim /etc/ansible/loop.yml
---
- hosts: testhost
user: root
tasks:
- name: change mode for file
file: path=/tmp/{{ item }} mode=600 owner=root group=root
with_items:
- 1.txt
- 2.txt
- 3.txt
执行:
ansible-playbook /etc/ansible/loop.yml
9.ansible playbook判断
当满足条件ansible_hostname == "client"时执行命令:
touch /tmp/when.txt:
编辑一个when.yml脚本:
vim /etc/ansible/when.yml
---
- hosts: testhost
remote_user: root
gather_facts: True
tasks:
- name: use when
shell: touch /tmp/when.txt
when: ansible_hostname == "client"
执行:ansible-playbook /etc/ansible/when.yml
10.ansible playbook 中的 handlers
在执行task之后,服务器发生变化之后要执行的一些操作,比如我们修改了一些配置问价后,需要重启一下服务:
vim /etc/ansinle/handlers.yml
---
- name: handlers test
hosts: testhost
user: root
tasks:
- name: copy file
copy: src=https://www.linuxidc.com/etc/passwd dest=/tmp/aaa.txt
notify: test handlers
handlers:
- name: test handlers
shell: echo "111111" >> /tmp/aaa.txt