# 2. インベントリ の作成
ansibleを実行する為にはまずインベントリを作成しなければなりません。 インベントリとは、Ansible が管理するホストの集合を定義します。 インベントリを用いることでansibleによって、ホストをまとめて管理することができます。
インベントリでは管理ホストをグループに割り当てることが可能なほか グループは子グループを含むことも可能で、ホストは複数のグループのメンバーになることができます。 また、インベントリでは、それが定義するホストとグループに適用される、変数の設定も行います。
# インベントリを作成する
まずはじめに Inventory ファイルと呼ばれる物を作成します。 Ansible において、Inventory ファイルは対象を示していて実行に欠かせない要素です。
教材 (opens new window)のフォルダには ansible フォルダの配下にインベントリファイルを置くためのフォルダ(inventories)があります。 試しに開いてみましょう。
Ansible の Inventory ファイルは INI 形式に近い記述によって作成されます。
インベントリファイルの括弧内の見出し([app]
など)はグループ名を表し、
ホストをグルーピングすることができます。
なお、[]に属さないホストはデフォルトであるall
グループに属することになります。
# [演習]インベントリの作成
では、実際にインベントリファイルを作成してみましょう。
hosts
というファイルを作成し host00
, host01
を追加します。
グループ名はexercise
として下さい。
- inventoryファイルを作成する
vi hosts
1 - 記載内容
[exercise] host00 host01
1
2
3 - インベントリの動作確認
- 先ほど作成したインベントリが正しいことを確かめるために、
ansible
コマンドで ping モジュールを実行してみます。 コマンドと実行結果は下記のようになるはずです。ansible -i hosts exercise -m ping -k
1 - パスワードを聞かれるため事前準備で設定したパスワード(ansible)を入力します
- 先ほど作成したインベントリが正しいことを確かめるために、
- 出力結果
host01 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } host00 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
正しく実行されれば SUCCESS と出力されます。
# [発展演習] インベントリを YAML で書く
Ansible のターゲットホストの情報を定義するインベントリファイルは、INI 形式の他にも YAML 形式でも定義できす。
先ほど利用した INI 形式の Inventory ファイルを YAML 形式で記述すると以下の通りになります。
YAML 形式で記述すると全てのグループがall
グループの配下にあることが分かります。
all:
children:
exercise:
hosts:
host00:
host01:
2
3
4
5
6
なお、YAML書式についてはiniファイルのインベントリファイルがあれば以下のようなコマンドで作成することが可能です
ansible-inventory -i inventories/hosts --list -y