这是 Chef Fast Start 教程中推荐的方式:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
Run Code Online (Sandbox Code Playgroud)
这真的很笨拙。真的没有更好的方法,或者是在真实的生产环境中,您无论如何都会让节点自动更新?
小智 12
您可以使用Knife ssh在所有包含特定角色或配方的盒子上运行厨师客户端:
knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo
Run Code Online (Sandbox Code Playgroud)
或者,如果您在 EC2 中:
knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname
Run Code Online (Sandbox Code Playgroud)
Tim*_*ter 10
这几乎是您开始工作的方式,但它只需要完成一次。Chef-client 的初始运行通常会启用并启动作为 init.d 服务的 Chef-client 守护程序。
如果你真的想做得更优雅,你可以放弃knife-ssh并直接运行ssh:
ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client
Run Code Online (Sandbox Code Playgroud)
这可能会更快,因为 Knife-ssh 会针对 Chef 服务器进行搜索以获取与搜索词匹配的节点(在本例中为name:dynode),如果您已经知道 IP 地址,则无需严格执行此操作。