我在Rundeck有一份工作,要求用户将数据库密码传递给ansible。而ansible将把它作为一个额外的变量。
ansible-playbook test.yml -e "password=123"
但是,我们希望在运行时保存密码,但是来自ansible的best practice。他们需要将密码存储在文件中。 并使用ansible-vault create保存整个文件。
由于我们有大量密码要传入,我注意到有一个函数调用encrypt_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 }}"
我不确定这是否是正确的做法/最佳做法,任何人都可以获得一些亮点。非常感谢。
谢谢,
答案 0 :(得分:0)
您可以通过删除选项--vault-password-file
来更新您的任务,因为ansible似乎在某种程度上从您的环境中获取/读取它。
... ... - name: test hosts: localhost tasks: - name: vault var command: ansible-vault encrypt_string "{{ password }}" register: var ... ...
如果您希望在playbook中保留此选项,则可能需要找到ansible从哪里读取它。 Ansible可能正在从它的默认配置文件中读取它,通常位于~/.ansible.cfg
[查找vault_password_file
]或alias
或其他地方。
您可以通过示例在ansible vault documentation找到更多详细信息。