playbook的基礎組件
name
定義playbook或者task的名稱
hosts
用於指定要執行指定任務的主機
user
用於指定遠程主機上的執行任務的用戶
task
任務列表
vars
定義變量
vars_files
定義變量文件
notify
任務執行結果如果是發生更改的則觸發定義在handler的任務
handlers
用於當前關注資源發生變化時採取一定指定的操作
示例1
> # vim test.yml
> - hosts: all
> user: root
> tasks:
> - name: playbook_test
> shell: touch /a.txt
> tags: chuang jian a.txt
參數解釋
hosts參數指定了對那些主機進行操作
user參數指定了使用什麼用戶登陸遠程主機操作
tasks指定了一個任務,其下面的name參數同樣是對任務的描述,在執行過程中會打印出來
tags給指定的任務定義一個調用標識
語法檢測
# ansible-playbook --syntax-check test.yml
測試運行
# ansible-playbook -C test.yml
運行playbook
# ansible-playbook test.yml
只運行指定標記的任務
-t tags
# ansible-playbook -t 標記名稱 test.yml
跳過某個被標記的任務
--skip-tags= 標記名稱
# ansible-playbook --skip-tags=標記名稱 test.yml
從某個任務開始往下運行
--start-at-task 任務名稱
# ansible-playbook --start-at-task "任務名稱" test.yml
示例2:使用變量
>#vim create_user.yml
>- name: create_user
> hosts: web1
> user: root
> gather_facts: false
> vars:
> - user: "tuerqi"
> tasks:
> - name: create user
> user: name="{{ user }}"
示例3:條件執行
># vim when.yml
>- hosts: web1
> user:root
> gather_facts: True
> tasks:
> - name: use when
> shell: touch /bali.txt
> when: ansible_hostname == "web1"
示例4:條件觸發
># vim handlers.yml
>- name: handlers test
> hosts: web1
> user: root
> tasks:
> - name: test copy
> copy: src=/etc/passwd dest=/tmp/handlers.txt
> notify: test handlers
> hanlers:
> - name: test handlers
> shell: echo "www.lala.com" >> /tmp/handlers.txt
解釋說明
只有 copy 模塊真正執行後,纔會去調用下面的 handlers 相關的操作