![docker 注册表的 chef 配方不适用于 AWS ECR](https://linux22.com/image/700806/docker%20%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%20chef%20%E9%85%8D%E6%96%B9%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20AWS%20ECR.png)
docker 的 Chef 食谱”https://github.com/chef-cookbooks/docker“提供docker_registry进行如下身份验证。
docker_registry 'https://index.docker.io/v1/' do
username 'publicme'
password 'hope_this_is_in_encrypted_databag'
email '[email protected]'
end
但是如果我们想将它用于 AWS ECR,那么我们需要在登录之前生成登录令牌。
aws ecr get-login --region us-east-1 #It will generate login token as below.
docker login -u AWS -p "password token"
但 Chef Cook Book 不提供此功能。知道如何在 Chef 中实现此功能吗?
答案1
这是我正在使用的一种解决方法。但如果有人有更优雅的解决方案,请分享。
设置您节点的访问密钥。将其添加到您的配方中。它将简单地登录到 ECR。
cmd =“aws ecr get-login --region us-east-1”
值=#{cmd}
列表=值.split(“”)
docker_registry'AWS ECR 注册表' do
serveraddress 'https://xyz.ecr.us-east-1.amazonaws.com'
用户名'AWS'
密码“#{list[5]}”
电子邮件'无'
结束
答案2
您可以结合使用我们的shell_out
助手和惰性求值。
docker_registry 'https://index.docker.io/v1/' do
username 'AWS'
password lazy {
shell_out!("aws ecr get-login --region us-east-1").stdout.split[5]
}
email '[email protected]'
end