Ansible プレイブックでパスワード/シークレットを公開する方法

Ansible プレイブックでパスワード/シークレットを公開する方法

シンプルなAnsibleプレイブックを用意しました

  1. RestAPIからデータベース接続構成を取得します。
  2. ペイロードから設定オブジェクトを抽出し、
  3. 構成 JSON (リクエスト本文として) を使用して、別の RestAPI への PUT リクエストを作成します。

3番目の段階で、データベースのユーザー名とパスワードの組み合わせが間違っていることがわかりました。その後、出力を印刷すると、パスワードが「値がログパラメータに指定されていません「」。

グーグルで調べたところ、これは 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

関連情報