playbook的使用
一、使用
1.把模块写入配置文件
vi /etc/ansible/test.yml
---
- hosts: 192.168.2.20
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/playbook_test.txt
说明:第一行需要三个杠
hosts参数 指定了对哪些主机进行操作,如果是多台机器可以用逗号作为分隔,也可以使用主机组,在/etc/ansible/hosts里定义
user参数 指定了使用什么用户登录远程主机操作
tasks 指定了一个任务,其下面的name参数 同样是对任务的描述,在执行过程中会打印出来
shell 是ansible模块名字
2.执行playbook任务
进入/etc/ansible/目录下执行
ansible-playbook test.yml
3.创建用户:
vi /etc/ansible/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 }}"
**说明:**gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;
vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;
user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。
二、循环
1.编辑while文件
---
- hosts: testhost
user: root
tasks:
- name: change mode for files
file: path=/tmp/{{ item }} mode=600
with_items:
- 1.txt
- 2.txt
- 3.txt
说明: with_items是循环的对象
2.执行
要先在/tmp创建文件1.txt 2.txt 3.txt
ansible-playbook while.yml
三、条件判断
1.编辑文件
vi /etc/ansible/when.yml
---
- hosts: testhost
user: root
gather_facts: True
tasks:
- name: use when
shell: touch /tmp/when.txt
when: ansible_eno16777728.ipv4.address == "192.168.200.20"
说明:ansible anisble-02 -m setup 可以查看到所有的facter信息
用自己的网卡名字
2.执行
ansible-playbook when.yml
四、handlers
1.编辑文件
vi 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 "111111" >> /tmp/aaa.txt
**说明:**只有copy模块真正执行后,才会去调用下面的handlers相关的操作。
2.执行
ansible-playbook handlers.yml
完成