Ansible (24) Ansible 1.8の新機能 Fact Caching を試す つづき

こんにちは。

クララオンライン グローバルソリューション事業部の吉村です。

 

以前の記事 「Ansible 1.8の新機能 Fact Caching を試す」の続きで、新機能 Fact Caching を試していきます。

 

今回は、Fact Caching を有効化して redis に保存された 情報が実際に別のPlaybookで利用できるかを確認しようと思います。

 

まずは、今 redis に保存されているkeyを確認すると、

これだけです。

そして、今回使うのは、192.168.12.183 サーバの情報ですので、どんな情報が保存されているかを確認します。

AnsibleでPlaybookを実行すると、gathering fact によって たくさんの情報が自動的に保存されますが、

今回はこの中から、”ansible_domain”: “clara.jp” という情報を、別のPlaybookで利用してみようと思います。

 

 

下準備

新しく 192.168.12.186 サーバを用意しました。

この192.168.12.186から192.168.12.183へはSSH出来ない状態です。

 

この状態で、以下のようなPlaybookを作りました。

このPlaybookは、192.168.12.186サーバ上で、192.168.12.183サーバの変数 ansible_domain をechoする、という内容です。

これがうまくいけば、Ansible の redis に保存された192.168.12.183サーバの情報が、192.168.12.186サーバ上で使えたということになります。

 

 

次に、Playbookを実行するサーバを確認

192.168.12.186 だけに実行するのでOKです。

 

 

では、いざ、試します

 

詳細を見たかったので、-vvv を付けました。

最初に 192.168.12.186 に対して、GATHERING FACTSをしています。

次に、TASK: [shell echo “I got another server’s fact ‘{{ hostvars[‘192.168.12.183’][‘ansible_domain’] }}'”] ***を実行するのですが、

実際に実行されたのは、”cmd”: “echo \”I got another server’s fact ‘clara.jp’\””となっています。

 

無事、Ansible サーバの redis に保存されていた “ansible_domain”: “clara.jp” が使われたようです。

 

 

 

 

最後に、Ansible サーバのFact Caching設定(/etc/ansible/ansible.cfg)をmemoryに戻して、redis を停止した状態で同じPlaybookを試してみました。

そうすると、

fatal: [192.168.12.186] => One or more undefined variables: ‘dict’ object has no attribute ‘ansible_domain’

予想通り、”ansible_domain”: “clara.jp” が分からなかったみたいです。

ざっくり言うと、初期設定の状態で同じことやって、出来ないことを確認しました。

 

以上、fact_caching の検証でした。

 

今回はここまでです。

 

次回をお楽しみに!

Share on LinkedIn
LINEで送る
Pocket

吉村

吉村

クララオンライン グローバルビジネスストラテジー部でマーケティング担当として働いています。 クラウド関連技術と中国関連の情報をお届けしてます。 たまに DJ とかします。日本語RAPが大好きです。