2014-02-25 56 views
2

我需要在我的廚師 - 客戶端環境中禁用passwd插件以避免由於大量用戶而導致致命錯誤。如何通過廚師刀引導命令傳遞ohai提示

我爲本地客戶端的方法是以下行添加到client.rb文件:

ohai[:disabled_plugins] = ["passwd"] 

自舉時被管理節點,我想有過刀引導做了同樣的命令到受管節點。從刀文檔,這裏是語法:

--hint HINT_NAME [= HINT_FILE]

的Ohai暗示要在自舉的設定目標。該提示包含在一個文件中,格式爲JSON:{"attribute":"value","attribute":"value"...}。 HINT_NAME是提示的名稱和HINT_FILE是位於

/etc/chef/ohai/hints/HINT_FILE.json

使用多個--hint選項的提示文件的名稱命令來指定多個提示。

這是我做過什麼:

在廚師工作站,/etc/chef/ohai/hints/HINT_FIILE.jason下,它具有以下內容:

{disabled_plugins:["passwd"]} 

這裏是刀引導程序命令:

刀自舉[managed_node_name] --hint disabled_plugins -sudo -x 用戶-P [口令] -N 「test_node」

當命令完成時,在的受管,則創建一個新文件:/etc/chef/ohai/hints/disabled_plugins.json,具有以下內容:

{}

這看起來不正確...

任何想法我做錯了什麼?

回答

0

我不認爲--hint選項的工作方式您認爲,或由手冊頁隱含。它似乎沒有從廚師工作站上的/etc/chef/ohai/hints目錄讀取,而是從您指定的文件名--hint選項中讀取。

這應該工作:

$ cat > myhint.json << EOF 
{disabled_plugins:["passwd"]} 
EOF 
$ knife bootstrap --hint=myhint.json blah blah 
+0

嘗試了您的建議,在廚師工作站上創建了myhint.json文件,然後運行knife boostrap命令。 完成後,在受管節點上,創建一個文件爲 /etc/chef/ohai/hints/myhint.json.json。 該文件的內容是: {} 所以它還沒有工作。 – user3353404

1

讓我們假設你在你的工作站(你運行一個刀)包含以下信息

{ "foo": "bar" } 

在節點的文件/home/user/test.json(服務器這將執行主廚運行)您將使用以下語法在/etc/chef/ohai/hints/foo.json中找到該文件:

$ knife bootstrap --hint foo=/home/user/test.json 

此節點上的時間/etc/chef/ohai/hints/foo.json將包含

{ "foo": "bar" } 
0

所以我有同樣的問題,不能得到提示正常工作,因爲它似乎並沒有在這個特殊的方式+缺乏documenation樣品的工作。

最後我只是選擇了編輯chef-full.erb這是自舉默認模板使用,以產生client.rb

要得到正確的文件,運行此:

$ gem contents chef | grep bootstrap | grep full 
/home/henryt/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb 

然後vimchef-full.erb文件和加ohai :disabled_plugins一行裏面的client.rb這裏是文件(cat > /etc/chef/client.rb <<'EOP'

Ohai::Config[:disabled_plugins] = [:Passwd] 

我的補丁文件:

--- ~me/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb.orig 
    2016-07-22 00:53:33.689961205 -0700 
+++ ~me/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb 
2016-07-22 00:44:21.253493396 -0700 
@@ -64,6 +64,7 @@ 

cat > /etc/chef/client.rb <<'EOP' 
<%= config_content %> 
+Ohai::Config[:disabled_plugins] = [:Passwd] 
EOP 

cat > /etc/chef/first-boot.json <<'EOP' 

現在每次我自舉client.rb獲取與此ohai :disabled_plugins線生成的機器,我不必須有一個自定義的client.rb文件。