Поваренная книга для докеров "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 'publicme@computers.biz'
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"
но поварская поваренная книга не предоставляет такой возможности. Есть идеи, как это сделать в шеф-поваре?
Вы можете использовать комбинацию наших 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 'publicme@computers.biz'
end
Вот обходной путь, который я использую. Но если у кого-то есть более элегантное решение, поделитесь.
Настройте ключи доступа к вашему узлу. Добавьте это в свой рецепт. Он просто войдет в ECR.
cmd = "aws ecr get-login --region us-east-1"
значение = # {cmd}
list = value.split ("")
docker_registry 'AWS ECR registry' сделать
адрес сервера 'https://xyz.ecr.us-east-1.amazonaws.com'
имя пользователя "AWS"
пароль "# {список [5]}"
электронная почта 'none'
конец