Ansible Playbook核心元素以及组件
Playbook核心元素
- Hosts 執(zhí)行的遠程主機列表
- Tasks 任務集
- Variables 內(nèi)置變量或自定義變量在playbook中調(diào)用
- Templates 模板,可替換模板文件中的變量并實現(xiàn)一些簡單邏輯的文件
- Handlers 和 notify 結合使用,由特定條件觸發(fā)的操作,滿足條件方才執(zhí)行,否則不執(zhí)行
- tags 標簽 指定某條任務執(zhí)行,用于選擇運行playbook中的部分代碼。ansible具有冪等性,因此會自動跳過沒有變化的部分,即便如此,有些代碼為測試其確實沒有發(fā)生變化的時間依然會非常地長。此時,如果確信其沒有變化,就可以通過tags跳過此些代碼片斷
hosts 組件
Hosts:playbook中的每一個play的目的都是為了讓特定主機以某個指定的用戶身份執(zhí)行任務。hosts用于指定要執(zhí)行指定任務的主機,須事先定義在主機清單中
one.example.com one.example.com:two.example.com 192.168.1.50 192.168.1.* Websrvs:dbsrvs #或者,兩個組的并集 Websrvs:&dbsrvs #與,兩個組的交集 webservers:!phoenix #在websrvs組,但不在dbsrvs組案例:
- hosts: websrvs:appsrvsremote_user 組件
remote_user: 可用于Host和task中。也可以通過指定其通過sudo的方式在遠程主機上執(zhí)行任務,其可用于play全局或某任務;此外,甚至可以在sudo時使用sudo_user指定sudo時切換的用戶
- hosts: websrvsremote_user: roottasks:- name: test connectionping:remote_user: magedusudo: yes #默認sudo為rootsudo_user:wang #sudo為wangtask列表和action組件
play的主體部分是task list,task list中有一個或多個task,各個task 按次序逐個在hosts中指定的所有主機上執(zhí)行,即在所有主機上完成第一個task后,再開始第二個task
task的目的是使用指定的參數(shù)執(zhí)行模塊,而在模塊參數(shù)中可以使用變量。模塊執(zhí)行是冪等的,這意味著多次執(zhí)行是安全的,因為其結果均一致
每個task都應該有其name,用于playbook的執(zhí)行結果輸出,建議其內(nèi)容能清晰地描述任務執(zhí)行步驟。如果未提供name,則action的結果將用于輸出
task兩種格式:
(1) action: module arguments
(2) module: arguments 建議使用
注意:shell和command模塊后面跟命令,而非key=value
范例:
--- - hosts: websrvsremote_user: roottasks:- name: install httpdyum: name=httpd - name: start httpdservice: name=httpd state=started enabled=yes其它組件
某任務的狀態(tài)在運行后為changed時,可通過“notify”通知給相應的handlers
任務可以通過"tags“打標簽,可在ansible-playbook命令上使用-t指定進行調(diào)用
ShellScripts VS Playbook 案例
#SHELL腳本實現(xiàn) #!/bin/bash # 安裝Apache yum install --quiet -y httpd # 復制配置文件 cp /tmp/httpd.conf /etc/httpd/conf/httpd.conf cp/tmp/vhosts.conf /etc/httpd/conf.d/ # 啟動Apache,并設置開機啟動 systemctl enable --now httpd #Playbook實現(xiàn) --- - hosts: websrvsremote_user: roottasks:- name: "安裝Apache"yum: name=httpd- name: "復制配置文件"copy: src=/tmp/httpd.conf dest=/etc/httpd/conf/- name: "復制配置文件"copy: src=/tmp/vhosts.conf dest=/etc/httpd/conf.d/- name: "啟動Apache,并設置開機啟動"service: name=httpd state=started enabled=yes本文鏈接:http://www.yunweipai.com/34656.html
總結
以上是生活随笔為你收集整理的Ansible Playbook核心元素以及组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ansible-list-Diction
- 下一篇: Ansible Playbook企业案例