playbook主要使用YMAL语法,这里通过几个例子直接了解编写规则!
写一个playbook脚本,使其执行ping和创建目录的动作:
首先在server4中删除/testdir下的所有内容(如果之前没有做过即可忽略):
编写脚本:
vim ping.yml
---
- hosts: testB
remote_user: root
tasks:
- name: ping the host
ping:
- name: make directory haha
file:
path: /testdir/haha
state: directory
注意:playbook脚本名的后缀一定是.yml
或者.yaml
脚本解释:
操作对象:testB
在主机中以指定用户身份进行操作:root
tasks后是要执行的动作
第一个动作名为:ping the host(自己定义)
使用的模块:ping(没有指定参数)
第二个动作名为:make directory haha(自己定义)
使用的模块:file
指定参数:路径及名称:/testdir/haha;类型:目录
注意:
1.脚本以---
开头
2.每个部分的开头需要有-和一个空格
3.参数名后面要加冒号,冒号后要有一个空格才能写具体内容
测试脚本内容是否正确:
ansible-playbook --syntax-check ping.yml
执行:
ansible-playbook ping.yml
修改操作对象为testA:
vim ping.yml
---
- hosts: testA
remote_user: root
tasks:
- name: ping the host
ping:
- name: make directory haha
file:
path: /testdir/haha
state: directory
模拟执行:
ansible-playbook --check ping.yml
执行:
ansible-playbook ping.yml
注意:此处的hosts和/etc/ansible/hosts文件中写的内容保持一致,可以是组名、别名,也可以是ip
vim touch-test.yml
---
- hosts: testB
remote_user: root
tasks:
- name: make testfile
file:
path: /testdir/testfile
state: touch
mode: 0700
ansible-playbook --check touch-test.yml
执行:
ansible-playbook touch-test.yml
cp touch-test.yml touch-test1.yml
vim touch-test1.yml
---
- hosts: testB
remote_user: root
tasks:
- name: make testfile
file: path=/testdir/testfile state=touch mode=0700
cp touch-test1.yml touch-test2.yml
vim touch-test2.yml
---
- hosts: testB
remote_user: root
tasks:
- name: make testfile
file: path=/testdir/testfile
state=touch
mode=0700
vim touch-test2.yml
---
- hosts: testB
remote_user: root
tasks:
- file: path=/testdir/testfile
state=touch
mode=0700
name参数可以不写,默认为使用的模块名。但这里建议不要省略name参数!
注意:删掉name参数后,file作为开头,所以需要加-
语法检测:
ansible-playbook --syntax-check touch-test2.yml
vim touch-test2.yml
---
- hosts: testB
remote_user: root
tasks:
- file: path=/testdir/testfile
state=touch
mode=0700
name: make testfile
name参数可以卸载file后面(顺序不会有影响)
语法检测:
ansible-playbook --syntax-check touch-test2.yml