個人(主にGithub)でAnsible Galaxyでロールを管理する上で、
よく使うサブコマンドは、init
とinstall
の2つです。
import
,search
,remove
などは、Ansible Galaxyにある
ロールを使う時によく使うサブコマンドです。
ただ、実際のプロジェクトでは、
Ansible Galaxyにあるロールをあまり使うことはないのかなと思ってます。
既存のロールは、不要なタスクがあったり、タスクが足りなかったりで
自分のプロジェクトにジャストフィットするものは
あまりないという印象です。
自分でロールを開発する時に参考として見るという使い方が
一番しっくり来ています。
init
ロール開発をする雛形を生成してくれるコマンドです。
ansible-galaxy init ansible-role-foo
という形で使用します。
ansible-role-foo
という部分は自分で指定します。
大体このコマンドで作成したディレクトリをそのまま
リポジトリとして扱っていくことが多いと思います。
ロール名
Ansible Galaxyのサイトでは、 リポジトリ名 = ロール名 になっていないものが多いですが、
個人で管理する場合は、リポジトリ名 = ロール名にしてしまうのが簡単だと思います。
私は、 ansbile-role-
か 単に role-
を接頭辞につけることが多いです。
ディレクトリ構造
実行すると下記のような構造になります。
ansible-role-foo ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml
何をどこに書くのかは、公式ドキュメントにあるベストプラクティスに
従うのが今のところ良いのではないかと思います。
日本語で解説されているサイトも多いのでググるといろいろ出てきます。
install
playbookで使用したいロールをローカルに落としてくるのに利用します。
私は、基本的に require.yml
に記載したものをインストールするときに使用しています。
ansible-galaxy install -r require.yml
のような形で実行します。
実際のプロジェクトでは、ansible-galaxy install -fr require.yml
とf
オプションを追加して使うことが多いです。fはフォースオプションで、
ロールを落としてくる先に、すでに同名のロールが存在した場合、上書きするオプションです。
Playbookを一旦開発し終わった後でも、ロールに対して修正することがよくあります
そんなときに、再度インストールし直すには、fオプションつけないと更新できません。
ちなみにこの時、 f
と r
の順番に気をつけないとエラーがでることがあるようです。