Help us understand the problem. What is going on with this article?

Dynamic Inventoryを使ってみる

More than 3 years have passed since last update.

ansibleは、インベントリファイルに記載されているホストを認識するのですが、実はInventoryファイルは静的なテキストファイル以外に、実行可能なスクリプトファイルを指定できます。

やり方

Dynamic Inventory
に詳しく記載されていますが、以下のようなjsonを返すスクリプトファイルを用意し、実行権限を付けて保存したファイルを ansible-playbookコマンド等の -iオプションに渡せば良いだけです。

{
    "databases"   : {
        "hosts"   : [ "host1.example.com", "host2.example.com" ],
        "vars"    : {
            "a"   : true
        }
    },
    "webservers"  : [ "host2.example.com", "host3.example.com" ],
    "atlanta"     : {
        "hosts"   : [ "host1.example.com", "host4.example.com", "host5.example.com" ],
        "vars"    : {
            "b"   : false
        },
        "children": [ "marietta", "5points" ],
    },
    "marietta"    : [ "host6.example.com" ],
    "5points"     : [ "host7.example.com" ]
}

ansibleは、インベントリファイルに実行権限が付いていなければ、通常のインベントリファイルとして読み込み、実行権限が付いていれば実行した結果帰ってくるjsonを読み込むという処理をしているようです。

これで何が嬉しいのか

構築済みのシステム等では既にmuninやnagios,zabbix等の監視ソフトなどでサーバーの一覧やグループ化をされていると思います。
ansibleからはそちらのデータをマスターとして扱い、直接参照するような簡単なスクリプトを用意する方が効率的だと思われます。
また、inventoryスクリプトはmoduleと同じく言語は問わずjsonを標準出力で返せれば何でもOKなようなので、作成の閾は低いですね。

既に用意されているスクリプト

Dynamic Inventory用のスクリプトは既にいくつか用意されています。
https://github.com/ansible/ansible/tree/devel/plugins/inventory
EC2やvagrant、zabbixもすでにありましたね。

yamasaki-masahide
インフラ関連技術に興味があります。 暇があればgolangで何か作りたい
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした