Ansible

Ansible:如果主機不總是線上,如何管理它們?

  • December 28, 2018

如果之前有人問過這個問題,我深表歉意,但我可能沒有在搜尋中使用正確的術語……

在業餘時間,我使用 Ansible 管理有限數量的主機(執行 Debian Stretch 的台式機和筆記型電腦)。我的“安裝程序手冊”在所有具有不同硬體的主機上創建單一配置,以使管理更加容易。我現在不時手動執行更新程序角色,並且每隔一段時間我會發現一個有用的調整,然後我將其部署到那些線上的主機上。但是:他們中的一些人很少來辦公室,如果他們可以進行更新,那麼確定我仍然需要在該機器上部署哪些調整總是很麻煩……

我當然可以:

  • 將紀元時間戳 ( {{ ansible_date_time.epoch }}) 寫入每個主機上可以檢索並設置為事實的文件
  • 為每個新調整創建一個新任務,添加一個帶有時代時間戳的標籤和一個條件來檢查時代事實 > 時代標籤
  • 成功執行劇本後更新主機上的紀元時間戳

這是應該怎麼做的嗎?

如果它們可用於更新,那麼確定我仍然必須在該機器上部署哪些調整總是很麻煩……

這不是使用 Ansible 的方式。您的劇本的編寫方式應該與您之前是否應用過配置集無關(“冪等性”)。如果是這樣,您只需應用最新版本的劇本,您的系統最終應該處於正確狀態。

這可能是ansible-pull的一個很好的案例。非永久線上的主機可以配置為在連接到辦公室網路時執行 ansible-pull。

然而,這並沒有改變創建冪等劇本和角色的需要。如果劇本的執行時間是一個問題,則可以選擇使用stat模組來設置條件以跳過更長的執行任務。

選擇器是這裡的一個選項,但需要手動管理。因此,加快劇本本身的執行時間可能會更好。

引用自:https://serverfault.com/questions/946437