質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

458閲覧

Ansible registerで取得した list型の情報に対してkeyを指定して値を取得したい

khaii21

総合スコア66

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2023/05/26 05:55

編集2023/05/26 08:03

実現したいこと

Unixコマンドを実行して、実行結果からAAAAAをgrepした結果をcheck_imageという変数でlist型の情報として取得しています。
ここからkeyである AAAAA.BBBBB-CCCCC を指定して値である hoge.co.jp:8080/hoge/image:yyyymmdd-mmssss だけを取得したいです。
AAAAA.BBBBB-CCCCC の文字列にはドット(.)とハイフン(-)が含まれています。
list型の操作方法を調べているのですが、VARIABLE IS NOT DEFINEDや構文エラーとなってしまい値が取得出来ません。
やり方をご存じの方がいらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。

発生している問題・エラーメッセージ

"check_image.AAAAA.BBBBB-CCCCC": "VARIABLE IS NOT DEFINED!"

または

fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'jp'. 'dict object' has no attribute 'jp'\n\nThe error appears to be in '/check_image.yml': line ?, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n# changed_when: true\n- name: Echo\n ^ here\n"}

該当のソースコード

check_image.yml

1- name: Check image 2 ansible.builtin.shell: hoge command | grep AAAAA 3 register: check_image 4- name: Echo 5 ansible.builtin.debug: 6 var: check_image.stdout_lines.AAAAA.BBBBB-CCCCC

check_image.stdout_linesの中身

1ok: [localhost] => { 2 "check_image.stdout_lines": [ 3 " \"AAAAA.BBBBB-CCCCC\": \"hoge.co.jp:8080/hoge/image:yyyymmdd-mmssss\"," 4 ] 5}

試したこと

申し訳ございません。
こちらlist配列0番目に情報が収まっており、個別に内容を取り出せないことが分かりました。
変数の型を確認

msg: "{{ check_image.stdout_lines | type_debug }}" "msg": "list"
msg: "{{ check_image.stdout_lines[0] }}"

上記の結果

"msg": " \"AAAAA.BBBBB-CCCCC\": \"hoge.co.jp:8080/hoge/image:yyyymmdd-mmssss\"," }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

申し訳ございません。
こちらlist配列0番目に情報が収まっており、個別に内容を取り出せないことが分かりました。

投稿2023/05/26 08:04

khaii21

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yabusakadeny

2023/05/26 11:25

事後になってしまいましたが、`stdout_lines` の中身から推察するに、 おそらくは `ansible.builtin.shell` モジュールのタスクでは `grep` せずに実行して、 `check_image` 変数にはまるごと格納した後、 Ansible 側で json として抽出するとうまくいったかもしれません。
khaii21

2023/05/29 04:44

ご確認ありがとうございます。 こちら参考にさせて頂きます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問