実現したいこと
registerで取得した変数に対して、selectattrまたはselectでinstalledの文字列を検索。
もし見つかった場合、下記を確認したい
- installedが何行目にあったのか
- 任意でregisterの変数の◯◯行目の値を取得したい
こちら実現が可能なのかどうかもきちんと理解しておらず申し訳ございません。
スクリプトを作成するのではなくてplaybook内で実現させたいです。
現状思いつくやり方ですが、chk_hogeの結果を一旦ファイルに保存してから
shellモジュールを使ってUnixコマンドで結果を表示するやり方になるのですが
ファイルに保存などしないで、もっとシンプルにplaybookで出来るやり方をご存知でしたら
ご教授頂けないでしょうか。
宜しくお願い致します。
該当のソースコード
playbook
1- name: Check rpm hoge 2 ansible.builtin.yum: 3 list: hoge 4 register: chk_hoge 5 6- name: Search installed 7 ansible.builtin.debug: 8 var: "installedは◯◯行目です" 9 when: chk_hoge.results | selectattr("yumstate", "match", "installed") | list | length == 1 10or 11 when: chk_hoge.results | select("regex", "installed") | list | length == 1
下記JSON形式に見えますが、一部表記がマッチしていない出力があるためstring形式となります。
そのため、chk_hoge.results.yumstateとしても値にinstalledが取得できない状態です。
chk_hoge.resultsの内容抜粋
1 ・ 2 ・ 3 中略 4 { 5 "arch": "x86_64", 6 "envra": "1:hoge-12.0.6-1.el7.x86_64", 7 "epoch": "1", 8 "name": "hoge", 9 "release": "1.el7", 10 "repo": "hoge-stable", 11 "version": "23.0.6", 12 "yumstate": "available" 13 }, 14 { 15 "arch": "x86_64", 16 "envra": "1:hoge-12.0.6-1.el7.x86_64", 17 "epoch": "1", 18 "name": "hoge", 19 "release": "1.el7", 20 "repo": "installed", 21 "version": "23.0.6", 22 "yumstate": "installed" 23 }, 24 { 25 "arch": "x86_64", 26 "envra": "1:hoge-13.0.0-1.el7.x86_64", 27 "epoch": "1", 28 "name": "hoge", 29 "release": "1.el7", 30 "repo": "hoge-stable", 31 "version": "24.0.0", 32 "yumstate": "available" 33 } 34 ・ 35 ・ 36 中略
試したこと
下記のように shellモジュールにてコマンドを実行することで実現可能になりそうであるが、
この場合registerの結果を一旦ファイルに保存する必要があるため、もっとシンプルなやり方で実現させたいです。
- name: Keyword search ansible.builtin.shell: wc -l {{ 保存したファイル }} ; grep -rn keyword {{ 保存したファイル }} register: grep_result - name: Result command ansible.builtin.debug: var: grep_result
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/18 05:17 編集
2023/05/18 07:05
2023/05/18 08:27 編集
2023/05/18 09:07
2023/05/18 11:02
2023/05/18 13:30