在ansible playbook中运行ansible-vault encrypt_string

问题描述 投票:-1回答:1

我在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 }}"

我不确定这是否是正确的做法/最佳做法,任何人都可以放弃一些亮点将非常感激。

谢谢,

ansible ansible-2.x rundeck
1个回答
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找到更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.