LoginSignup
8
8

More than 5 years have passed since last update.

ベストプラクティスに沿ってrole用にディレクトリを作成する

Last updated at Posted at 2013-08-09

Ansibleベストプラクティスについて

Best Practices — Ansible DocumentationにAnsibleのベストプラクティスが書かれているのでご一読をお勧めします。

Directory Layoutにプレイブックを作成する際のお勧めディレクトリ構成が書かれているので、これに合わせて分割、配置するのがよさそうです。

2014-06-11追記

と思っていたのですが、Directory Layoutにも書いてありますが、このディレクトリ構成に拘る必要はなくて、ニーズに応じて好きなディレクトリ構成を作って良いとのことです。

roleのディレクトリツリーを作成するplaybook

このような構成のディレクトリツリーを作成するplaybookを書いてみました。

//github.com/hnakamur/ansible-playbooks/blob/master/ansible-directories.yml
# ansible-directories.yml
# Create directories for ansible playbooks.
#
# Example Usage:
# Create a single role.
# $ ansible-playbook --extra-vars 'roles=some-role' ansible-directories.yml
# or
# Create multiple roles.
# $ ansible-playbook \
#      --extra-vars '{"roles":["common", "webservers", "dbservers"]}' \
#      ansible-directories.yml
- hosts: localhost
  gather_facts: no
  connection: local
  vars:
    roles:
      - common
  tasks:
  - name: create vars directories
    file: path={{ item }} state=directory
    with_items:
      - group_vars
      - host_vars
  - name: create role directories
    file: path=roles/{{ item[0] }}/{{ item[1] }} state=directory
    with_nested:
      - roles
      - [ 'tasks', 'handlers', 'templates', 'files', 'vars', 'meta' ]

使い方

例えば、some-roleという1つのrole用にディレクトリを作る場合は

ansible-playbook --extra-vars 'roles=some-role' ansible-directories.yml

common, webservers, dbserversという複数のrole用にディレクトリを作る場合は

ansible-playbook \
   --extra-vars '{"roles":["common", "webservers", "dbservers"]}' \
   ansible-directories.yml

--extra-varsについてはPassing Variables On The Command Lineに説明があり、JSONやYAMLで変数を指定できるようになっています。

8
8
2

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
8
8