Ansible playbook

Playbooks 與 adhoc 相比,是一種徹底不一樣的運用 ansible 的方式,是很是之強大的.html

  簡單來講,playbooks 是一種簡單的配置管理系統與多機器部署系統的基礎.與現有的其餘系統有不一樣之處,且很是適合於複雜應用的部署.nginx

  Playbooks 可用於聲明配置,更強大的地方在於,在 playbooks 中能夠編排有序的執行過程,甚至於作到在多組機器間,來回有序的執行特別指定的步驟.而且能夠同步或異步的發起任務.異步

  使用 adhoc 時,主要是使用 /usr/bin/ansible 程序執行任務.而使用 playbooks 時,更可能是將之放入源碼控制之中,用之推送你的配置或是用於確認你的遠程系統的配置是否符合配置規範.rest

  playbook使用yaml語法。yaml語法能夠經過yaml官方資料查看,也能夠查看Ansible中文文檔的相關介紹。code

ansible-playbook [options] playbook.yml [playbook2 ...]

經過簡單的例子來認識playbook

nginx.ymlhtm

---
- hosts: all
tasks:
    - name: Install Nginx
    yum: name=nginx state=present
    - name: template nginx.conf
    template: src=./nginx.conf.js dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s'
    notify:
        - Restart Nginx Service
handlers:
    - name: Restart Nginx Service
    service: name=nginx state=restarted
  1. 第一行表示該文件時yaml文件,非必須
  2. 第二行定義了該playbook針對的主機目標,all表示針對全部主機;這個參數支持Ad-Hoc模式的全部參數也支持自定義組
  3. 第三行定義了這個playbook的tasks集合
  4. 第四行定義一個tasks的名稱,非必要,在運行playbook的時候能夠比較明瞭的顯示playbook運行到哪一步,建議根據tasks實際任務命名
  5. 第五行定義了一個狀態的action,這裏使用的是yum模塊安裝nginx軟件包
  6. 第六行到第九行使用template模板去管理/etc/nginx/nginx.conf文件,owner和group定義該文的屬主和屬組,使用validate參數指定文件生產後使用nginx -t -c %s命令去作nginx文件語法驗證,notify是觸犯handlers,若是同步後,文件的MD5值有變化會觸發Restart Nginx Service這個handler。
  7. 第十行到十二行是定義一個handler狀態讓nginx服務重啓,handler的名稱是Restart Nginx Service。

檢查playbook文件的語法

ansible-playbook nginx.yml --syntax-check

playbook: nginx.yml

執行nginx.yml劇本

ansible-playbook -i hosts nginx.yml 

PLAY [all] *************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************
ok: [172.16.1.11]
ok: [172.16.1.10]

TASK [Install Nginx] *************************************************************************************************************
changed: [172.16.1.10]
changed: [172.16.1.11]

TASK [template nginx.conf] *************************************************************************************************************
ok: [172.16.1.10]
ok: [172.16.1.11]

PLAY RECAP *************************************************************************************************************
172.16.1.10                : ok=3    changed=1    unreachable=0    failed=0   
172.16.1.11                : ok=3    changed=1    unreachable=0    failed=0
相關文章
相關標籤/搜索