Ansible 是跨多台機器大規模部署更改的好方法。 例如,我用它在新機器上進行一些基本設置並同時更新多個主機。 同樣重要的是要記住,Ansible 不僅用於家庭實驗室環境,而且在企業環境中也非常流行,這使其成為一項非常有價值的技能。
Ansible 是跨多台機器大規模部署更改的好方法。 例如,我用它在新機器上進行一些基本設置並同時更新多個主機。 同樣重要的是要記住,Ansible 不僅用於家庭實驗室環境,而且在企業環境中也非常流行,這使其成為一項非常有價值的技能。
在新機器上設置 Ansible
首先,我們需要安裝 ansible 包,它應該很簡單:
`sudo apt update && sudo apt install ansible`
我們需要創建我們的 Ansible 目錄來處理:
`mkdir ~/ansible && cd ~/ansible`
您現在應該位於本地計算機上的 Ansible 目錄中。
Ansible 概覽
我們使用 Ansible 的兩個主要功能,一個是存儲所有主機的清單,另一個是包含在主機上執行的“指令”的劇本。 為了讓 Ansible 讀取我們的劇本並執行操作,它必須知道主機在哪裡,也就是清單文件是什麼。 它只是所有主機的“清單”。
現在我們有了 playbook 本身,一旦 Ansible 讀取了清單並知道所有主機,它就會開始尋找要做什麼。 那就是劇本,它只是一個簡單的 YAML 文件,它利用“模塊”來執行任務。 有關所述模塊的文檔可以在 網站. 如果有什麼不清楚的地方,這個 [初學者 Ansible 視頻] NetworkChuck 在解釋事情方面做得很好。
創建我們的 Ansible 庫存
現在我們對 Ansible 及其功能有了基本的了解,我們可以創建清單了。 格式可以是 YAML 或 INI,為了簡單起見,我們將使用 INI 並且只添加一個主機。
這是一個示例文件:
清單.ini:
“`伊尼
[強大的]
192.168.1.78
“
在你的 ansible 目錄中將其命名為 `inventory.ini`。 該文件創建了一個“組”“powerful”和一個主機“192.168.1.78”。 稍後我們可以在我們的劇本中使用它。 你可以根據你的設置給它任何你想要的組名和 IP。 如果需要,您還可以向組中添加更多主機。
部署 Ansible 劇本
首先,我們要驗證 Ansible 是否正常工作:
請記住,我們的 ssh 公鑰必須位於我們嘗試訪問的主機上的 authorized_keys 文件中。 否則,此命令將失敗。 我們使用的是“powerful”組,但使用您命名的任何名稱。
`ansible -i ./inventory.ini -m ping -u 管理員強大`
如果可行,我們可以在該節點上提供我們的劇本。
我們正在部署的 playbook 只是更新系統,重新啟動它,然後等待它重新上線。 如果組中有多個節點,它會一個接一個地遍歷每個節點,等待前一個重新上線,然後再重新啟動下一個。 如果您使用類似的東西,這會給節點上的服務足夠的時間來關閉和遷移 碼頭工人群。
更新.yml:
「`yaml
– 名稱:升級所有節點並重啟
收集事實:沒有
主機:“{{ variable_hosts }}”
變成:是
序列號:1
任務:
– 名稱:更新和升級 | {{ inventory_hostname }}
易於:
# 強制向後兼容
force_apt_get:是的
更新緩存:是的
升級:'是'
– 名稱:重新啟動 | {{ inventory_hostname }}
重啟:
# 重啟後等待節點恢復在線的時間
重啟超時:300
# 上一個任務(apt)完成後等待多長時間重啟
pre_reboot_delay:60
– 姓名:平 | {{ inventory_hostname }}
平:
– 名稱:暫停 | {{ inventory_hostname }}
暫停:
分鐘:5
“
`ansible-playbook -i ./inventory.ini -e variable_hosts=powerful -u 管理員 -K ./update.yml`

旗幟說明:
– -i:指定清單文件。
– -e:我們必須指定主機,在劇本中我們有一個變量“variable_hosts”,這是傳遞給劇本的內容。
– -u:這是用於在主機上運行命令的用戶。
– -K:這告訴劇本提示用戶輸入 sudo 密碼,否則劇本將失敗。
關閉的思考
Ansible 是一種非常強大且用途廣泛的工具,可用於多種用途。 我們在這篇文章中僅僅觸及了皮毛,但您應該繼續試驗和自動化任務以了解更多信息。 無論是自動化 Kubernetes 部署,還是像我們今天所做的那樣更新您的系統。
-伊桑·愛德華茲
參與 StorageReview
電子報 | YouTube | LinkedIn | Instagram | Twitter | Facebook | 的TikTok | RSS訂閱