はじめに
Ansible のグループ変数を使用すると、ホストのグループ全体に適用される変数を定義できます。これにより、特定のホストグループに対して Ansible の動作をカスタマイズしたり、共通の設定を構成したりすることが可能になります。このチャレンジでは、Ansible インベントリでグループ変数を定義および使用する方法を学びます。
グループ変数の定義
まずは、Ansible インベントリでグループ変数を定義する方法から始めましょう。これは、異なるホストグループ間で設定を効率的に管理するために不可欠なスキルです。
タスク
特定のホストグループに対してグループ変数を定義します。
/home/labex/projectディレクトリにinventoryという名前のファイルを作成し、以下の内容を記述してください。webおよびdbという名前のグループを定義する[web:vars]セクションの下にhttp_port=80変数を追加する[db:vars]セクションの下にdb_port=3306変数を追加する- 簡単のため、
localhostをwebグループとdbグループの両方に追加する
要件
- Ansible がインストール済みであること
- 管理対象ホストへの SSH 接続が構成済みであること
例
このステップを完了すると、Ansible の ping モジュールを使用して web グループ内のホストの状態を確認できるようになります。
ansible web -i inventory -m ping
出力例:
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
Playbook でのグループ変数の利用
グループ変数の定義方法を学んだので、次は重要なステップである「Ansible Playbook での変数の利用」に進みましょう。このスキルを身につけることで、ホストグループごとに柔軟に適応できる動的な Playbook を作成できるようになります。
タスク
/home/labex/projectディレクトリにmy-playbook.yamlという名前の新しい Playbook ファイルを作成し、以下の内容を記述してください。hostsをwebに設定するdebugモジュールを使用して、http_portグループ変数にアクセスし、表示する
ansible-playbookコマンドを使用して、インベントリファイルを指定し、Ansible Playbook を実行します。
要件
- Ansible がインストール済みであること
- 管理対象ホストへの SSH 接続が構成済みであること
- インベントリファイルが作成および構成済みであること
例
このステップを完了し、Playbook を実行すると、以下のような出力が得られるはずです。
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 グループ変数のチャレンジを完了しました。インベントリでグループ変数を定義し、Playbook でそれらを利用する方法を学びました。これらのスキルは、Ansible を効率的に使用するための重要な要素であり、インフラ内の異なるホストグループに対して設定を管理・カスタマイズできるようになります。
グループ変数を効果的に活用することで、より柔軟でモジュール化された自動化ワークフローを作成できます。Ansible の学習を続ける中で、さまざまなグループ変数を試し、それらがどのように自動化プロセスを強化できるかを探求してみてください。これらの概念を習得するには、実践が何よりも重要です!


