这是Chef Fast Start教程推荐的方法:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
这真的很笨拙。 是不是真的没有更好的方法,还是在真正的生产环境中,无论如何都会有节点自动更新?
这几乎是如何让事情开始,但只需要做一次。 chef-client的初始运行通常启用和启动chef-client守护程序作为init.d服务。
如果你真的想更优雅地做到这一点,你可以切刀ssh并直接运行ssh:
ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client
这可能会更快,因为knife-sshsearch主厨服务器以获取与search词相匹配的节点(在本例中为name:dynode
),如果您已经知道IP地址,则不必严格执行此操作。
您可以使用ssh刀在所有包含特定angular色或配方的框上运行chef-client:
knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo
或者如果你在EC2:
knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname
你可以使用可以部署和运行厨师客户端。
$ ansible -i hosts all -a 'chef-client'
非常容易安装与点:
pip install ansible
您的库存文件(在示例中名为“hosts”)可能如下所示:
[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root
(注意“all”是我们例子中configuration文件中的分组名称 – 这是任意的,可以是任何东西,您的库存文件也可以包含其他分组,例如[web_wervers],[database_servers],[chef_servers]等)
所以再一次把它放在一起:
> ansible -i hosts all -a 'chef-client'
或者可能:
> ansible -i hosts all -a 'systemctl status'
我使用Jenkins CI来pipe理运行。 Linux服务器设置为工作站,并安装了Jenkins。 所以我可以使用修改的run_list引导节点。 无论如何,引导过程最后会运行厨师客户端。
对于临时执行,Jenkins作业执行knife命令修改节点的run_list,并使用SSH插件在所需的节点上执行chef-client。