在ansible剧本中运行ansible vault encrypt_字符串

在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。ansible将把它作为一个额外变量

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
或其他地方找到

您可以通过示例在中找到更多详细信息