1.playbook命令格式
- hosts: web #web组所有机器
remote_user: root #远程用户, 默认是root用户
tasks: # 要执行的任务组
- name: createuser # 任务名
user: name=user1 state=present # 相当于 ansible -m user -a 'name=user1 state=present'
- name: creategroup # 任务名
group: name=group1 # 相当于 ansible -m group -i 'name=group1'
需要注意格式:
每一个"-“和”:"后面都有一个空格
2.playbook传参
传参方式1: -e
yaml文件pbook.yml:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} state=absent
执行命令:
ansible-playbook -e user=user1 pbook.yml # 将user1传递给文件中的user后执行命令
传参方式2:hosts文件里面主机后面写
1,打开ansible hosts文件:
vim /etc/ansible/hosts
2, 修改如下配置然后保存退出
[web] #web组
192.168.12.91 user=user1
192.168.12.92 user=user2
192.168.12.93 user=user3
[db] #db组
192.168.12.93
我的hosts文件图例说明:
3,执行playbook文件
文件pbook.yml内容:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} #这里的user对应hosts文件中user变量
执行文件:
ansible-playbook pbook.yml
传参方式3:hosts文件里面写[groupname:vars]
1,打开ansible hosts文件
vim /etc/ansible/hosts
2,修改ansible hosts文件
[web]
192.168.12.91
192.168.12.92
192.168.12.93
[db]
192.168.12.93
[web:vars] #web组所有主机指定同一个user变量user3
user=user3
我的hosts文件图例:
3,执行playbook文件
pbook.yml文件内容:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} #这里的user对应hosts文件中user变量
执行:
ansible-playbook pbook.yml
传参方式4:playbook文件中vars来指定
1,打开pbook文件:
vim pbook.yml
添加如下两行:
添加后文件内容:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }}
vars:
- user: user5
2,执行文件:
ansible-playbook pbook.yml
传参方式5:通过register注册,使用的时候要使用参数的.stdout值
1,打开pbook.yml文件:
vim pbook.yml
2,修改文件图例:
修改后的文件如下:
- hosts: web
remote_user: root
tasks:
- name: sum
shell: echo user10
register: user
- name: createuser
user: name={{ user.stdout }}
3,保存退出,执行pbook.yml文件
ansible-playbook pbook.yml