Поиск секретов от менеджера секретов AWS |анзибль - PullRequest
0 голосов
/ 24 апреля 2019

Используя код Terraform, я создал Other type of secrets в AWS Secrets Manager.Мне нужно использовать эти секреты AWS в коде Ansible.Я нашел эту ссылку ниже, но я не могу продолжить ее.

https://docs.ansible.com/ansible/2.8/plugins/lookup/aws_secret.html

У меня есть ниже Ansible код: -

database.yml

- name: Airflow | DB | Create MySQL DB
  mysql_db:
    login_user: "{{ mysql_user }}"
#    login_password: "{{ mysql_root_password }}"
    login_password: "{{ lookup('ca_dev', 'mysql_root_password') }}"
#    config_file: /etc/my.cnf
#    login_unix_socket: /var/lib/mysql/mysql.sock
#    encrypted: yes
    name: "airflow"
    state: "present"

Как включить AWS secret Manager в свой код ANSI?

enter image description here

Сообщение об ошибке: -

TASK [../../roles/airflow : Airflow | DB | Create MySQL DB] **************************************************************************************************************************************************************************
task path: /home/ec2-user/cng-ansible/roles/airflow/tasks/database.yml:25
The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 140, in run
    res = self._execute()
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 539, in _execute
    self._task.post_validate(templar=templar)
  File "/usr/lib/python2.7/site-packages/ansible/playbook/task.py", line 267, in post_validate
    super(Task, self).post_validate(templar)
  File "/usr/lib/python2.7/site-packages/ansible/playbook/base.py", line 364, in post_validate
    value = templar.template(getattr(self, name))
  File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 540, in template
    disable_lookups=disable_lookups,
  File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 495, in template
    disable_lookups=disable_lookups,
  File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 746, in do_template
    res = j2_concat(rf)
  File "<template>", line 8, in root
  File "/usr/lib/python2.7/site-packages/jinja2/runtime.py", line 193, in call
    return __obj(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 631, in _lookup
    instance = self._lookup_loader.get(name.lower(), loader=self._loader, templar=self)
  File "/usr/lib/python2.7/site-packages/ansible/plugins/loader.py", line 381, in get
    obj = getattr(self._module_cache[path], self.class_name)
AttributeError: 'module' object has no attribute 'LookupModule'

fatal: [127.0.0.1]: FAILED! => {
    "msg": "Unexpected failure during module execution.", 
    "stdout": ""
}

RUNNING HANDLER [../../roles/airflow : restart rabbitmq-server] 
task path: /home/ec2-user/cng-ansible/roles/airflow/handlers/main.yml:28
    to retry, use: --limit @/home/ec2-user/cng-ansible/plays/airflow/installAirflow.retry

PLAY RECAP
127.0.0.1                  : ok=39   changed=7    unreachable=0    failed=1

ansible-doc -t lookup -l вывод

enter image description here

1 Ответ

1 голос
/ 25 апреля 2019

Ошибка {"msg": "lookup plugin (ca_dev) not found"} говорит о том, что ваша проблема заключается в неправильном использовании команды lookup.

Следующая строка:

login_password: "{{ lookup('ca_dev', 'mysql_root_password') }}"

Должно выглядеть примерно так:

login_password: "{{ lookup('aws_secret', 'mysql_root_password') }}"

ca_dev не является допустимым типом поиска, тогда как aws_secret является.

Список поддерживаемых подключаемых модулей поиска для Ansible 2.8 можно найти в разделе Lookup Plugins официальной документации.

Если вы используете пользовательский поисковый плагин или переносите плагин из будущей версии ansible в более старую версию, вы должны убедиться, что он находится в каталоге, видимом для ansible.

Вы можете либо поместить пользовательский файл в расположение по умолчанию для ansible looks в ~/.ansible/plugins/lookup:/usr/share/ansible/plugins/lookup, либо настроить свой ansible.cfg для поиска в другом месте, используя следующий ключ lookup_plugins ini в разделе по умолчанию.

DEFAULT_LOOKUP_PLUGIN_PATH
Description:    Colon separated paths in which Ansible will search for Lookup Plugins.
Type:   pathspec
Default:    ~/.ansible/plugins/lookup:/usr/share/ansible/plugins/lookup
Ini Section:    defaults
Ini Key:    lookup_plugins
Environment:    ANSIBLE_LOOKUP_PLUGINS

Документацию по этому вопросу можно найти в разделе Ansible Configuration официальной документации

...