背景
AnsibleでRoleを再利用するためにはAnsible GalaxyにホスティングされたRoleをインストールする方法がありますが、自分で作成したリポジトリを直接参照してインストールすることもできます。
しかし、Githubとそれ以外の場合で使用方法に差があったり、Roleのアップデートの方法がめんどくさかったりと、開発中に困ったことがあったので、まとめました。
Roleのインストール
Galaxy serverがホストするRoleを使用する場合
ansible-galaxy install Role名
Githubのリポジトリを使用する場合
ansible-galaxy install Repository名
デフォルトでは ~/.ansible/roles/ 以下にインストールされますが、-pオプションを利用することで配置先を指定することができます。
コミットハッシュとブランチ名も指定可能です。
ansible-galaxy install -p path Repository名
Github以外のリポジトリを使用する場合
ansible-galaxy install Git+Repository名
Githubの場合と同様に-pが利用できます。
Roleの一括管理
requirements.ymlを書くことでインストールするRoleを一括管理することができます。
requirements.yml
# from galaxy
- src: yatesr.timezone
# from GitHub
- src: https://github.com/bennojoy/nginx
# from GitHub, overriding the name and specifying a specific tag
- src: https://github.com/bennojoy/nginx
version: master
name: nginx_role
# from a webserver, where the role is packaged in a tar.gz
- src: https://some.webserver.example.com/files/master.tar.gz
name: http-role
# from Bitbucket
- src: git+http://bitbucket.org/willthames/git-ansible-galaxy
version: v1.4
# from Bitbucket, alternative syntax and caveats
- src: http://bitbucket.org/willthames/hg-ansible-galaxy
scm: hg
# from GitLab or other git-based scm
- src: git@gitlab.company.com:mygroup/ansible-base.git
scm: git
version: "0.1" # quoted, so YAML doesn't parse this as a floating-point value
それぞれのattributeについて解説します
- src: roleのソースであり、必至の項目です。書き方はCLIからインストールするときと同様です。
- scm: Gitlabの場合はgit、Bitbucketの場合はhgとしてください、GithubとGlaxyから利用する場合は書かないでください。
- version: ダウンロードするroleのバージョンを指定します。コミットハッシュ、ブランチ名、roleのtagを指定できます。
- name: roleを保存したい名前を記述できます。インストール後は指定した名前で使用することができます。
requirements.ymlを書いたら、以下のコマンドでインストールできます。
ansible-galaxy install -r requirements.yml
あとがき
roleをインストールする方法として、Ansible Galaxyを利用する方法とGitリポジトリをを利用する方法を挙げました。よく使うroleや大きいroleは別のリポジトリにしてしまいましょう!