1. 程式人生 > >ansible playbook 用法

ansible playbook 用法

重啟 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 用法