通过对 AD-HOC 的学习,我们发现 AD-HOC 每次只能在被管理节点上执⾏简单的命令。
⽽⽇常⼯作中,我们往往⾯临的是⼀系列的复杂操作,例如我们有可能需要安装软件、更新配置、启动服务等等⼀系列操作的结合。此时再通过 AD-HOC 去完成任务就有些⼒不从⼼了在这种场景下,Ansible引进了 PLAYBOOK 来帮忙我们解决这样复杂问题。
YAML ⽂件
YAML支持的数据结构有三种
YAML 中的字符串可以不使⽤引号,即使⾥⾯存在空格的时候,当然了使⽤单引号和双引号也没有错。
例如:
this is a string
'this is a string'
"this is a string"
YAML 中若⼀⾏写不完你要表述的内容的时候,可以进⾏折⾏。
例如:
long_line: |
Example 1
Example 2
Example 3
#或者
long_line: >
Example 1
Example 2
Example 3
若熟悉 Python 的话, 可以认为它就是Python中的List。
如何定义?
以短横线开头 + 空格 + 具体的值
例如:
- red
- green
- blue
若熟悉 Python 的话, 可以认为它就是 Python 中的 Dict
如何定义?
key + 冒号( + 空格 + 值(value)
即----key:value
例如:
name: Using Ansible
code: D1234
#转换为 python 的 Dict
{'name': 'Using Ansibel', 'code': 'D1234'}
例子:
使⽤列表和字典的形式去描述⼀个班级的组成。
---
class:
- name: stu1
num: 001
- name: stu2
num: 002
- name: stu3
num: 003
# {'class': [{'name': 'stu1', 'num': 1},{'name':
'stu2', 'num': 2},...]}
...
将YAML⽂件,通过 Python 的YAML 模块验证, 若不正确则报错。若正确则会输出 YAML ⾥的内容。
注意使⽤时,⼀定确保安装了yaml 软件包。
python -c 'import yaml,sys;print yaml.load(sys.stdin)' < myyaml.yml
python3 -c 'import yaml,sys;print(yaml.load(sys.stdin))' < myyaml.yml
现在设置myyaml.yml的值:
一定要记得格式是-+空格+值
python -c 'import yaml,sys;
print yaml.safe_load(sys.stdin)' < myyaml.yml