我正在尝试自行引导节点并getting-started
在首次启动时运行配方。除了实际的配方从未运行外,一切似乎都运行良好。
这是我的脚本,由以下内容触发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
启动节点后,我看到该节点已向厨师服务器注册,但是在我的脚本的最后一行中指定的配方getting-started
不会被触发。firstboot.json
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]
问题:
你能告诉我我在这里可能缺少什么吗?为什么 chef-client 无法运行firstboot.json
.
更新:
如果我chef-client -j /etc/chef/firstboot.json
手动运行,那么它就可以完成这项工作。rc.local
因此,调用似乎有问题。chef-client
即使我提到过,它仍在运行chef-client -j /etc/chef/firstboot.json
谢谢。