使用動態和靜態主機和變數管理 Ansible 庫存

使用動態和靜態主機和變數管理 Ansible 庫存

我想知道什麼是管理動態和靜態主機以及變數和群組組合的環境的好解決方案。

我正在考慮將資料中心中的實體主機與特定任務(實體資料庫節點)的組合加上管理一些動態虛擬機的Proxmox 主機,以及在某些情況下管理新虛擬機器的一些雲端供應商,其中實體效能是還不夠(外包效能觀察)。

在這種情況下,動態庫存是一個很好的做法。當然,有一些適用於 AWS、Hetzner 等的插件。

我建立了一個資料庫,其中包含所有條目和腳本,用於更新資料庫中每個請求的雲端虛擬機器清單。所有動態主機以及靜態主機和一些群組變數、主機變數都儲存在資料庫中。還有一個 Web 服務可以輸出 Python 腳本載入的 JSON 動態清單,並在我的劇本中用作動態清單。

我的問題是 - 我是唯一擁有這種設定的人嗎?當我想到一家擁有一些 VMWare 主機以及該主機上的動態虛擬機數量以及其他一些實體系統的公司時,很明顯應該有某種「工具」或幫助來進行此設定。但據我所知,要嘛有靜態清單(YAML、INI),要嘛有動態清單(JSON)。但是每個管理員都會開發自己的動態庫存資料庫嗎?或是否有給定的軟體“產品”或“專案”?或者為「靜態」和「動態」環境提供不同的清單是「更好」的做法嗎?

答案1

Ansible 已經發布了幾個庫存插件。是的,您可以將它們組合起來,作為多個-i選項,或指定包含多個清單的目錄。

例如,您可能在inventory/stage/inventory/prod/目錄中擁有所有這些內容:

  • Hetzner 的 hcloud
  • AWS 的 aws_ec2
  • 具有靜態主機清單的 YAML
  • 您的自訂庫存腳本
  • 建構為從表達式產生組和變數

對於給定的事物,群組名稱應該是一致的,因此戲劇可以使用靜態模式。

非常整潔。對清單或主機中的事實使用 Jinja 表達式來建立群組和變數。例如,您可能想要一些 ec2 標籤加上一些主機名稱正規表示式成為群組的成員。

如果這還不夠,您可以編寫自己的庫存插件。通常,這些與一個 API 通信,例如您是否破解了 Proxmox 庫存插件。或者,放棄 Ansible 端的多個庫存,找到適合您的多雲工具,並使其為庫存發出 JSON。

相關內容