如果安装失败或有更新,请重新加载主厨食谱

时间:2012-01-18 11:59:49

标签: chef

这是一项超级基本任务,但我找不到相关文档。我正在使用厨师服务器和厨师启动EC2机器。如果失败了,我想修复配方,然后在该机器上重新安装角色和配方,而无需取出节点并再次创建它。我找不到那样做的命令。

如果我在机器上运行chef-client,我会得到:

chef-client
[Wed, 18 Jan 2012 11:23:58 +0000] INFO: *** Chef 0.10.0 ***
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Run List is []
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Run List expands to []
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Starting Chef Run for gidsy-staging-web
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Loading cookbooks []
[Wed, 18 Jan 2012 11:23:59 +0000] WARN: Node gidsy-staging-web has an empty run list.
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Chef Run complete in 0.508629 seconds
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Running report handlers
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Report handlers complete

由于

3 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,这就是我解决问题的方法。

首先,我使用knife:

将有问题的角色应用于实例
$ knife node run_list add [NODE] [ENTRY]

Be sure and include the items in [ENTRY] in quotes (for example, "role[my-role]").

将角色应用于EC2实例后,我会在相关实例上调用chef-client。

$ sudo chef-client

这应该会大大加快您的开发周期。

答案 1 :(得分:2)

乔丹的回答确实帮助了我,但对于那些像我这样的厨师,我会更详细地解释一下。

我在EC2上运行并遇到上述错误。这就是我解决它的方法:

  1. 在我的本地计算机上,运行:knife ec2 server list以获取EC2服务器上的主机节点
  2. 从我的本地开发计算机将运行列表添加到该节点:knife node run_list add i-xxxxx "role[aws-db-deploy]"其中i-xxxxx是您的节点名称
  3. ssh到您的aws ec2实例并运行命令:sudo chef-client
  4. 希望这有帮助

答案 2 :(得分:0)

您可以使用运行列表运行chef-client:

$ sudo chef-client --runlist <role>