ansible中的playbook,將常用的模塊任務,寫入到playbook中,ansible方便快捷的管理主機。
playbook使用yaml語言來書寫,簡單說下yaml語言。
1、YAML簡介
YAML是一個可讀性高的用來表達資料序列的格式。優點
YAML的可讀性好
YAML和腳本語言的交互性好
YAML使用實現語言的數據類型
YAML有一個一致的信息模型
YAML易於實現
YAML可以基於流來處理
YAML表達能力強擴展性好
YAML的語法和其他高階語言類似並且可以簡單表達清單、散列表、標量等數據結構。其結構Structure通過空格來展示序列Sequence裏的項用"-"來代表
Map裏的鍵值對用":"分隔。YAML文件擴展名通常爲.yaml或者.yml。比如
name: cb
age: 20gender: Male
spouse:
name: hello
age: 18
gender: Female
children:
YAML 2 個重要的結構組成部分list和directory
list
列表的所有元素均使用“-”打頭例如
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
dictionary
字典通過key與valuef進行標識例如
---
# An employee record
name: Example Developer
job: Developer
skill: Elite
2、ymal中的變量
變量命名
變量名僅能由字母、數字和下劃線組成且只能以字母開頭。
facts
facts是由正在通信的遠程目標主機發回的信息這些信息被保存在ansible變量中。要獲取指定的遠程主機所支持的所有facts可使用如下命令進行
# ansible hostname -m setup 這個命令可以獲得被監控端主機的各種信息將這些信息得到後保存到變量中。
自定義變量
在 yaml 中可以使用vars關鍵字來定義變量
vars:
var_name: value
變量的引用
` var_name `
特殊的變量迭代
當有需要重複性執行的任務時可以使用迭代機制。其使用格式爲將需要迭代的內容定義爲item變量引用並通過with_items語句來指明迭代的元素列表即可。
比如添加用戶的不同寫法:
一般做法
- name: add user testuser1
user: name=testuser1 state=present groups=wheel
- name: add user testuser2
user: name=testuser2 state=present groups=wheel
使用變量方式
- name: add several users
vars:
user1: testuser1
user2: testuser2
user: name=` user1 ` state=present groups=wheel
user: name=` user2 ` state=present groups=wheel
使用迭代方式
- name: add several users
user: name=` item ` state=present groups=wheel
with_items:
- testuser1
- testuser2
事實上with_items中可以使用元素還可爲hashes例如
- name: add several users
user: name=` item`.`name ` state=present groups=` item`.`groups `
with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }