playbook特殊用法、变量的使用
1.Playbook语法变化
YAML注释
注释也可以用于提高可读性。在YAML中,编号或井号字符(#)右侧的所有内容都是注释(推荐使用这一种注释方式)。如果注释的左侧有内容,请在该编号符号的前面加一个空格。
# This is a YAML comment
YAML字符串
内容中有空格或特殊字符(*)建议使用引号。双引号或单引号都行。
编写多行字符串有两种方式。
- 管道符 (|) 追加的方式写入内容,结尾处留有一行空行
[root@localhost playbook]# cat test.yml
---
- hosts: "*"
gather_facts: no
tasks:
- name: sync hosts file
lineinfile:
path: /tmp/abc
line: |
hello word
dft
dsdf
create: yes
[root@localhost ansible]# ansible-playbook playbook/test.yml
PLAY [*] ************************************************************************************************
TASK [sync hosts file] **********************************************************************************
changed: [192.168.237.168]
PLAY RECAP **********************************************************************************************
192.168.237.168 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@localhost ~]# cat /tmp/abc
hello word
dft
dsdf
- 大于号字符(>)字符后面的内容只是一行内容,在playbook中多行显示利于提高可读性。结尾处也会留有一行空行,也是用追加方式写入内容。
[root@localhost ansible]# cat playbook/test.yml
---
- hosts: "*"
gather_facts: no
tasks:
- name: sync hosts file
lineinfile:
path: /tmp/abc
line: >
hello word
dft
dsdf
state: present
create: yes
[root@localhost ansible]# ansible-playbook playbook/test.yml
PLAY [*] ************************************************************************************************
TASK [sync hosts file] **********************************************************************************
changed: [192.168.237.168]
PLAY RECAP **********************************************************************************************
192.168.237.168 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@localhost ~]# cat /tmp/abc
hello word dft dsdf
YAML字典
下面是一个简单的字典形式:
name: svcrole
svcservice: httpd
svcport: 80
字典也可以使用以大括号括起的内联块格式编写,如下所示:
{name: svcrole, svcservice: httpd, svcport: 80}
当playbook中包含角色列表时,较常使用这种语法,从而更加容易区分play中包含的角色和传递给角色的变量。
YAML列表
最简单的列表如下:
hosts:
- servera
- serverb
- serverc
列表也有以中括号括起的内联格式,如下所示:
hosts: [servera, serverb, serverc]
playbook简写
通过将模块的键值对放在与模块名称相同的行上来定义任务,即“键=值”
简写形式:
tasks:
- name: shorthand form
service: name=httpd enabled=true state=started
普通形式&#x