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

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

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

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

Q&A

解決済

1回答

4015閲覧

Ansibleのテンプレートで変数名の一部に変数を使いたい

Youichi256

総合スコア204

Ansible

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

0グッド

0クリップ

投稿2018/03/16 09:20

やりたいこと

Ansibleのテンプレートで変数名の一部に変数を使いたいです。
ansible_eth0変数のeth0の部分を変数として処理したいです。

詳細

Ansibleで取得した情報もとに、ansible_interfacesansible_eth0などからテンプレートを使用してファイルを作ろうとしています。
ansible_interfaces配列にインタフェース一覧が入っていて、そのインタフェース名の変数を一部に使用したansible_eth0などがあります。
構造的は、以下のようになっています(説明用に抜粋)。

JSON

1{ 2 "ansible_eth0": { 3 "ipv4": { 4 "address": "192.168.0.1", 5 "netmask": "255.255.255.0" 6 } 7 }, 8 "ansible_interfaces": [ 9 "eth0" 10 ] 11}

構文エラーになりますが、テンプレートで以下のようなことがしたいです。

{% for interface in ansible_interfaces %} ipv4 ({{interface}}) : {{['ansible_'+interface]ipv4.address}} / {{['ansible_'+interface]ipv4.netmask}} {% endfor %}

一番基準となる変数名の一部に変数を使うことはできるのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そこの変数名の一部にはたぶん無理なので、変数hostvarsを使って取得しましょう。

{% for interface in ansible_interfaces %} ipv4 ({{interface}}) : {{ hostvars[inventory_hostname]['ansible_' + interface].ipv4.address }} / {{ hostvars[inventory_hostname]['ansible_' + interface].ipv4.netmask }} {% endfor %}

投稿2018/03/19 10:01

yunano

総合スコア841

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

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

Youichi256

2018/03/20 01:25

ありがとうございます!やりたかったことができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問