过去一周,我陷入了 Chef 的泥潭,目前有一件事让我很为难。我在 AWS 中创建了一个实例(目前已创建多次),当 Chef 开始执行其工作时,我收到编译错误。好吧,我会弄清楚发生了什么,然后重新应用。
我的问题:如何更新现有实例?我可以使用,$ knife ec2 server create [coptions]
但有相应的更新命令吗?我的大脑想执行类似$ knife ec2 server update [AWS instance ID] -x userXXX -r 'recipe[yyy::zzzz]'
“我没有看到更新”之类的操作,那么有类似的东西吗?
我不想在排除配方故障时继续创建和终止实例,我宁愿将更改应用于现有实例。
答案1
尝试刀独奏它允许你使用以下方式更新远程服务器厨师独奏(不是厨师客户)喜欢:
knife solo cook ec2-user@your-node-fqdn -o "your-run-list"
在 chef 服务器环境中,您无需更新远程 ec2 服务器,只需更新 ec2 服务器的节点对象,chef-client 启动时会同步您的更改。因此,您只需通过 knife 更新节点/角色/环境即可。
答案2
如果 Chef 在服务器上成功启动,则运行
knife ssh -m [server-id] chef-client
http://docs.opscode.com/knife_ssh.html
对于 EC2,server-id 是 AWS 分配的实例 id。