Ansible自動化運維之Playbook詳解及體驗(一)

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     #指定遠程主機執行的用戶名

Ansible自動化運維之Playbook詳解及體驗(一)

*  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

Ansible自動化運維之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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章