ansible playbook
2018-08-05
ansible playbook
playbook 就相当于把模块写入到配置文件里
例:
[root@server ~]# cd /etc/ansible/
[root@server ansible]# vim test.yml
---
- hosts: client.test.com
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/test.txt
说明:hosts 参数指定了对哪些主机进行操作
user 参数指定了使用哪个账户登录远程主机操作
tasks 指定了一个任务,其下面的 name 参数同样是对任务的描述,在执行过程中会打印出来。
执行:ansible-playbook test.yml
[root@server ansible]# ansible-playbook test.yml
PLAY [client.test.com] *********************************************************
TASK [setup] *******************************************************************
ok: [client.test.com]
TASK [test_playbook] ***********************************************************
changed: [client.test.com]
[WARNING]: Consider using file module with state=touch rather than running
touch
PLAY RECAP *********************************************************************
client.test.com : ok=2 changed=1 unreachable=0 failed=0
例:
[root@server ansible]# vim /etc/ansible/create_user.yml
---
- name: create_user
hosts: testhosts
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{{user}}"
说明:name 参数对该 playbook 实现的功能做一个概述,后面执行过程中,会打印 name 变量的值,可以省略;
gather_facts 参数指定了在以下任务部分执行前,是否先执行 setup 模块获取主机相关信息,这在后面的 tasks 需要使用 setup 获取的信息时用到;(# ansible client.test.com -m setup ,setup 模块可收集机器信息)
vars 参数,指定了变量,这里指定了一个 user 变量,其值为 test,需要注意的是,变量值一定要用引号引起来;
user 参数指定了调用 user 模块,name 是 user 模块里的一个参数,而增加的用户名字调用了上面 user 变量的值。
执行:
[root@server ansible]# ansible-playbook create_user.yml
PLAY [create_user] *************************************************************
TASK [create user] *************************************************************
changed: [client.test.com]
changed: [127.0.0.1]
PLAY RECAP *********************************************************************
127.0.0.1 : ok=1 changed=1 unreachable=0 failed=0
client.test.com : ok=1 changed=1 unreachable=0 failed=0