Ansible - инвентаризация динамического aws: чтение переменной хранилища для ключа ec2.py и секрета

Я знаю для ec2.py Я могу либо указать переменные среды через export перед звонком ec2.py или использовать boto файл конфигурации с текстовыми паролями (или набором ключей Python).

Так как в любом случае у меня есть ключ и секрет aws в ansible vault, есть ли способ автоматически экспортировать его из хранилища или любым другим способом передать значение в ec2.py вместо того, чтобы указать это снова?

2 ответа

Ну, вы могли бы написать простую задачу, чтобы сбросить ключи из vault в boto3 конфигурации.

---
- name: Ensure AWS credentials configuration is present.
  template:
    src: credentials.j2
    dest: "/home/{{ ansible_user }}/.aws/credentials"

credentials.j2

[default]
aws_access_key_id = {{ aws_access_key_id }}
aws_secret_access_key = {{ aws_secret_access_key }}

куда aws_access_key_id а также aws_secret_access_key может храниться в хранилище.

Задача должна быть выполнена на управляющем хосте Ansible (хост, который выполняет ansible-playbook).

Затем ключи будут незашифрованы на управляющем хосте Ansible. ИМХО (я могу ошибаться здесь), вам нужно предоставить простые ключи AWS для boto либо через переменные окружения (export команда) или через конфигурацию boto.

Ansible делает вызовы API для AWS через boto. Бото не является частью Ansible. Так что нет никакого собственного способа использовать параметры, определенные в Ansible в boto. Эта функциональность должна быть частью Бото.

Как вы упомянули, вы запускаете Ansible на экземпляре EC2, вы на самом деле не должны использовать учетные данные, а роли, привязанные к экземпляру EC2: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

Идея состоит в том, что ваш экземпляр сам может получать временные учетные данные и выполнять необходимые команды, определенные в этой роли. Поскольку вы нигде не храните учетные данные, это самый безопасный способ работы с API AWS из экземпляра EC2. Поскольку Ansible полагается на boto, это будет работать из коробки - вам просто нужно создать роль, которая имеет все необходимые разрешения IAM, и прикрепить ее к вашему экземпляру, на котором вы запускаете Ansible. После этого ваш динамический инвентарь будет работать без дополнительных учетных данных.

Другие вопросы по тегам