1

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

生成 ansible-vault 加密密码

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

测试.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
}

有没有办法避免这种情况?

4

2 回答 2

3

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

no_log: true

正如他们所说,看看这个链接:

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

于 2018-02-14T16:39:56.917 回答
0

为了保护您可以使用的数据no_log: true

于 2018-02-14T16:41:48.167 回答