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

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

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

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

Q&A

解決済

2回答

553閲覧

Ansible ロールによる変数の設定 / gourp_vars配下にサーバグループ毎の変数用のファイルを置いても変数が反映されない

khaii21

総合スコア65

Ansible

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

0グッド

0クリップ

投稿2023/04/25 10:05

編集2023/04/25 11:34

実現したいこと

VIPアドレスを共通のvip_ipaddressという変数で管理をして
1stグループのサーバに対しては111.111.111.111、
2ndグループのサーバに対しては222.222.222.222、
3rdグループのサーバに対しては333.333.333.333のアドレスを設定したいです。

gourp_vars 配下にサーバグループ名と同じ名前のファイルを置けば
自動的に変数がサーバグループに紐付けされる認識です。

何かお気づきの方がいらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。

前提

下記のようなファイル構成でAnsibleを管理しています。

inventory    ├── hosts playbook    ├── playbook.yml    └── roles    └── hoge    ├── defaults      │   └── main.yml |── gourp_vars | ├── 1st.yml | ├── 2nd.yml | ├── 3rd.yml    ├── tasks    │   ├── main.yml    │   ├── vip_set.yml    └── vars    └── main.yml

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

Ansibleを実行すると変数(vip_ipaddress)が未定義でエラーとなります。
gourp_vars配下の変数用のファイルが反映されていない様子です。

fatal: [dev01]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'vip_ipaddress' is undefined. 'vip_ipaddress' is undefined\n\nThe error appears to be in '/home/user/playbook/roles/hoge/tasks/vip_set.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: make /hoge/vip.conf\n ^ here\n"}

該当のソースコード

hostsは下記のような3種類のグループに分けています。

hosts

1[1st] 2dev01 ansible_ssh_host=www.tokyo.co.jp 3 4[2nd] 5dev02 ansible_ssh_host=www.osaka.co.jp 6 7[3rd] 8dev03 ansible_ssh_host=www.kobe.co.jp

playbook.yml

1--- 2- hosts: 1st 3 gather_facts: no 4 roles: 5 - hoge

main.yml

1--- 2 - include_tasks: vip_set.yml

vip_set.yml

1--- 2- name: make vip.conf 3 lineinfile: 4 dest: /etc/vip.conf 5 line: "{{ vip_ipaddress }}"

gourp_vars配下のファイル

1st.yml

1--- 2 vip_ipaddress: "111.111.111.111"

2nd.yml

1--- 2 vip_ipaddress: "222.222.222.222"

3rd.yml

1--- 2 vip_ipaddress: "333.333.333.333"

試したこと

gourp_vars配下のファイルから .yml を取り、1st、2nd、3rdにしましたが
同エラーは解消しませんでした。

気づいたこと

playbook.ymlにはhostsとして1stを設定していますが、エラー内容を見ますとdev01になっていました。

エラーメッセージの抜萃

fatal: [dev01]: FAILED! => {"msg": "The task includes an option with an undefined variable.

そこでhostsを以下のように修正して実行しました。

[1st] www.tokyo.co.jp [2nd] www.osaka.co.jp [3rd] www.kobe.co.jp

しかし、同エラーとなりました。

fatal: [www.tokyo.co.jp]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'vip_ipaddress' is undefined. 'vip_ipaddress' is undefined\n\nThe error appears to be in ‘/home/user/playbook/roles/hoge/tasks/vip_set.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: make /etc/vip.conf\n ^ here\n"}

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

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

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

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

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

guest

回答2

0

以下の配置でお試しください。

. ├── inventory │ ├── group_vars │ │ ├── 1st.yml │ │ ├── 2nd.yml │ │ └── 3rd.yml

投稿2023/04/25 11:11

yabusakadeny

総合スコア157

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

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

khaii21

2023/04/25 11:36

ご確認ありがとうございます。 ご教授頂いた方法で実行したのですが同エラーとなりました。 試しにhostsを下記のように修正したのですが同じでした。 もし何か他にお気づきのことが御座いましたらご教授頂けますと幸いです。
khaii21

2023/04/25 11:45

大変申し訳ございません。 group_varsのディレクトリ名が誤っており、ご指示頂いた通り実行して反映出来ました。 ありがとうございました。
guest

0

ベストアンサー

roles の下には group_vars は置けないと思います。
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable

group_vars ディレクトリを inventoriy ディレクトリの下に移動すればいけるかと。

投稿2023/04/25 11:10

_raki

総合スコア82

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

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

khaii21

2023/04/25 11:38

ご確認ありがとうございます。 ご教授頂きましたとおり以下のように変更して実行したのですが同エラーとなりました。 何か他にお気づきのことが御座いましたらご教授頂けますと幸いです。 inventory/ ├── gourp_vars │   ├── 1st.yml │   ├── 2nd.yml │   └── 3rd.yml ├── hosts
khaii21

2023/04/25 11:46

大変申し訳ございません。 group_varsのディレクトリ名が誤っており、ご指示頂いた通り実行して反映出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問