我在Rundeck工作,要求用户将数据库密码传递给ansible。而ansible将把它作为一个额外的变量。
ansible-playbook test.yml -e "password=123"
但是,我们希望在运行时保存密码,但是来自ansible的best practice。他们需要将密码存储在文件中。并使用ansible-vault create保存整个文件。
由于我们有大量的密码要传入,我注意到有一个函数调用encrypt_string。我尝试在剧本中调用它并尝试动态生成保险库密码,但我收到以下错误:
“错误!只有一个--vault-id可用于加密。这包括来自配置和cli的密码。”
这是我的playbook 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 ... ...
如果您希望在playbook中保留此选项,则可能需要找到ansible从中读取的位置。 Ansible可能正在从它的默认配置文件中读取它,通常可以在~/.ansible.cfg
[查找vault_password_file
]或alias
或其他地方找到它。
您可以通过示例在ansible vault documentation找到更多详细信息。