Ansible Roles(ロール)は、自動化タスク、ハンドラー、変数、テンプレートを整理・モジュール化し、高い再利用性を実現する標準機能です。
🔗 Related: Ansible 基本チートシート · Ansible 入門ガイド · Ansible Playbook 実践例集
標準的なロールのディレクトリ構成
ansible-galaxy init role_name コマンドで標準ロール構造を自動生成できます:
roles/
common/
tasks/
main.yml # ロール実行タスクのエントリーポイント
handlers/
main.yml # notifyによって呼び出されるハンドラー定義
templates/ # templateモジュールで展開するJinja2テンプレート(.j2)
files/ # copyモジュール等で転送する静的ファイルやスクリプト
vars/
main.yml # 優先順位の高いロール固有の変数
defaults/
main.yml # 優先順位の低いデフォルト変数(上書き可能)
meta/
main.yml # ロールの依存関係や作者メタデータ定義
Playbook でのロールの呼び出し
---
- name: Apply common and webserver roles
hosts: webservers
become: true
roles:
- role: common
- role: nginx
vars:
nginx_port: 8080
ロール内の変数の優先順位
defaults/main.yml で定義された変数は Ansible で最も低い優先順位を持つため、インベントリや Playbook 側から安全に上書きできます。
vars/main.yml の変数は高い優先順位を持ち、ロール内部の定数ロジックに適しています。