如果在调试模式下执行剧本,Ansible vault将显示解密的值

如果在调试模式下执行剧本,Ansible vault将显示解密的值,ansible,ansible-inventory,ansible-facts,ansible-vault,Ansible,Ansible Inventory,Ansible Facts,Ansible Vault,我使用ansible vault加密密码,但当我使用调试模式时,它将密码显示为纯文本。考虑下面的代码 生成加密密码 ansible-vault encrypt_string 'abc123' --name ansible_ssh_pass > inventory/group_vars/all.yml test.yml - name: Vault test hosts: group_1 tasks: - name: Read Json set_fact:

我使用ansible vault加密密码,但当我使用调试模式时,它将密码显示为纯文本。考虑下面的代码

生成加密密码

ansible-vault encrypt_string 'abc123' --name ansible_ssh_pass > inventory/group_vars/all.yml
test.yml

- name: Vault test
  hosts: group_1
  tasks:
    - name: Read Json
      set_fact:
         version_file: "{{ lookup('template','template/test.j2') | to_json }}"
      run_once: true
目录/主机

[group_1]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
模板/test.j2

{ "host" : "xxx.xxx.com",
  "username" : "root",
  "password" : "{{ hostvars[groups['group_1'][0]]['ansible_ssh_pass'] }}"  }
剧本执行

ansible-playbook -i inventory/hosts test.yml --ask-vault-pass -vvv
输出

TASK [Read Json] ******************************************************************************************************************************************
task path: /test/test.yml:5
ok: [xxx.xxx.com] => {
    "ansible_facts": {
        "version_file": "\"{ \\\"host\\\" : \\\"xxx.xxx.com\\\",\\n  \\\"username\\\" : \\\"root\\\",\\n  \\\"password\\\" : \\\"abc123\\n\\\"  }\\n\""
    },
    "changed": false,
    "failed": false
}

有什么方法可以避免这种情况吗?

AFIK-ansible-vault-enccript密码,但如果使用详细的选项,它可能是可见的。。。为此,您必须在剧本中添加以下选项:

no_log: true
看看他们说的:


我不相信Ansible知道从保险库出来的东西。为了保护数据,您可以使用
no\u log:true

保护数据,您可以使用
no\u log:true

注释应为非注释框,一旦您有足够的声誉,您就可以这样做。