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

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

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

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

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

Q&A

解決済

1回答

117閲覧

Ansible dict型変数のキーを変数で操作したい

khaii21

総合スコア67

Ansible

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

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

0グッド

0クリップ

投稿2025/03/01 10:35

編集2025/03/02 12:41

実現したいこと

現在、dict型変数(major_cities)のキー(japan)に Tokyo と Osaka の2つの値を登録しています。
下記のようにキーを直接設定した場合、想定通りに Tokyo と Osaka の値が操作できます。

loop: "{{ major_cities['japan'] }}"

実行結果

ok: [localhost] => (item=Tokyo) => { "msg": "Tokyo" } ok: [localhost] => (item=Osaka) => { "msg": "Osaka" }

発生している問題・分からないこと

しかし、下記のようにキーを変数(various_cities)として値に(japan)を設定しても、変数(various_cities)をキーとして認識されずエラーになります。

loop: "{{ major_cities['{{ various_cities }}'] }}"

dict型のキーに変数を使用する書き方をご存知の方がいらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。

上記の詳細・結果

エラー内容

fatal: [localhost]: FAILED! => {"msg": "'dict object' has no attribute ' {{ various_cities }} '. 'dict object' has no attribute ' {{ various_cities }} '"}

該当のソースコード

vars/main.yml

1major_cities: 2 japan: 3 - "Tokyo" 4 - "Osaka"

tasks/show_cities.yml

1- name: Show Cities 2 ansible.builtin.debug: 3 msg: "{{ item }}" 4 loop: "{{ major_cities['{{ various_cities }}'] }}"

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他

loopに設定している変数の箇所を下記のように変更

loop: "{{ major_cities['{ various_cities }'] }}"

エラー内容

fatal: [localhost]: FAILED! => {"msg": "'dict object' has no attribute ' { various_cities } '. 'dict object' has no attribute ' { various_cities } '"}

補足

特になし

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

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

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

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

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

guest

回答1

0

ベストアンサー

’{{’ と ’}}’ は 入れ子にできない。変数はクオートを使用しない。Pythonのdictみたい。

- name: Show Cities ansible.builtin.debug: msg: "{{ item }}" loop: "{{ major_cities[various_cities] }}"

ごめん、日本語は、まだ 初心者です。

投稿2025/03/04 00:57

blobert

総合スコア7

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

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

khaii21

2025/03/04 04:51

ご教授頂いた方法で解決致しました。 大変助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問