2013-08-01 106 views
1

我試圖自行引導一個節點並在第一次引導時運行getting-started配方。一切似乎都很好,除非實際的配方永遠不會運行。「chef-client -j」未按預期運行

這裏是我的腳本是由rc.local觸發:

#!/bin/bash 

wget http://<some_IP_Address>/chef-11.6.0-1.el6.x86_64.rpm -P /var/tmp/ 
rpm -ivh /var/tmp/chef-11.6.0-1.el6.x86_64.rpm 
mkdir -p /etc/chef 
cd /etc/chef 
wget http://<some_IP_Address>/chef-validator.pem 
mv chef-validator.pem validation.pem 

cat > client.rb << EOL 
log_level  :auto 
log_location  STDOUT 
chef_server_url "MY_CHEF_SERVER_FQDN" 
validation_client_name "chef-validator" 
EOL 

cat > /etc/chef/firstboot.json << EOL 
{"run_list": ["recipe[getting-started]"]} 
EOL 

chef-client -j /etc/chef/firstboot.json 

一旦節點啓動時,我看到節點獲取與在firstboot.json沿着指定的廚師服務器然而getting-started配方註冊我腳本最後一行的chef-client -j沒有被觸發。

它就像只chef-client被觸發,而不是chef-client -j /etc/chef/firstboot.json

如果我把我的工作站,我看到這個配方添加到節點的run_list爲好,只是它尚未執行。

這裏是我的節點廚師工作站輸出命令這是自舉:

$ knife node show node_name.domain.com --run-list 
node_name.domain.com: 
    run_list: recipe[getting-started] 

問題: 你能告訴我什麼,我可以在這裏失蹤?爲什麼廚師客戶端無法運行firstboot.json中提到的任何內容。

更新: 如果我手動運行chef-client -j /etc/chef/firstboot.json,那麼它會完成這項工作。因此,調用rc.local似乎有些問題。它只運行chef-client即使我提到chef-client -j /etc/chef/firstboot.json

謝謝。

+0

它是否有足夠的權限來執行_getting-started_ recipe中陳述的內容? –

+0

我這麼認爲。如果我手動運行相同的腳本,配方會得到很好的執行。我應該通過'rc.local'來查看任何特定權限嗎?另外,我正在考慮使用'cloudinit'作爲替代方案。但這個問題不應該如此難以破解。我想我錯過了一些明顯的東西。謝謝你的時間。 – slayedbylucifer

回答

0

的 「工具入門」 的配方是應該打造 「廚師越來越-started.txt」 下用戶的主目錄。它確實是在「/」下創建該文件。

但無論如何,它驗證了我對如何從自動縮放視角引導實例的思考。

2

而不是

cat > /etc/chef/firstboot.json << EOL 
{"run_list": ["recipe[getting-started]"]} 
EOL 

chef-client -j /etc/chef/firstboot.json 
在腳本

,嘗試:

chef-client -o 'getting-started' 
+0

謝謝。但它仍然沒有運行食譜。它確實向廚師服務器註冊,就好像我只運行了「廚師客戶端」一樣。但是「入門」配方無法運行。再次,如果我手動運行它,它工作正常。我認爲這與'rc.local'有關,因爲當我手動運行我的腳本時,我的方法以及你的方法工作得很好。謝謝你的時間。 – slayedbylucifer