我有一个简单的 Ansible 剧本
- 从 RestAPI 获取数据库连接配置,
- 从有效载荷中提取配置对象,
- 使用配置 JSON(作为请求正文)创建对另一个 RestAPI 的 PUT 请求。
在第三阶段,我发现数据库用户名和密码组合错误。后来,当我打印输出时,我发现密码已被替换为名为“未指定日志参数值“。
经过一番谷歌搜索,我发现这是 Ansible 的一项安全功能。不幸的是,我还没有找到任何配置或类似的东西来禁用此功能。是否可以禁用此功能?或者还有其他解决方法吗?
---
- name: my-playbook
gather_facts: no
hosts: all
vars_files:
- secret
tasks:
- name: Fetch the config payload from the API
uri:
url: "{{get_config}}"
method: GET
user: "{{username}}"
password: "{{password}}"
validate_certs: no
return_content: yes
status_code: 200
body_format: json
register: config
- name: Extract the config object
set_fact:
config_raw: "{{ config.json | json_query(jmesquery) }}"
vars:
jmesquery: '{{name}}.config'
- name: print the config
debug:
msg: "{{config_raw}}"
- name: Creating object using config
uri:
url: "{{create_ocject}}"
method: PUT
user: "{{username}}"
password: "{{password}}"
validate_certs: no
body: "{{config_raw}}"
body_format: json
return_content: yes
status_code: 200
headers:
Content-Type: "application/json"
register: test_res
- name: output value
debug:
msg: "{{test_res.json}}"
答案1
您可以no_log: False
设置ansible.cfg
。
作为
但是,no_log 属性不会影响调试输出,因此请注意不要在生产环境中调试剧本。Ansible 文档
机密应显示在详细输出中。只需添加-vvv
到ansible-playbook
命令中即可。