リポジトリについて
Ansible Galaxyで管理していく場合、
リポジトリはロール単位で管理してくことになります。
それとは別にPlaybookを管理していくリポジトリも必要です。
そのため、Playbookを管理する一つのリポジトリと、
そのPlaybookに必要な分のロールのリポジトリができあがります。
Playbook用のリポジトリの雛形
前回の記事で少し触れましたが、
私はよく使う構成をPlaybookのリポジトリの雛形として
githubにおいています。
そのリポジトリ に入れているものの紹介をしたいと思います。
.editorconfig
root = true [*] indent_style = space indent_size = 2 end_of_line = lf trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false
Ansibleはyml形式で書いていくのでその設定を入れています。
README用に *.md
の設定も入れています。
ansible.cfg
Ansibleの設定ファイルです。 AnsibleのGithubリポジトリにあるexampleのものをベースとしていますが、 以下だけ変更しています。
inventory = hosts roles_path = roles
リポジトリ直下にそのプロジェクト用のhostsファイルを
作成することが多いのでinventory = hosts
を設定しています。
また、Ansible Galaxyでインストールするロールは、
プロジェクトディレクトリ(Playbookのリポジトリ)直下のrolesディレクトリに
インストールしたいのでroles_path = roles
を設定しています。
複数プロジェクトが共存する環境下で、お互いに影響がでないことを考えてです。
.gitignore
*.retry roles/role-*
playbookを実行すると.retry
というファイルを生成する場合があるので
それをリポジトリに含めいないようにしています。
roles/role-*
に関しては入れたり入れなかったりです。
ansible.cfgでroles_path = roles
の設定を入れると
リポジトリ内のrolesにAnsible Galaxyで持ってきたロール群が配置されます。
それらは、リポジトリ管理したくないので除外しています。
ただ、roles配下すべてを除外してしまうと、
そのPlaybookのリポジトリだけで必要な使い回す必要のないロールも除外されてしまいます。
なので、Ansible Galaxyでインストールするものは、
role-xxxという命名規則でインストールされるようにして、
その命名規則にあったものだけ除外しています。
require.yml
Ansible Galaxyでインストールするロールを記載しておくためのファイルです。
このファイルにPlaybookで必要なロールを記載しておくことで、
複数のロールを一気にインストールできます。
npmのpackage.josnとかcomposerのcomposer.jsonみたいなものです。
Ansible Galaxyでは、npmやcomposerほど高度なことはできませんが。。
雛形のリポジトリには、Ansible Galaxyの説明に書いてあったサンプルを
そのまま記載しています。
一番多く使うのは、Githubかつバージョン、name指定の方法です。
下記のような書き方です。
- src: https://github.com/kkkw/ansible-role-example version: master name: role-example