Ansible (23) Ansible 1.8の新機能 Fact Caching を試す

こんにちは。

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

 

今回は、以前の記事 「Ansible 1.8.2 にアップデートする」の続きで、新機能 Fact Caching をご紹介します。

 

 

 

この Fact Caching はどんな機能かというと、

Ansible のPlaybookを実行した時に、Ansibleが保存するAサーバの情報(variables)を、Bサーバでも使えるようにする。

という機能みたいです。

 

詳細はこちらのドキュメントに書いてあります。

http://docs.ansible.com/playbooks_variables.html#fact-caching

 

 

が、しかし、

 

In current embodiments, this feature is in beta-level state and the Redis plugin does not support port or password configuration, this is expected to change in the near future.

 

とのことで、まだBeta版の機能のようです。

 

 

 

 

 

さて、どのような時に使うのかなと思ったところ、

 

公式ドキュメントの記載には、

Imagine, for instance, a very large infrastructure with thousands of hosts. Fact caching could be configured to run nightly, but configuration of a small set of servers could run ad-hoc or periodically throughout the day. With fact-caching enabled, it would not be necessary to “hit” all servers to reference variables and information about them.

ホストの数が多い大規模インフラの時に威力を発揮するらしく。

大量のサーバの情報を持っておきたい時に、Fact Cachingの機能を使えば一々全てのサーバに接続することなく保存しておけるよ。

 

 

設定ファイルの記載には、

# if set to a persistant type (not ‘memory’, for example ‘redis’) fact values
# from previous runs in Ansible will be stored. This may be useful when
# wanting to use, for example, IP information from one group of servers
# without having to talk to them in the same playbook run to get their
# current IP information.

redis に 値を保存しておけば、例えば別サーバグループのIPアドレスの情報を使いたい時に、今利用しているPlaybook上で使えるよ。

 

ということみたいです。

 

 

まぁ、今いち良く分からないですが、とりあえず、試してみます。

 

 

 

 

まずは下準備

 

Ansible のバージョンが1.8であることを確認します。

 

設定ファイルを変更します。

 

redis をインストール、起動します。

 

redisのpythonライブラリをインストールします。

 

 

これで下準備は完了です。

 

 

 

Fact Cachingする

それでは、この状態で 192.168.12.183 サーバに対して Ansible のPlaybookを実行してみます。

実行したのは、ただ shell モジュールを使う Playbook です。

 

 

 

その後、redis のkey-valueを見てみると・・・

 

何か Key が登録されています!

 

 

どのような value か調べたら、それぞれzsetとstringのtypeでした。

 

実際に中を見てみると、

 

ansible_cache_keys の方は、どのサーバの情報を保存しているか、

ansible_factsIPアドレス の方は、IPアドレスサーバのansibleで得た情報の中身、

を記録しているようです。

 

無事 redis に情報が保存されていることが分かりました。

 

 

それでは、 今回はここまです。

次回は、redis に保存された情報が 別のサーバに実行するPlaybookで利用できるかを試したいと思います。

 

お楽しみに!

Share on LinkedIn
LINEで送る
Pocket

吉村

吉村

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