Я пытаюсь использовать Ansible для загрузки некоторых файлов в различные экземпляры EC2. Проблема, с которой я сталкиваюсь, - это когда речь заходит о моих учетных данных AWS. Модули AWS Ansible работают отлично, включая модуль S3. Следующий (когда я заменяю свои учетные данные AWS) работает как шарм.Ansible и s3 module
- name: upload data import file
s3: aws_access_key=<accesskey> aws_secret_key=<secretkey> bucket=my-bucket object=/data.zip mode=get
Однако мне нужно анзибль playbooks и роли, которую я пишу, чтобы использоваться кем-либо, и я не хочу иметь учетные данные AWS жёстко прописанные. В других местах я использую модули Ansible AWS, я удалил aws_access_key и aws_secret_key, и он отлично работает, поскольку Ansible ищет эти значения в переменных среды. Однако, с каждым другим использованием, я запускаю их как локальные действия. Таким образом, он вытаскивает учетные данные с моей локальной машины, чего я хочу. Проблема заключается в том, когда я бегу модуль S3 на одном из моих случаев, если исключить из учетных параметров, я получаю:
failed: [54.173.19.238] => {"failed": true}
msg: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials
Я полагаю, что это потому, что, так как я не указаны учетные данные, это ищет их в переменных среды на моем экземпляре, где они не установлены. Я также не хочу устанавливать их в переменных среды на экземпляре.
Есть ли способ загрузить файл с S3 с возможностью доступа и не указывать свои учетные данные AWS?
Роли IAM отличные.Кроме того, если создатель пытается сделать это из экземпляра, отличного от EC2, он использует формат учетных данных boto, и вы можете изменять профили с помощью 'AWS_DEFAULT_PROFILE =" profilename "'. – tedder42
Проблема с подходом к профилю boto заключается в том, что у OP есть учетные данные на хосте Ansible, но не на хосте, на котором работает модуль S3, и он не хочет, чтобы ключи были жестко закодированы в любом месте. Чтобы временно использовать профиль boto, ему нужно будет выписать временный профиль boto с соответствующими учетными данными на целевом хосте, вызвать модуль S3, а затем удалить профиль. Это большая работа. –
Это работало отлично для меня. Я изменил сценарии Ansible, которые я использую для создания своих экземпляров EC2, исключил все упоминания учетных данных в другом месте и voila. Благодаря! –