Список параметров конфигурации boto3 заинтересует вас, в первую очередь, переменная окружения $AWS_SHARED_CREDENTIALS_FILE
.
Я ожидаю, что вы можете создать этот файл общих учетных данных, используя традиционный copy: content="[default]\naws_access_key_id=whatever\netc\netc\n"
и затем установите факт ansible_python_interpreter
равным env AWS_SHARED_CREDENTIALS_FILE=/path/to/that/credential-file /the/original/ansible_python_interpreter
, чтобы фактический вызов Python содержал эту переменную среды.Для модулей не-boto это просто обойдется вам в env
, а также python
, но, честно говоря, странная сериализация и десериализация модулей, которые делает ansible в любом случае, приведут к тому, что дополнительное двоичное время выполнения будет невидимым в схемевещи.
Возможно, вам придется переопределить $AWS_CONFIG_FILE
и $BOTO_CONFIG
таким же образом, даже указав их на /dev/null
, чтобы заставить boto не смотреть в ваш каталог $HOME/.aws
Итак, для ясности:
- name: create our boto config
copy:
content: |
[default]
aws_access_key_id={{ access_key_from_vault }}
aws_secret_access_key={{ secret_key_from_vault }}
dest: /somewhere/sekrit
mode: '0600'
no_log: yes
register: my_aws_config
- name: grab existing python interp
set_fact:
backup_a_py_i: '{{ ansible_python_interpreter | default(ansible_playbook_python) }}'
- name: patch in our env-vars
set_fact:
ansible_python_interpreter: >-
env AWS_SHARED_CREDENTIALS_FILE={{ my_aws_config.path }}
{{ backup_a_py_i }}
# and away you go!
- ec2_instance_facts:
# optionally put this in a "rescue:" or whatever you think is reasonable
- file: path={{ my_aws_config.path }} state=absent