docker 注册表的 chef 配方不适用于 AWS ECR

docker 注册表的 chef 配方不适用于 AWS ECR

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

相关内容