如何在 Ansible 剧本中公开密码/机密

如何在 Ansible 剧本中公开密码/机密

我有一个简单的 Ansible 剧本

  1. 从 RestAPI 获取数据库连接配置,
  2. 从有效载荷中提取配置对象,
  3. 使用配置 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 文档

机密应显示在详细输出中。只需添加-vvvansible-playbook命令中即可。

相关内容