標籤:The cto 開始 執行 新版 http 多模組 適合 定製
playbook-介紹:
playbooks是 一個不同於使用Ansible命令列執行方式的模式,其功能更強大靈活。簡單來說,playbook是一個非常簡單的組態管理和多主機部署系統,不同於任何已經存在的模式,可作為一個適合部署複雜應用程式的基礎。Playbook可以定製配置,可以按照指定的操作步驟有序執行,支援同步和非同步方式。值得注意的是playbook是通過YAML格式來進行描述定義的。
Playbooks結構:
1.Tasks:任務,由模板定義的巨集指令清單2.Variables:變數3.Templates:模板,即使用模板文法的檔案4.Handlers:處理器 ,當某條件滿足時,觸發執行的操作5.Roles:角色
hosts和users介紹:
* playbookd 的設計目的是為了讓某個或某些主機以某個使用者的身份去執行相應的任務。hosts一行可以是一個主機群組、主機、多個主機,中間以冒號分隔,可使用通配模式。其中remote_user表示執行的使用者帳號。* vim /opt/abc.yml- hosts: webserver #指定主機群組,可以是一個或多個組。 remote_user: root #指定遠程主機執行的使用者名稱
* remote_user也可以定義指定使用者通過sudo的方法在被管理主機上運行命令,甚至可以在使用sudo時用sudo_user指定sudo切換的使用者。* vim /opt/sudo.yml - hosts: webserver remote_user: root become: yes #2.6版本以後的參數,之前是sudo,意思為切換使用者運行 become_user: yang #指定sudo使用者為yang*ansible-playbook sudo.yml -K #執行playbook
Tasks list工作清單 和action介紹:
- play的主體部分是task list。task list中的各任務按次序逐個在hosts中指定的所有主機上執行,即在所有主機上完成第一個任務後再開始第二個。在運行自下而下某playbook時,如果中途發生錯誤,所有已執行任務都可能復原,因此,在更正playbook後重新執行一次即可。(因為具有等冪性)
- task的目的是使用指定的參數執行模組,而在模組參數中可以使用變數。模組執行是等冪的,這意味著多次執行是安全的,因為其結果均一致。
- 每個task都應該有其name,用於playbook的執行結果輸出,建議其內容儘可能清晰地描述任務執行步驟。如果未提供name,則action的結果將用於輸出。
- 定義task的可以使用“action: module options”(這個在較新版本上才能執行)或“module: options”的格式,推薦使用後者以實現向後相容。如果action一行的內容過多,也可以使用在行首使用幾個空白字元進行換行。
tasks:- name: make sure apache is running service: name=httpd state=running
- 在眾多模組中,只有command和shell模組僅需要給定一個列表而無需使用“key=value”格式,例如:
tasks:- name: disable selinux command: /sbin/setenforce 0
- 如果命令或指令碼的退出碼不為0,可能會阻止playbook繼續往下執行可以使用如下方式替代:
tasks:- name: run this command and ignore the result shell: /usr/bin/somecommand || /bin/true
- 也就是說這個命令失敗也是要繼續往下走的,就是失敗了但不要影響下面的操作。或者使用ignore_errors來忽略錯誤資訊:
tasks:- name: run this command and ignore the result shell: /usr/bin/somecommand ignore_errors: True
Ansible自動化營運之Playbook詳解及體驗(一)