厨师配置设置

时间:2015-05-21 18:02:18

标签: chef-recipe

我正在尝试配置通过chef复制文件。但是,我们要求只为几台服务器推送配置。是否有任何参数或设置?

再阐述一点......

我们通过Chef进行的标准部署要求将最新版本部署到所有服务器。 但是,个别开发人员还提交实验性构建,每个开发人员仅部署到1-2个服务器,而不是整个堆栈。 我们的目标如下: 1.能够通过Chef将实验构建部署到指定的服务器集。 2.防止将实验性构建部署到已经托管实验性构建的服务器上 - 也许让Chef服务器将这些服务器标记为不可用的某种方式(?) 3.能够将完整版本部署到所有服务器,或者仅部署那些目前不用于实验版本的服务器。

我确信这是一个相当常见的场景,并且想知道是否有一种优雅/有效/动态的方式来让Chef服务器了解每个构建/实验应该部署到哪里。

1 个答案:

答案 0 :(得分:0)

如果您使用云提供商,答案是使用Packer为每个构建创建映像,然后根据需要部署映像。如果使用裸机,则可以轻松使用常规属性或角色来设置版本。我建议属性。

  1. 在要更新的节点上设置node['myapp']['test_version'] ='某个版本'
  2. 在您的食谱中,检查该属性的值。如果设置,则安装该版本,否则安装主版本。
  3. 要从实验中删除节点,您只需在节点上将该属性重置为nil即可。下一个厨师运行将导致该节点返回到主版本。

    如果您想要一种方法在所有节点上安装主版本,包括实验中的那些节点,您可以编写忽略该设置的第二个配方,或者您可以添加覆盖属性,如node['myapp']['force_master']或这样。然后,您可以在环境中设置该值以覆盖实验。但是你需要记住以后重置它。