YAML
1. YAML语言简介
YAML是一个可读性高的用来表达资料序列的格式。 YAML参考了其他多种语言,包括: XML、C语言、 Python、 Perl以及电子邮件格式RFC2822等。 Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。
YAML Ain't Markup Language,即YAML不是XML。不过,在开发的这种语言时, YAML的意思其实是: "Yet Another Markup Language"(仍是一种标记语言)。
特性:
YAML的可读性好
YAML和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML有一个一致的信息模型
YAML易于实现
YAML可以基于流来处理
YAML表达能力强,扩展性好
2. YAML语法简介
在单一文件中,可用连续三个连字号(——)区分多个文件。另外,还有选择性的连续三个点号( ... )用来表示文件结尾
次行开始正常写Playbook的内容,一般建议写明该Playbook的功能
使用#号注释代码
缩进必须是统一的,不能空格和tab混用
缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
YAML文件内容是区别大小写的, k/v的值均需大小写敏感
k/v的值可同行写也可换行写。同行使用:分隔
v可是个字符串,也可是另一个列表
一个完整的代码块功能需最少元素需包括 name: task
一个name只能包括一个task
YAML文件扩展名通常为yml或yaml
3. YAML演示
[root@localhost ansible]# cat playbook/firewalld.yml
---
- name: apache
hosts: 192.168.145.163
tasks:
- name: stop and disabled firewalld
service:
name: firewalld
state: stopped
enabled: no
- name: disabled selinux
lineinfile:
path: /etc/selinux/config
regexp: "^SELINUX="
line: "SELINUX=disabled"
state: present
[root@localhost ansible]# ansible-playbook playbook/firewalld.yml
PLAY [apache] ***********************************************************************
TASK [Gathering Facts] **************************************************************
ok: [192.168.145.163]
TASK [stop and disabled firewalld] **************************************************
changed: [192.168.145.163]
TASK [disabled selinux] *************************************************************
changed: [192.168.145.163]
PLAY RECAP **************************************************************************
192.168.145.163 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0