Ansible 플레이북에서 비밀번호/비밀을 노출하는 방법

Ansible 플레이북에서 비밀번호/비밀을 노출하는 방법

나는 간단한 Ansible 플레이북을 가지고 있습니다.

  1. RestAPI에서 데이터베이스 연결 구성을 가져옵니다.
  2. 페이로드에서 구성 객체를 추출합니다.
  3. 구성 JSON(요청 본문)을 사용하여 다른 RestAPI에 대한 PUT 요청을 생성합니다.

3단계에서 데이터베이스 사용자 이름과 비밀번호 조합이 잘못되었음을 발견했습니다. 나중에 출력 결과를 인쇄하는 동안 비밀번호가 "라는 문자열로 대체된 것을 발견했습니다.VALUE_SPECIFIED_IN_NO_LOG_PARAMETER".

인터넷 검색을 통해 이것이 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 속성은 디버깅 출력에 영향을 미치지 않으므로 프로덕션 환경에서 플레이북을 디버깅하지 않도록 주의하세요.앤서블 문서

비밀은 자세한 출력에 표시되어야 합니다. 명령 -vvv에 추가하면 됩니다 ansible-playbook.

관련 정보