Как запускать командные задачи AWS CLI в Ansible Tower

Командные задачи AWS CLI в плейбуках Ansible отлично работают в командной строке, если учетные данные AWS указаны как переменные среды в соответствии с требованиями Boto. Дополнительную информацию можно найти здесь Environment Переменные. Но они не запускаются в Tower, потому что он экспортирует другой набор env. вары:

AWS_ACCESS_KEY
AWS_SECRET_KEY

Чтобы они работали в Башне, просто добавьте в определение задачи следующее:

environment:
  AWS_ACCESS_KEY_ID: "{{ lookup('env','AWS_ACCESS_KEY') }}"
  AWS_SECRET_ACCESS_KEY: "{{ lookup('env','AWS_SECRET_KEY') }}"

например эта задача:

- name: Describe instances
  command: aws ec2 describe-instances --region us-east-1

преобразуется в:

- name: Describe instances
  command: aws ec2 describe-instances --region us-east-1
  environment:
    AWS_ACCESS_KEY_ID: "{{ lookup('env','AWS_ACCESS_KEY') }}"
    AWS_SECRET_ACCESS_KEY: "{{ lookup('env','AWS_SECRET_KEY') }}"

ПРИМЕЧАНИЕ. Это вводит только env.var. под конкретную задачу - не весь playbook! Таким образом, вам нужно изменить таким образом каждую задачу AWS CLI.


person Costas    schedule 11.11.2015    source источник
comment
использование ролей IAM упрощает аутентификацию, и встроенные модули (и get_facts) могут быть очень полезны.   -  person tedder42    schedule 12.11.2015
comment
Роли IAM могут помочь только тогда, когда Ansible запущен на инстансах EC2 в облаке. Вышеупомянутый обходной путь полезен, когда Tower работает вне облака AWS.   -  person Costas    schedule 13.11.2015
comment
Лучше всего использовать роль IAM, но если по какой-то причине это невозможно, этот пост объясняет, как установить vars, чтобы сделать его менее СУХИМ. Я не имею никакого отношения к рассматриваемому блогу, но мне это помогло.   -  person mrlabbe    schedule 04.11.2016


Ответы (2)


Поместите переменную среды в файл:

export AWS_ACCESS_KEY=
export AWS_SECRET_KEY=

сохраните файл в ~ / .vars на удаленном хосте, а затем в playbook.

- name: Describe instances
  command: source ~/.vars && aws ec2 describe-instances --region us-east-2

для безопасности вы можете удалить файл после запуска и снова скопировать в следующем воспроизведении.

person Raul Hugo    schedule 30.03.2016

Хотя это может быть неприменимо к башне, мы используем версию с открытым исходным кодом. Настройте файлы .aws и / или .boto.

person shdobxr    schedule 09.01.2017