前提・実現したいこと
ansibleのloopのdebug表示について
■下記のdebugのように表示させる出力を絞って表示させる術などあればご教授いただけると幸いです。。。
狙い:
下記のtaskでは変数の「IPlist」の中身の分だけloopして
その結果をdebugで表示内容を絞って表示することが狙いでした。
発生している問題・エラーメッセージ
The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'cmd'
該当のソースコード
--IPlist--(変数の中身) 11.22.33.44 55.66.77.88 ---------- cat 11.22.33.44.txt IPアドレス: 11.22.33.44 cat 55.66.77.88.txt IPアドレス: 55.66.77.88 下記がtasks --------------------------------------------------- - name: Execution ----{{ item }}---- command: "cat {{ item }}.txt" changed_when: false register: result1 loop: "{{ IPlist }}" - name: debug result debug: msg: - "実行結果" - "実行コマンド: {{ result1.cmd }}" - "実行時間: {{ result1.start }}" - "実行結果:" - "{{ result1.stdout }}" when: result1 is succeeded ---------------------------------------------------
試したこと
- debug: msg={{ result1 }}で確認すると表示はされるオブジェクトもある。。。
別の方法としてフィルターを用いましたが
debug:
msg: |
{% for r in result1.results %}
{{ r.stdout_lines | to_nice_json }}
{% endfor %}
when: result1 is succeeded
動きはしますが日本語部分が文字化けして困りました。。。
---表示例----
"IP\u30a2\u30c9\u30ec\u30b9 : 13.231.87.234",
またansiblejp内でloopで検索したところ「loop_control」で出力を制御できるということで
試みましたがいまいち使い方が分からなかったです。。。
(参考:https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#limiting-loop-output-with-label)
- debug: var=result1←これじゃない感
loop: "{{ result1 }}"
loop_control:
label: "{{ item.cmd }}"
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。