有没有更优雅的方式来远程运行厨师客户端?

Ste*_*ett 21 chef

这是 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 地址,则无需严格执行此操作。

  • 好吧,我想这回答了这个问题 - 不,没有更好的方法。遗憾的是,“刀具引导程序”实际上也不能运行厨师客户端。 (2认同)