LoginSignup
14

More than 5 years have passed since last update.

Ansibleのフォルダ構成

Posted at

環境

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14