我试图自行引导一个节点并在第一次引导时运行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