環境
CentOS6.7 64bit
フォルダ構成
基本的には以下のサイトの構成を参考にしています。
http://docs.ansible.com/ansible/playbooks_best_practices.html
現在は以下のようなフォルダ構成にしています。
# Ansible設定ファイル
ansible.cfg
# インベントリファイル
production
development
# インベントリファイルの各グループで使用する変数
group_vars/
project1
project2
# 各ホストで使用する変数
host_vars/
hostname1
hostname2
# メインPlaybook
site.yml
# 各プロジェクトのPlaybook
project1.yml
project2.yml
# 共通で使用するルール
roles/
# 必ず行いたいルール
common/
tasks/
main.yml
handlers/
main.yml
templates/
***.conf.j2
files/
***.txt
vars/
main.yml
# オプションルール
etc...
# 各プロジェクトで使用するルール
project_roles/
project1/
project2/
site.ymlは単純に各プロジェクトのPlaybookをincludeしています。
---
- include: project1.yml
#- include: project2.yml
各プロジェクトのPlaybookは以下のようにしています。
----
- hosts: project1
roles:
- common
- etc...
- { role: ../project_roles/project1 }
project_rolesがrolesフォルダからの相対パスになるのが嫌なら
ansible.cfgのroles_pathにproject_rolesを追加します。
# additional paths to search for roles in, colon separated
roles_path = project_roles
追加するとPlaybookにrolesフォルダ以下と同じように書くことが出来ます。
----
- hosts: project1
roles:
- common
- etc...
- project1
実行
対象ディレクトリに移動して以下のコマンドで実行します。
ansible-playbook -i development site.yml