[英]Run ansible-vault encrypt_string in ansible playbook
我在Rundeck有一份工作,要求用户将数据库密码传递给ansible。 并且ansible将其作为一个额外的变量。
ansible-playbook test.yml -e "password=123"
但是,我们希望在运行时对密码进行存储,但要遵循 ansible的最佳做法 。 他们将要求密码存储在文件中。 并使用ansible-vault创建存储整个文件。
由于我们要传递大量密码,因此我注意到有一个函数调用crypto_string。 我尝试在剧本中调用它,并尝试动态生成保险库密码,但是下面出现错误:
“错误!只能使用一个--vault-id进行加密。这包括来自配置和cli的密码。”
这是我的剧本test.yml :
---
- name: test
hosts: localhost
tasks:
- name: vault var
command: ansible-vault encrypt_string "{{ password }}" --vault-password-file ~/.vault_pass.txt
register: var
- name: variable
set_fact:
mypass: var
- name: test encrypt_string
debug:
msg: "{{ mypass }}"
我不确定这是否是正确的做法/最佳做法,任何人都可以有所启发将不胜感激。
谢谢,
您可以通过删除选项--vault-password-file
来更新任务,因为ansible似乎通过某种方式从您的环境中获取/读取了它。
... ... - name: test hosts: localhost tasks: - name: vault var command: ansible-vault encrypt_string "{{ password }}" register: var ... ...
如果您希望将此选项保留在剧本中,则可能需要查找ansible从何处读取它。 Ansible可能正在从其默认配置文件中读取它,该文件通常位于~/.ansible.cfg
[查找vault_password_file
]或alias
或其他位置。
您可以在Ansible Vault文档中找到带有示例的更多详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.