kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Ansible Galaxyでロールの管理 - Playbookの準備 複数ロール編

前回はAnsible Galaxyのinitコマンドで作成される
testsディレクトリを利用して、ダミーのPlaybookを作りました。
しかし、それだと複数のロールを同時に開発していくときに若干不便です。

複数のロールを開発していく場合は、ダミーのPlaybook用のプロジェクトを利用します。
自分でよく使う設定などをgithubに登録してあるので、
これをcloneして使っています。

このプロジェクトのroles配下に
開発しようとしているロールのシンボリックリンクを貼って開発しています。

ディレクトリツリー

ansible-template
├── ansible.cfg
├── hosts
├── localhost.yml
├── require.yml
└── roles
    ├── role-foo -> ../../role-foo
    └── role-bar -> ../../role-bar
role-foo
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   ├── test.retry
│   └── test.yml
└── vars
    └── main.yml
role-bar
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   ├── test.retry
│   └── test.yml
└── vars
    └── main.yml

シンボリックリンクにしている理由

シンボリックリンクにしているのはAnsible Galaxyのインストールコマンドで
どのようにインストールされるかのテストをすることがあるためです。

ansible-galaxy install -rf require.yml のようにして依存解決の確認などをしたい時に
実態だと、リポジトリの内容で上書きされてしまいます。

一度痛い目にあってから、シンボリックリンクにするようにしました。