我正在尝试使用 ECS Ops-Works 层来管理一些自动化,但我无法弄清楚如何设置这些实例来设置 ecs.config 以包含我的私有 Docker 存储库凭据,如果管理 ec2 则需要手动执行直接就业。我想我需要以某种方式使用一些自定义 Chef 来覆盖设置配方来加载我的模板,而不是该文件的默认模板,但我是 Chef 的新手,所以不清楚如何做到这一点。
1 回答
所以要重申这个问题,你想在opsworks_ecs::setup
配方中修改这个模板:
template "ecs.config" do
path "/etc/ecs/ecs.config"
source "ecs.config.erb"
owner "root"
group "root"
mode 0644
end
我不知道你是如何“调用”它的,但我现在假设你要么将这个食谱直接放在你的 run_list 中和/或使用显式调用它include_recipe "opsworks_ecs::setup"
在这种情况下,编写一个包装食谱。如果您为“Acme, Org”工作,它可能类似于acme_opsworks_ecs::setup
.
acme_opsworks_ecs/metadata.rb 至少应该有:
name 'acme_opsworks_ecs'
version '0.0.1'
depends 'opsworks_ecs'
acme_opsworks_ecs/recipes/setup.rb 应该如下所示:
include_recipe "opsworks_ecs::setup"
resources(template: "ecs.config").cookbook(cookbook_name)
acme_opsworks_ecs/templates/default/ecs.config.erb 也是必需的
/* add your own template content to this file -- copy theirs and edit */
那应该可以让你修复它。您正在做的是使用 Chef 的两遍解析器,以便 opsworks 配方定义模板资源,然后在实际运行之前重新打开并编辑它。现在,无论您opsworks_ecs::setup
在 run_list 或 include_recipe 调用中引用了什么,都将该配方替换为acme_opsworks_ecs::setup
.
如果您不直接调用opsworks_ecs::setup
,则按照相同的模式包装您调用的 opsworks 配方。
如果你谷歌“chef-rewind”,你可以找到更多关于这种使用厨师模式的信息。请注意,我使用的语法是厨师内置的,并且不需要使用自定义 gem 安装或 chef_rewind 资源/定义,因此在此答案中使用语法会更加简单。