2015-02-24 77 views
0

假設我們的產品由兩個組件組成 - 消費者和聚合器。每個安裝的節點具有n使用者和1個聚合器。用戶可自定義Ansible庫存

我希望允許客戶自行定製配置最多X羣集,每個羣集的消費者可以更改n

我的庫存概念:

(implied 
    [cluster1_aggregator] 
    [cluster2_aggregator] 
    and so on for other groups 
) 

[clusterX_aggregator] 
machine1.example.com 

[clusterX_consumer] 
machine2.example.com 
machine3.example.com 

[clusterX_all:children] 
clusterX_consumer 
clusterX_aggregator 

[site:children] 
cluster1_all 
cluster2_all 
... 
clusterX_all 

我想我會準備好所有的「:孩子們」組的安裝包,然後讓客戶填寫只有他有可用的機器,因此,例如只有2個羣集(所以會有cluster3_all:其主機存在於其主機清單中,但不存在cluster3_aggregator組)。

我幾乎只在我的劇本中使用角色。有沒有辦法讓我只能在非空的庫存組中自動運行這個劇本?我在Ansible - Define Inventory at run time中看到了可能相關的答案,但是1)那些期望用戶交互的,我非常想避免的,以及2)我需要讓聚合器和消費者按節點分組,不能有一大羣消費者並按照該問題取第一個X.

所有clusterX都會循環1到,然後會與主機有一個角色:將在所有已部署的集羣上進行一些配置的網站。

預期的結果:

  • Cluster1中有一些主機填寫[cluster1_aggregator][cluster1_consumer],所以它的部署。
  • Cluster2有一些主機填充在[cluster2_aggregator][cluster2_consumer]中,因此已部署。
  • Cluster3沒有任何主機填寫[cluster3_aggregator]或[cluster3_consumer],因此未部署。對於其餘羣集4到X的相同羣組。
  • 由於羣集2是要部署的最後一個羣集,因此針對來自羣集1和羣集2的所有機器完成最終的站點範圍配置。

在這樣的環境中以下可能嗎?

  • 檢測最高填寫庫存部分
  • 循環的作用在數量索引的主機組

回答

1

我認爲你必須看看inventory scripts,因爲它聽起來就像他們可以做你在找什麼。

你可以用你選擇的語言編寫這樣的腳本,它可以通過你的定義只返回有效的集羣。

+0

似乎這是最好的選擇,非常感謝! – 2015-03-01 21:12:31