在ansible剧本中运行ansible vault encrypt_字符串
我在中有一份工作,要求用户将数据库密码传递给ansible。ansible将把它作为一个额外变量在ansible剧本中运行ansible vault encrypt_字符串,ansible,ansible-2.x,rundeck,Ansible,Ansible 2.x,Rundeck,我在中有一份工作,要求用户将数据库密码传递给ansible。ansible将把它作为一个额外变量 ansible-playbook test.yml -e "password=123" 但是,我们希望在运行时保管密码,但要从ansible的。他们需要将密码存储在一个文件中。 并使用ansible vault create对整个文件进行vault 因为我们要传递大量密码,我注意到有一个函数调用encrypt_string。我尝试在剧本中调用它,并尝试动态生成vault密码,但我发现以下错误:
ansible-playbook test.yml -e "password=123"
但是,我们希望在运行时保管密码,但要从ansible的。他们需要将密码存储在一个文件中。
并使用ansible vault create对整个文件进行vault
因为我们要传递大量密码,我注意到有一个函数调用encrypt_string。我尝试在剧本中调用它,并尝试动态生成vault密码,但我发现以下错误:
“错误!只有一个--vault id可用于加密。这包括
来自配置和cli的密码。“
这是我的测试手册。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密码文件
更新任务,因为ansible似乎以某种方式从您的环境中获取/读取它
...
...
- name: test
hosts: localhost
tasks:
- name: vault var
command: ansible-vault encrypt_string "{{ password }}"
register: var
...
...
...
...
-名称:测试
主机:本地主机
任务:
-名称:vault var
命令:ansible vault encrypt_字符串“{{password}”
寄存器:var
...
...
如果您希望在剧本中保留此选项,您可能需要找到ansible的阅读来源。Ansible可能正在从它的默认配置文件中读取它,通常可以在~/.Ansible.cfg
[查找vault\u密码\u文件
]或alias
或其他地方找到
您可以通过示例在中找到更多详细信息