【发布时间】:2019-09-13 14:30:40
【问题描述】:
使用我在 AWS Secrets Manager 中创建的 Other type of secrets 使用 Terraform 代码。
我需要在 Ansible 代码中使用这些 AWS 机密。我在下面的链接中找到了这个,但我无法继续。
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 合并到我的 ansible 代码中?
错误信息:-
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 输出
【问题讨论】:
-
我会删除底部的快速问题,这会使问题本身过于宽泛
-
@HermanTheGermanHesse 完成
-
您能否编辑您的问题并详细说明“我无法继续”(您尝试了什么,结果/错误消息/日志等......)?使用 aws_secret 查找似乎正是您所需要的。同时,请注意这个模块似乎只在 ansible 2.8 中可用(你在使用这个版本吗?)
-
@Zeitounator 我仍然没有为此编写任何代码。因为 Ansible 2.8 的发布日期是 2019 年 5 月 16 日。我没有任何步骤可以将
ansible 2.7.10升级到2.8 -
您不能使用尚未包含在您的 ansible 安装中的模块。如需提前测试,请查看how to install a branch/tag from git with pip。您可以使用
stable-2.8分支或现有标签之一(2.8.0a1或2.8.0b1)。 The release is scheduled of may 16th.
标签: ansible ansible-2.x aws-secrets-manager