Q&A
実現したいこと
Ansibleにて以下処理を実装したい
① シェルを実行&実行結果をregister
② ①のregisterした結果を画面出力&failed_whenで実行結果判別
③ registerした結果内にある特定の文言を置きかえる&実行結果をregister
④ ③のregisterした結果を画面出力&failed_whenで実行結果判別
発生している問題・エラーメッセージ
エラーメッセージ
‘dict object’ has no attribute ‘stdout‘
該当のソースコード
yml
1- name: シェル処理実行 2 shell: ★ここに処理を記載★ 3 register: test_result 4 5- name: シェル処理実行:結果確認 6 debug: 7 msg: 8 - "{{ test_result.stdout}}" 9 failed_when: 文言 not in test_result.stdout 10 11- name: シェル処理実行後のフィルタ処理 12 debug: 13 msg: 14 - "{{ test_result | regex_replace("特定の文言","置き換え済")}}" 15 register: test_result_2 16 17- name: シェル処理実行後のフィルタ処理:結果確認 18 debug: 19 msg: 20 - "{{ test_result2.stdout}}" 21 failed_when: 文言 not in test_result2.stdout 22★ここでエラーが発生
試したこと
test_result2.stdoutから.stdoutを抜いたところエラーなく実行できました。
恐らく| regex_replaceでフィルタを掛けたことにより標準出力(.stdout)の参照が出来なくなっていると思われます。
.stdoutを付けないとfailed_whenが正しく動かないので、.stdoutを参照させる方法or無くてもfailed_whenを正常に動作させる方法をご教授伊頂きたいです。
補足情報(FW/ツールのバージョンなど)
Ansibleのバージョンは2.8.1です。
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/11/24 03:27
2022/11/24 10:30