Ansible Palybook的编写是基于YAML语言的。YAML语言,即Yet Another Markup Language,是一种能被计算机直接识别的标记语言,同时也方便人的阅读,且方便和脚本语言交互。但是,YAML的配置即为严格,在配置时必须注重空格的数量。
总的来看,YAML语言特性如下:
Ansible的Playbook有以下组件:
---
- hosts: user_passwd
remote_user: root
tasks:
- name: Install Httpd by YUM
yum: name=httpd state=installed
- name: Start Httpd
service: name=httpd state=started

---
- hosts: user_passwd
remote_user: root
tasks:
- name: Install Httpd by YUM
yum: name={{ csdn }} state=installed
变量格式:

[user_passwd]
10.10.192.21
[user_passwd:vars]
csdn=httpd

3. playbook中定义变量
---
- hosts: user_passwd
vars:
csdn: httpd
remote_user: root
tasks:
- name: Install Httpd by YUM
yum: name={{ csdn }} state=installed

4. setup模块获取变量

在每次playbook的执行过程中都可以看到gathering facts的过程,这是ansible收集被控端信息的过程,ansible把被控端的一些信息收集到本地,并且以变量的形式进行保存,在编写playbook中就可以使用这些变量。
查看通过gathering facts获取的变量信息:
执行ansible -m setup,内容很多,仅截取部分:

示例:
---
- hosts: user_passwd
remote_user: root
tasks:
- name: Display vars in setup
file: name=/root/{{ ansible_all_ipv4_addresses }} state=touch
查看创建的文件信息:

5. 独立的变量文件
将变量存储成独立的变量文件,创建一个以yml结尾的变量文件,var.yml,内容如下:
csdn: httpd
修改csdn.yml:
---
- hosts: user_passwd
remote_user: root
vars_files:
- ./inventory/var.yml
tasks:
- name: Yum install
yum: name={{ csdn }} state=installed
执行结果:
