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

Ansible GalaxyでGithub以外のリポジトリからRoleをインストールする

背景

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は別のリポジトリにしてしまいましょう!

Why do not you register as a user and use Qiita more conveniently?
  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
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