シンプルなAnsibleプレイブックを用意しました
- RestAPIからデータベース接続構成を取得します。
- ペイロードから設定オブジェクトを抽出し、
- 構成 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
。