如何访问OpsWorks ECS层中的私有Docker存储库?

我正在尝试使用ECS Ops-Works图层来pipe理一些自动化,但我无法弄清楚如何设置这些实例来设置ecs.config来包含我的私有Docker存储库凭证,就像手动pipe理ec2一样直接工作。 我想我需要以某种方式使用一些自定义的厨师来覆盖设置配方加载我的模板,而不是该文件的默认模板,但我是新来的厨师,所以如何做到这一点不清楚。

所以要重新解决这个问题,你需要在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应该至less有:

 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的双路parsing器,以便opsworks配方定义模板资源,然后在实际运行之前重新打开并编辑它。 现在,只要在run_list或include_recipe调用中引用了opsworks_ecs::setup ,就可以用acme_opsworks_ecs::setupreplace该配方。

如果你不直接调用opsworks_ecs::setup ,那么就按照相同的模式来包装你所调用的opsworks配方。

如果你谷歌“厨师倒带”,你可以find更多关于这种使用厨师模式的信息。 请注意,我使用的语法是内置于厨师,不需要自定义gem install或chef_rewind资源/定义来使用,所以在这个答案中使用语法会相当简单。