我使用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
有什么方法可以避免这种情况吗?
答案 0 :(得分:2)
AFIK ansible vault encript密码,虽然如果你使用详细选项可以看到...为此你必须添加到你的剧本选项:
no_log: true
按照他们的说法看看这个date of birth:
我不相信Ansible会跟踪来自保险库的内容。为了保护您可以使用的数据 no_log: true
答案 1 :(得分:0)
要保护数据,您可以使用no_log: true