Playbook以YAML格式編寫,擴展名爲yml。開頭由三個破折號(---)組成。末尾三個(...)作爲文檔結束標記。
示例:
上例中,一個play有三個鍵:name 、host和tasks。
- name相當於備註,說明了本play的用途。
- host 指定對其運行play中的任務的主機,將主機模式取爲值,如清單中受管主機或組的名稱。
- tasks 指定該play運行的任務的列表。
運行palybook
ansible-playbook命令用於運行palybook。 playbook的名稱作爲參數傳遞。如: ansible-playbook site.yml
配置Playbook執行的輸出詳細程度
選項 | 描述 |
-v | 顯示任務結果 |
-vv | 任務結果和任務配置都會顯示 |
-vvv | 包含關於與受管主機連接的信息 |
-vvvv | 增加了連接插件相關的額外詳細程度選項,包括受管主機上用於執行腳本的用戶,以及執行的腳本 |
ansible-palybook --syntax-check +playbook名稱,用於驗證playbook的語法。 -c 選項對palybook執行空運行,會報告在執行該playbook時將發生什麼更改,但不會對受管主機進行任何實際的更改。
PLAY中的遠程用戶和特權升級
hosts:
- servera
- serverb
- serverc
示例:
- name: /etc/hosts is up to date
hosts: datacenter-west
remote_user: automation # 定義遠程用戶
become: yes #啓用特權升級
becom_method; sudo #指定特權升級的方法爲 sudo
tasks:
- name: server.example.com in /etc/hosts
lineinfile:
path: /etc/hosts
line: '192.0.2.42 server.example.com server'
state: present
ansible-doc -s + 模塊名稱 會生成示例輸出。
playbook語法變化
- # 井號右側的所有內容都是註釋 。
- 字符串用單引號或者雙引號 擴起。編寫多行字符串有兩種方式。可以使用豎線(|)字符表示要保留字符串中的換行字符。也可以使用大於號(>)字符來表示換行字符轉換成空格並且行內的引導空白將被刪除。
- YAML字典。 以縮進塊的形式編寫 鍵值對集合,如:
name:svcrole
svcservice: httpd
svcport: 80
- yaml列表 使用普通單破折號語法編寫的列表:
hosts:
- servera
- serverb
- serverc
Ansible 變量
命名變量,變量的名稱必須以字母開頭,並且只能含有字母、數字和下劃線。
定義變量,可以設置三個基本的範圍級別:
- 全局範圍: 從命令行或ansible配置設置的變量
- Play範圍:在PLAY 和相關結構中設置的變量
- 主機範圍:由清單、事實收集或註冊的任務,在主機組和個別主機上設置的變量
playbook變量 常見方式是將變量放在playbook開頭的vars塊中:
- hosts: all
var_files:
- var/users.yml
在palybook中使用變量
引用變量,可將變量名稱放在雙花括號{{}}內。在任務執行時,Ansible 會將變量替換爲其值。