Linux

頻繁關機的Ansible管理

  • April 10, 2021

我想使用 Ansible 來管理大約十幾個 Linux 工作站上的配置。問題是,作為人們使用的物理機器,它們經常處於關閉狀態。所以我需要一個解決方案來確保當我更改集中式配置時,它不僅會被推送到執行的機器上,而且最終會被推送到幾週後出現的機器上。

我的想法是讓一個 cron 作業執行 @reboot 以通過 SSH 連接到伺服器,並請求 playbook 自行執行。

這似乎意味著我需要:

  • 在伺服器上創建部署使用者 (deploy@server)
  • 在每個工作站上創建一個部署使用者 (deploy@ws) 並賦予他們 sudo 權限。
  • 將 deploy@server 的公鑰添加到 deploy@ws 的 authorized_keys
  • 為 deploy@ws 生成一個新的 SSH 密鑰,並將新生成的 SSH 密鑰添加到 deploy@server 的 authorized_keys
  • 設置一個工作站 cron 作業以作為 deploy@ws 執行以通過 SSH 連接到伺服器並使用相關工作站的 –limit 執行 ansible-playbook。該作業以 deploy@server 身份執行,然後以 deploy@ws 身份通過 SSH 重新執行配置。

這感覺有點令人費解。我缺少一些更直接的解決方案嗎?

不需要代理到中央伺服器並返回。在託管節點上安裝 Python 和 Ansible,並在本地主機上執行 play。這將 Ansible 從推送變為拉取。

ansible-pull是此類腳本最著名的範例。它假設可以從原始碼控制儲存庫中檢索播放。不是最優雅的事情,但肯定是使用臨時清單編寫 ansible-playbook 腳本的有用範例。也就是說,它預設將主機模式限制為 localhostplus socket.getfqdn(),因此您可以提供完整的清單,但它只為自己執行。

如果腳本在計劃任務中以 root 身份執行,則這種拉模型的一個優點可能是消除對特權遠端使用者的需求。

缺點,這更容易在可以執行 Ansible 的主機上執行,因此是 POSIX 作業系統,而不是 Windows 或網路設備。在拉取模型中跟踪庫存並不容易,請考慮通過打開回調外掛來實現某種報告。

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