在控制端裡編寫腳本,執行之前最好儲存目前快照或者先使用測試環境,如果出現錯誤可以及時恢複!
在管理機上使用yum子產品控制兩台被管理機安裝tree軟體
ansible ceshiji -m yum -a 'name=tree state=installed'
驗證安裝
在管理機上使用yum子產品控制兩台被管理機解除安裝tree軟體
ansible ceshiji -m yum -a 'name=tree state=absent'
驗證解除安裝
下載下傳ansible一個檢查文法的工具
yum -y install search ansible-lint.noarch
子產品以及yaml文法補充
通過 Ansible 提供的用于遠端執行指令的 command、shell、raw、script 子產品,我們可以将被管理節點的 IP/計算機名資訊寫入 Ansible 的“演員”inventory——/etc/ansbile/hosts,将要執行的指令編排成 Ansible 的 playbook,然後運作這個 playbook 就可以達到遠端配置的目的了。
command、shell、raw、script 子產品有什麼差別呢?
command 和 shell 子產品都依賴 Python 解析器,而 raw、script 這兩個子產品不依賴 Python,直接調用目标用戶端的/bin/sh 來執行指令。如果目标用戶端安裝了 Python,而且要執行的指令很簡單,不涉及特殊的 shell 符号,可以考慮 command 子產品,如果涉及重定向等特殊 shell 符号則要用 shell 子產品;如果目标用戶端沒有安裝 Python,就隻能考慮用 raw 或者script 子產品,如果臨時組裝 shell 指令清單,則使用 raw 子產品,如果在 Ansible 控制器上已經編寫好 shell腳本檔案,需要發送到用戶端去執行,則應該使用 script 子產品。
playbook 又是什麼?
playbook字母意思是劇本,劇本裡寫清楚了哪個演員什麼時候應該說什麼台詞、做什麼動作、展現什麼神情等,電影、電視劇是按照劇本來拍攝的。Ansible 裡的 playbook 作用就跟拍電影的劇本一樣,把要執行的指令、任務在 playbook 裡編排好,然後 Ansible 執行這個 playbook,Ansible的“電影”就這樣“拍攝”完成了。由此可見,掌握 playbook 的編排對于掌握 Ansible 的應用有多重要!電影劇本有分幕、場(景)、鏡等結構,Ansible 的 playbook 也分結構,類似于:
playbook #相當于總劇本
|----play #相當于場景劇本
|----tasks #相當于分鏡頭劇本
|----pre_tasks #相當于拍攝前準備工作:布置場景,演員化妝等,執行環境的準備
|----tasks #相當于開始拍攝,要執行的指令清單
|----post_tasks #相當于拍攝完清場工作:撤換場景,演員卸/換妝等,執行環境的清理
關于更多的文法資訊可以參考文檔:
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.htmlYAML 1.1:https://yaml.org/spec/1.1/
YAML 1.2:https://yaml.org/spec/1.2/spec.html
Ansible playbook 的樣例:https://github.com/ansible/ansible-examples
https://blog.csdn.net/qq_51625703/article/details/124364414
Command 子產品
功能:在遠端主機執行指令,此為預設子產品,可忽略-m選項
注意:此指令不支援 $VARNAME < > | ; & 等,用shell子產品實作