【入門編】AnsibleのInventory(インベントリ)ファイルをマスターする!動的インベントリの設定方法 – インフラ構成管理(IaC)活用バイブル

こんにちは。インフラの現場で「手作業」という名の悪魔と戦い続けている皆さん、お疲れ様です。

今日は、Ansibleの心臓部であり、かつ多くのエンジニアを悩ませる「インベントリ」について、その深淵を覗いてみましょう。これをマスターすれば、数百台のサーバー管理も、朝のコーヒーを飲んでいる間に終わるようになります。

—

1. インベントリとは何か?:管理の「地図」を書こう

Ansibleにとって、インベントリは「操作対象となるサーバーの地図」です。
「どのサーバーが、どのグループに属し、どんな特徴を持っているか」を定義することで、Ansibleは初めて指示を出せるようになります。

静的インベントリ(まずはここから)

まずはYAML形式で書いてみましょう。INI形式よりも構造が明確で、拡張性に優れているため、現場ではYAML一択です。

inventory.yml
all:
children:
webservers:
hosts:
web-01:
ansible_host: 192.168.1.10
web-02:
ansible_host: 192.168.1.11
dbservers:
hosts:
db-01:
ansible_host: 192.168.1.20
vars:
# 共通の変数をここで定義する
ansible_user: ec2-user

ポイント: `ansible_host` で接続先IPを指定し、`vars`で認証情報を共通化する。この「グループ化」の設計こそが、冪等性(何度実行しても同じ結果になること)を担保する第一歩です。

—

2. 動的インベントリ:クラウドの「息遣い」を読み取る

クラウド環境(AWS/GCP/Azure)では、サーバーがオートスケーリングで増減します。静的ファイルでIPを管理するのは、もはや「インフラの敗北」です。

ここで登場するのが動的インベントリ(Dynamic Inventory)です。
AnsibleはクラウドのAPIを叩き、実行した「その瞬間」のサーバーリストを自動生成します。

AWSを例にした設定手順

現在では、`aws_ec2` プラグインを使うのがベストプラクティスです。

1. プラグイン設定ファイルを作成
`aws_ec2.yml` という名前で保存します。

plugin: aws_ec2
regions:

  • ap-northeast-1

filters:
# タグで管理対象をフィルタリングするのが鉄則です
tag:Environment: production
インスタンスIDではなく、タグ名をホスト名として利用
keyed_groups:

  • key: tags.Role

prefix: role

2. 実行してみる
以下のコマンドで、クラウド上のサーバーが正しく認識されているか確認してください。

ansible-inventory -i aws_ec2.yml –list

このコマンドの結果、JSON形式でズラリとサーバー情報が返ってくれば成功です。これが「Hello World」ならぬ「Hello Cloud Infrastructure」です。

—

3. なぜ「動的インベントリ」が最強なのか

初心者のうちは静的インベントリで安心しがちですが、動的インベントリを導入すると以下のメリットが手に入ります。

  • ヒューマンエラーの消滅: IPの手打ちミスや、廃止したサーバーへのアクセスを排除できます。
  • タグ駆動型管理: 「Role: web」というタグが付いたサーバーだけを自動で特定し、設定を適用する。サーバーが増えても、コード側は何も変える必要がありません。
  • CI/CDとの親和性: GitHub Actions等のパイプラインから実行する際、動的インベントリは必須の武器となります。

—

4. 現場の先輩からのアドバイス:運用を楽にするコツ

最後に、現場で震えるほど役立つ「勘所」を伝授します。

1. インベントリ変数にロジックを入れすぎない:
変数には設定値だけを入れましょう。複雑なロジックはPlaybook側で行うのが、後から見返した時の「可読性」を守る鍵です。
2. `ansible.cfg` を活用する:
毎回 `-i inventory.yml` と打つのは非効率です。プロジェクトのルートに `ansible.cfg` を置き、デフォルトのインベントリを指定しておきましょう。

[defaults]
inventory = ./environments/aws_ec2.yml

—

まとめ

インベントリをマスターすることは、「インフラをコードとして定義する」というエンジニアとしての第一歩です。

最初は難しく感じるかもしれませんが、一度「クラウドと直接対話して自動でリストが生成される」体験をすると、もう以前の手動管理には戻れなくなりますよ。

まずは今日、手元の静的ファイルを1つ作るところから始めてみてください。あなたのインフラは、そこから劇的に洗練され始めます。応援しています!

タイトルとURLをコピーしました