Ansible playbook 使用
3.1 ansible playbook 中的使用
相当于把模块写入到配置文件里面,例:
#cat /root/te.yml
---
- hosts: 192.168.2.20
remote_user: root
tasks:
- name: test_pb
shell: touch /tmp/tst_pb
#ansible-playbook test.yml
再来创建一个用户的例子:
#cat create_user.yml
---
- name: create_user
hosts: 192.168.2.20
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{{ user }}"
说明:name 参数对该 playbook 实现的功能做一个概述,后面执行过程中,会打印 name 变量的值 ,可以省略;gather_facts 参数指定了在以下任务部分执行前,是否先执行 setup 模块获取主机相关信息,这在后面的 task 会使用到 setup获取的信息时用到;vars 参数,指定了变量,这里指字一个 user 变量,其值为test ,需要注意的是,变量值一定要用引号引住;user 提定了调用 user 模块,name是 user 模块里的一个参数,而增加的用户名字调用了上面 user 变量的值。
#ansible-playbook create_user.yml
3.2 ansible playbook 中的循环
创建 white.yml 文件
//先分别在两台虚拟机/tmp下创建三个文件:touch 1.txt 2.txt 3.txt
#cat while.yml
---
- hosts: testhost
user: root
tasks:
- name: change mode for files
file: path=/tmp/{{ item }} mode=600
with_items:
- 1.txt
- 2.txt
- 3.txt
#ansible-playbook while.yml
3.3 ansible playbook 中的条件判断
创建 when.yml 文件:
#cat when.yml
---
- hosts: testhost
user: root
gather_facts: True
tasks:
- name: use when
shell: touch /tmp/when.txt
when:ansible_ens33.ipv4.address == "192.168.2.20"
#ansible-playbook when.yml
3.4 ansible playbook 中的 handlers
执行 task 之后,服务器发生变化之后要执行的一些操作,比如我们修改了配置文件后,需要重启一下服务,创建 handlers.yml 文件加入如下内容:
#cat handlers.yml
---
- name: handlers test
hosts: 192.168.2.20
user: root
tasks:
- name: copy file
copy: src=/etc/passwd dest=/tmp/aaa.txt
notify: test handlers
handlers:
- name: test handlers
shell: echo "123456" >> /tmp/aaa.txt
#ansible-playbook handlers.yml