ansible playbook 用法
阿新 • • 發佈:2017-10-28
重啟 items mode 加載 task 包括 判斷語句 執行過程 class
1. ansible playbook 介紹
playbook 就是相當於把模塊或函數寫入到配置文件裏面,然後我們執行該配置文件來達到遠程運維自動化的目的,類似 shell 腳本
[root@localhost ~]# cat /etc/ansible/test.yml # playbook 文件以 yml 結尾 --- # --- 為固定格式,不能省略,包括 hosts 前面的 - - hosts: test_hosts # hosts 指定對哪些主機組或者ip進行操作remote_user: root # remote_user 指定執行遠程命令的用戶 tasks: # tasks 指定任務,先對任務進行命名,再寫要執行的命令 - name: test_playbook # name 對任務進行一個描述,執行過程中會打印出來 shell: touch /tmp/1.txt # shell 具體要執行的命令
[root@localhost ~]# ansible-playbook /etc/ansible/test.yml # 執行 playbook
2. ansible playbook 循環語句
如下,使用循環分別修改遠程主機三個文件的權限及屬主屬組,其中 {{ item }} 和 with_items 是固定的寫法
--- - hosts: test_hosts remote_user: root tasks: - name: test_playbook file: path=/tmp/{{ item }} mode=600 owner=root group=root with_items:- 1.txt - 2.txt - 3.txt
3. ansible playbook 判斷語句
如下,首先 gather_facts 用於獲取遠程主機的 ansible 變量,就像執行 env 命令一樣,最後在 tasks 中使用 when 可以進行判斷
(具體有什麽變量可以通過 ansible 192.168.5.134 -m setup 來獲取,其中 192.168.5.134 是遠程主機,也可以寫成主機組)
--- - hosts: test_hosts remote_user: root gather_facts: True tasks: - name: test_playbook shell: touch /tmp/1.txt when: facter_ipaddress == "192.168.5.134"
4. ansible playbook handlers
handlers 的目的是在執行完成 tasks 之後,還需要進行其他的操作時,使用 handlers,但是這裏需要保證只有在 tasks 執行成功之後,handlers 才會生效,這種比較適合配置文件發生更改後,自動重啟服務的操作,比如使用 tasks 更改了 nginx 的配置文件,然後我們再使用 handlers 來重新加載 nginx
如下,當 touch /tmp/1.txt 執行成功之後,再執行 handlers 中的 touch /tmp/2.txt
--- - hosts: test_hosts remote_user: root tasks: - name: test_playbook shell: touch /tmp/1.txt notify: test handlers # 指定 notify ,作用是當上面的命令成功之後就執行下面的 handlers handlers: - name: test handlers # handlers 的名字要與上面 notify 定義的一致 shell: touch /tmp/2.txt
ansible playbook 用法