我試圖自行引導一個節點並在第一次引導時運行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
謝謝。
它是否有足夠的權限來執行_getting-started_ recipe中陳述的內容? –
我這麼認爲。如果我手動運行相同的腳本,配方會得到很好的執行。我應該通過'rc.local'來查看任何特定權限嗎?另外,我正在考慮使用'cloudinit'作爲替代方案。但這個問題不應該如此難以破解。我想我錯過了一些明顯的東西。謝謝你的時間。 – slayedbylucifer