playbook基本語法
html
YAML語法介紹:http://www.yaml.org/spec/1.2/spec.html#Syntaxnginx
第二行:定義該YAML針對的目標主機,all是全部,也能夠是單個或者組服務器
第三行:定義tasks集合,上面圖片中就有3個taskide
第四行:定義task名稱,非必須,建議根據task實際任務命名命令行
第五行:定義一個狀態action, 例如上面就是用yum安裝nginxdebug
第6-9行:使用template模板管理文件,validate參數指文件生成後使用後面命令作nginx語法驗證;notify是觸發handlers,若是同步後文件MD5有變化會觸發restart nginx service 這個handler.rest
第10-12行:定義一個handler狀態讓nginx服務重啓htm
問題:注意格式,不然會報錯:ERROR! Syntax Error while loading YAML.blog
使用--syntax-check參數檢查語法:
$ansible-playbook nginx.yaml --syntax-check
playbook: nginx.yaml
$ansible-playbook nginx.yaml --list-task #列出task任務名稱
playbook: nginx.yaml
play #1 (all): all TAGS: []
tasks:
Install Nginx Package TAGS: []
Copy Nginx.conf TAGS: []
$ansible-playbook nginx.yaml --list-hosts #列出針對的主機
#ansible-playbook -i nginx nginx.yaml -f 3 #執行腳本,根據返回結果來判斷
PLAY RECAP **************************************************************
192.168.1.2 : ok=4 changed=3 unreachable=0 failed=0
#能夠經過命令查看各服務器nginx端口
若是有修改nginx.conf,只須要運行命令
#ansible-playbook -i nginx /etc/ansible/role/nginx/nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'
####################################################################################################################
若是須要修改的比較複雜建議採用多目錄方式,看的比較清楚,出錯方便查詢
####################################################################################################################
playbook支持交互式執行task,能夠指定--step參數
ansible-playbook test nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'
playbook變量與引用
1)定義全局變量:在定義主機組的時候進行定義;若是單臺主機和主機組定義的變量名稱相同,單臺主機變量會生效
2)經過ansible-playbook 命令行傳入 ansible-playbook test.yaml -e "key=KEYTEST"
支持傳多個變量以及指定文件方式傳入變量,變量文件支持YAML和JSON格式
3)參數自定義
4)在playbook文件內使用vars_files
將變量定義到某個文件中,而後再去引用這個文件
5)使用register內的變量
說明:例如2個tasks,其中第二個task是否執行須要判斷第一個task運行後的結果,這個時候就須要在task之間傳遞數據了
variable.yaml:
---
- hosts: test
gather_facts: no
tasks:
- name: register variable
shell: hostname
register: info
- name: diplay Variable
debug: msg="The variable is {{ info }}"
#ansible-playbook variable.yaml
6)使用vars_prompt傳入
說明:經過交互式的方式給定義好的參數傳入變量值
promp.yaml