2015-12-07 40 views
4

我試圖使用ECS OPS-作品層來管理一定程度的自動化,但我想不出如何設置這些實例來設置ecs.config包含我的私人碼頭工人庫憑證,一會手工做的,如果直接管理ec2工作。我想我需要以某種方式使用一些自定義的廚師來覆蓋setup recipe加載我的模板,而不是該文件的默認模板,但我對廚師是新手,所以如何做到這一點目前尚不清楚。如何訪問OpsWorks ECS Layer中的私有Docker存儲庫?

+1

您可能需要提供關於opsworks食譜本身的更多信息。食譜中的模板資源?它是否在資源/提供者?你能告訴我們你使用的opsworks代碼嗎?我可以想到幾種不同的可能的解決方案,但沒有經驗的opsworks不能告訴你該怎麼做,沒有可能猜測完全錯誤的答案... – lamont

+0

Hi Lamont,感謝您的關注。 OpsWorks默認提供一組配方(https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_ecs)。所有的食譜都是默認應用的,並且由用戶來提供額外的食譜(我希望修改現有的食譜)。我特別感興趣的是看到https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/opsworks_ecs/recipes/setup.rb指向不同的模板,或者在自定義中重新配置和重置如果這是不可能的食譜。 –

回答

3

因此重申這個問題,要修改這個模板在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 /食譜/的setup.rb應該是這樣的:

include_recipe "opsworks_ecs::setup" 
resources(template: "ecs.config").cookbook(cookbook_name) 

acme_opsworks_ecs /模板/默認/ ecs.config.erb也需要

/* add your own template content to this file -- copy theirs and edit */ 

這應該讓你解決它。你正在做的是使用Chef的雙通解析器,以便opsworks配方定義模板資源,然後在實際運行之前重新打開並編輯它。現在,無論您在run_list或include_recipe調用中引用了opsworks_ecs::setup,都將其替換爲acme_opsworks_ecs::setup

如果你不直接調用opsworks_ecs::setup,然後包裹opsworks配方(S),你打電話,而不是千篇一律。

如果谷歌「廚師倒帶」你可以找到關於這種使用廚師模式的詳細信息。請注意,我使用的語法內置於chef中,不需要自定義gem install或chef_rewind資源/定義來使用,所以在此答案中使用語法會相當簡單。

+0

我後來能夠嘗試這個,它似乎沒有預期的效果。我後來與亞馬遜的支持保持聯繫,他們告訴我他們的廚師實施方面存在一些差異,特別是http://docs.aws.amazon.com/opsworks/latest/userguide/cookbooks-101-opsworks-templates .html修改模板。當/如果我得到這個工作,我會進一步報告。不過謝謝。 –

+1

他們的解決方案似乎依賴於我們將最終棄用廚師客戶端的多種cookbooks路徑功能。如果你能弄清楚如何使它工作,這種廚師倒帶方法會更好。 – lamont

+0

感謝您的提醒! –

相關問題