【问题标题】:Reload chef recipes if install fails or updates are available如果安装失败或更新可用,请重新加载厨师食谱
【发布时间】:2014-11-20 23:55:28
【问题描述】:

这是一项超级基本的任务,但我找不到有关它的文档。我正在使用厨师服务器和厨师启动 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

谢谢

【问题讨论】:

  • 您的问题描述不是很清楚,EC2 和 Chef 之间存在一些术语重叠。不清楚您所说的“不取出节点并再次创建它”(主节点还是 EC2 节点?)您​​的失败运行的输出是什么?为什么你的运行列表是空的?我还没有见过厨师运行失败会清空节点运行列表的情况。

标签: chef-infra


【解决方案1】:

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

首先,我使用刀将相关角色应用于实例:

$ 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

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

【讨论】:

    【解决方案2】:

    Jordan 的回答确实帮了我很大的忙,但对于像我这样刚开始做厨师的人,我会更详细地解释一下。

    我在 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

    希望对你有帮助

    【讨论】:

      【解决方案3】:

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

      $ sudo chef-client --runlist <role>
      

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        相关资源
        最近更新 更多