这是Chef快速入门教程中推荐的方法:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
这真是笨拙。真的没有更好的方法吗?还是在实际的生产环境中,您将拥有自动更新节点的想法?
这是Chef快速入门教程中推荐的方法:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
这真是笨拙。真的没有更好的方法吗?还是在实际的生产环境中,您将拥有自动更新节点的想法?
Answers:
那几乎就是开始的方式,但是只需要完成一次。Chef-client的初始运行通常启用并启动Chef-Client守护程序作为init.d服务。
如果您真的想做得更优雅,可以放弃刀式ssh并直接运行ssh:
ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client
这可能会更快,因为knife-ssh对Chef服务器进行搜索以获取与搜索词匹配的节点(在这种情况下为name:dynode
),如果您已经知道IP地址,则不必严格执行此操作。
ec2 server create
插件只运行刀引导其次是SSH +厨师客户端。因此,如果让您感觉更好,那么Chef的作者还没有发现任何特别聪明的东西。
您可以使用ansible来部署和运行chef-client。
$ ansible -i hosts all -a 'chef-client'
ansible可以通过pip轻松安装:
pip install ansible
您的清单文件(在示例中,名为“主机”)可能如下所示:
[all]
host1.example.com ansible_user=root
host2.example.com ansible_user=root
host3.example.com ansibel_user=root
(请注意,“ all”是我们示例中配置文件中分组的名称-这是任意的,可以是任意名称。您的清单文件也可以包含其他分组,例如[web_wervers],[database_servers],[chef_servers]等)
因此,再次将所有内容放在一起:
> ansible -i hosts all -a 'chef-client'
或许:
> ansible -i hosts all -a 'systemctl status'
我使用Jenkins CI来管理运行。Linux服务器设置为工作站,并在其上安装了Jenkins。因此,我可以使用修改后的run_list引导节点。无论如何,引导过程最终会运行Chef-client。
对于临时执行,Jenkins作业执行刀命令来修改节点的run_list并使用SSH插件在所需节点上执行Chef-client。
chef-run
Chef Workstation中有一个新命令:
chef-run server_name resource_name
chef-client
如果不存在,它将安装并运行您指定的资源或食谱。