2016-11-07 64 views
0

我熟悉廚師,並希望建立我的工作流程沒有中央服務器(使用廚師零和刀零)。然而,一切工作正常,但廚師零存儲在.json文件中的節點信息,這些信息相當大,並且經常更改以至於無法存儲在git存儲庫中,並且我想在每個工作日重新掃描服務器,而不是將其定義存儲在存儲庫中 - 這應該很容易自動化,因爲我們沒有很多服務器。是否有任何命令可以讓我通過提供其ssh證書將現有的融合節點添加到chef-zero?我知道knife zero bootstrap <node-ip>會做的伎倆,但它也觸發額外的收斂我不想發生。刀零現有節點發現

+0

爲那些誰可能會發現' - 無收斂'選項:可悲的是,這並不節省節點定義 – Etki

+0

避免收斂去反對廚師的ide philosophy哲學(多次運行,只在需要時才採取行動)。所以不,廚師沒有辦法達到你想要的,重新思考你的需求/烹飪書籍在想要的狀態下思考,你不會在乎多次運行廚師(如同任何其他SCM) – Tensibai

+0

@Tensibai而idempotence是真正的主廚的方面,無需獲取節點狀態並註冊它。 – Etki

回答

0

整個問題是圍繞錯誤的假設:

  • 我想廚師節點仍然存在,並管理它自己的狀態。不是這樣。節點狀態在主廚運行結束時序列化並傳遞給服務器,因此無法重新發現節點,因爲我試圖在沒有主廚的情況下嘗試。如果你需要服務器屬性,你可以試着用空運行列表來聚合節點;由於運行列表不會保留在節點本身上,因此這應該是安全操作。
  • 我還認爲,廚師零是以某種方式管理節點狀態以其他方式比使用json文件。那是我試圖直接在json中指定節點角色的結果,而他們不斷從run_list重建,所以我很困惑,看到我的角色不適用;這使得我發現「發現」根本就沒有必要。

以下結構是足夠的廚師零見到節點,併成功地收斂它:

{ 
    "name": "sonarqube.srv.company.my", 
    "automatic": { 
    // automatic attributes are managed by ohai, so be ready that next 
    // chef run may use another fqdn if you haven't pinned it with 
    // any means possible 
    "fqdn": "99-199-255-99.srv.company.my" 
    }, 
    "run_list": [ 
    "role[role-1]" 
    "recipe[cookbook::recipe]" 
    ] 
} 

如果您存儲一樣,在git的定義,你總是有你手頭的基礎設施,並可以做knife converge name:sonarqube.srv.company.my在任何時刻,並且勝過我所有的需求。我的個人工作流程包含名爲managed-nodes的目錄,其節點規格如上,覆蓋nodes目錄bin/reset包含的bash腳本。只要我將它們存儲在適當的運行列表和屬性中,一切都像魅力一樣。但是,如果您選擇類似的工作流程,請記住,如果沒有成功的廚師在節點上運行,則不需要完整的屬性列表。

沒有持久服務器的純粹基於git的廚師工作流程的必要性是由我想不透露的一些內部原因決定的。 好吧,我只是想冪等的可靠。

榮譽@Tensibai全力以赴。

0

只是要清楚,你基本上是在描述你自己的(壞)廚師服務器。如果你想要集中管理,你應該使用廚師服務器,並節省一些時間:)