はじめに
Ansible のグループ変数(Group Variables)を使用すると、ホストのグループ全体に適用される変数を定義できます。これにより、特定のホストグループごとに Ansible の挙動をカスタマイズしたり、共通の設定を効率的に管理したりすることが可能になります。このチャレンジでは、Ansible インベントリ(Inventory)においてグループ変数を定義し、それを利用する方法を習得します。
グループ変数の定義
まずは、Ansible インベントリ内でグループ変数を定義する方法から学びましょう。これは、異なるホストグループ間で設定を効率的に管理するための基本的なスキルです。
タスク
特定のホストグループに対してグループ変数を定義してください。
/home/labex/projectディレクトリにinventoryという名前のファイルを作成し、以下の内容を設定してください。webおよびdbという名前のグループを定義するwebグループに変数http_port=80を追加するdbグループに変数db_port=3306を追加する- 簡略化のため、
localhostをwebとdbの両方のグループに追加する
要件
- Ansible がインストール済みであること
- 管理対象ホストへの SSH 接続が構成されていること
例
このステップを完了すると、Ansible の ping モジュールを使用して web グループのホストの状態を確認できるようになります。
ansible web -i inventory -m ping
出力例:
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
プレイブックでのグループ変数へのアクセス
グループ変数を定義できたので、次は重要なステップである「Ansible プレイブック(Playbook)内での変数へのアクセス」に進みます。このスキルを習得することで、異なるホストグループに適応できる、動的で柔軟なプレイブックを作成できるようになります。
タスク
/home/labex/projectディレクトリにmy-playbook.yamlという名前の新しいプレイブックファイルを作成し、以下の内容を設定してください。hostsをwebに設定するdebugモジュールを使用して、グループ変数http_portにアクセスし、表示する
ansible-playbookコマンドを実行し、作成したインベントリファイルを指定してプレイブックを動かしてください。
要件
- Ansible がインストール済みであること
- 管理対象ホストへの SSH 接続が構成されていること
- インベントリファイルが正しく作成・構成されていること
例
このステップを完了してプレイブックを実行すると、以下のような出力が表示されます。
PLAY [Print group variables] **************************************************
TASK [Gathering Facts] ********************************************************
ok: [localhost]
TASK [Print http_port variable] ************************************************
ok: [localhost] => {
"http_port": 80
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
まとめ
おめでとうございます!Ansible グループ変数のチャレンジを無事に完了しました。インベントリでグループ変数を定義し、それをプレイブック内で活用する方法を習得しました。これらのスキルは、Ansible を効率的に使いこなし、インフラ内の異なるホストグループの設定を管理・カスタマイズするために不可欠な要素です。
グループ変数を効果的に活用することで、より柔軟でモジュール化された自動化ワークフローを構築できます。Ansible の学習を続けるにあたって、さまざまなグループ変数を試し、自動化プロセスをどのように強化できるか探求してみてください。継続的な練習こそが、これらの概念をマスターする鍵となります。


