什麼是Playbook?
playbook
是由一個或者多個模塊組成的, 使用多個不同的模塊, 完成一件事。
playbook
通過yaml
語法來識別描述的狀態文件, 擴展名爲yaml
。
Playbook的三個語法特點
縮進
YAML使用一個固定的縮進風格表示層級結構, 每個縮進由兩個空格組成, 不能使用Tab
。
冒號
除了以冒號爲結尾的以外, 其他所有的冒號後面必須要有空格。
短橫線
- 表示列表項, 使用一個短橫線加一個空格。
- 多個項使用同樣的縮進級別作爲同一列表。
一個安裝Httpd的簡單實例:
# ansible install httpd
- hosts: # 這裏是需要安裝的機器列表, 也可以是ansible配置好的組名
- 192.168.199.110
- 192.168.199.180
tasks: # 任務塊
- name: install httpd server # 描述信息
yum: # ansible 模塊
name: httpd,lrzsz # 需要安裝的軟件名稱
state: installed # 執行動作
- name: start httpd server
service:
name: httpd
state: started
enabled: yes
Playbook 常用到的關鍵字
hosts
hosts這一塊的內容一個或者多個組或主機, 以逗號爲分隔符, 或者也可換行寫。
例子如下:
兩種寫法, 都可:
- hosts: web
remote_user: root # 遠程執行的用戶
sudo: yes # 是否使用sudo
sudo_user: lanyulei # 登陸到遠程機器後sudo到其他用戶
或者
- hosts:
- 192.168.1.1
- 192.168.1.2
如果你需要在使用sudo
時指定密碼, 可在運行ansible-playbook
命令時加上選項--ask-sudo-pass(-K)
。
如果使用sudo
時, playbook
疑似被掛起, 可能是在sudo
提示處被卡住, 這時可執行Control-C
殺死卡住的任務, 再重新運行一次。