Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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で変数を指定できるようになっています。

sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした