如果使用调试模式执行playbooks,Ansible保险库会显示解密值

时间:2018-02-14 15:57:37

标签: ansible ansible-inventory ansible-facts ansible-vault

我使用ansible保险库来加密密码,但是当我使用调试模式时,它将密码显示为纯文本。请考虑以下代码

生成ansible-vault加密密码

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

test.yml

[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

库存/主机

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

模板/ test.j2

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

Playbook执行

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
}

输出

unreachable

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

2 个答案:

答案 0 :(得分:2)

AFIK ansible vault encript密码,虽然如果你使用详细选项可以看到...为此你必须添加到你的剧本选项:

no_log: true

按照他们的说法看看这个date of birth

我不相信Ansible会跟踪来自保险库的内容。为了保护您可以使用的数据 no_log: true

答案 1 :(得分:0)

要保护数据,您可以使用no_log: true