🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ansible

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

Q&A

解決済

1回答

701閲覧

moleculeでテスト可能な状態でFQDNをtemplateで使いたい

yassan

総合スコア26

Ansible

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

0グッド

0クリップ

投稿2021/02/12 00:29

編集2021/02/15 11:41

前提・実現したいこと

moleculeでテスト可能な状態でFQDNをtemplateで使いたい。

改善ポイントがあれば教えて下さい!

実行環境

molecule 3.2.3 using python 3.8 ansible:2.9.17 docker:0.2.4 from molecule_docker

状況

task中にtemplateで以下の様にFQDNを補完するようにしています。

GF_SERVER_ROOT_URL=http://{{ ansible_facts['hostname'] }}.{{ ansible_dns['domain'] }}:{{ grafana_port }}

また、moleculeでfactsを以下の様にmolecule.ymlで改変しています。

YAML

1driver: 2 name: docker 3 : 4provisioner: 5 name: ansible 6 : 7 inventory: 8 hosts: 9 all: 10 vars: 11 ansible_dns['domain']: example.com

結果

以下の様にどうやらセットされていないようです。

fatal: [instance]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'domain'"}

マネージドノード側でキャッシュしているfactsを見たら以下の様にセットされているので実際には実行できるのかなぁって考えてます。

YAML

1ansible_dns: 2 domain: example.com

補足情報

FQDNは以下の通り

$ hostname -f grafana.example.com

また、キャッシュしている ansible_fqdn は、grafana となっている

追記

set_factsモジュールを以下の様につかって試してみたんですがダメでした。

YAML

1 - name: ansible_dns.domainを変更 2 set_fact: 3 ansible_dns['domain']: .internal

とか

YAML

1 - name: ansible_dns.domainを変更 2 set_fact: 3 ansible_dns: '{ "domain": ".internal" }'

とか試してみたんですけど、ダメでした。。

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

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

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

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

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

guest

回答1

0

自己解決

結論

テストできればいいので default用意して、変数 my_domain で後から可変に出来るようにして対応しました。

GF_SERVER_ROOT_URL=http://{{ ansible_facts['hostname'] }}.{{ ansible_dns['domain'] | default( my_domain ) }}:{{ grafana_port }}

他に検討した事

molecule.ymlのplatformsで変更出来ないかなぁと考えましたが、現状は変更出来なさそうです。

molecule-docker/create.yml at master · ansible-community/molecule-docker

ただし、Issueは挙がってたので今後はどうか分かりません。

Add dns_search_domains to default docker create.yml · Issue #16 · ansible-community/molecule-docker

投稿2021/02/15 12:06

yassan

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問