63
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AnsibleAdvent Calendar 2014

Day 4

ansible-galaxyでRolesを再利用する

Posted at

"Ansible Galaxy"はRolesをシェアできるサービスです。uploadしたり、好みのroleを探してinstallする事ができます。ansible-galaxyはこのAnsible Galaxyを利用する為のコマンドラインツールです。
1.8のansible-galaxyではAnsible Galaxyにホストされているroleだけでなく、SCMを指定できるようになったので外部のリポジトリも扱えるようになりました。

使い方(SCM)

GitHubから。-pで配置するdirectoryを指定しています。
ansible-galaxy install -p ./roles https://github.com/bennojoy/nginx

ブランチ・タグも指定できます
ansible-galaxy install -p ./roles https://github.com/ANXS/mysql.git,v1.0.3

応用

1.8から-rで指定するファイルの拡張子を'yml'にする事で、ファイルから読み込む際も外部のリポジトリが使えるようになります。

ファイルを用意します

requirements.yml
# from galaxy
- src: yatesr.timezone

# from github
- src: https://github.com/bennojoy/nginx

# from github with tag
- src: https://github.com/ANXS/mysql.git
  version: v1.0.3

実行します
ansible-galaxy install -p ./roles -r requirements.yml

プライベートで使ってみる

プライベートで使っているgitlabに作成した自前のroleをansible-galaxyでinstallしてみます。

ansible-galaxy init [role名] でひな形が作成できます。オフラインで使用する際は--offlineオプションも指定して下さい。

myrole
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
└── vars
    └── main.yml

commit, pushしたあと、ansible-galaxyでinstallしてみます。

$ ansible-galaxy install -p ./roles git+git@gitlab.example.com:orita/myrole.git
- executing: git clone git@gitlab.example.com:orita/myrole.git myrole
- executing: git archive --prefix=myrole/ --output=/var/folders/xx/xxxxxxxxxxxxxxxxxxxxxx/x/xxxxxxx.tar master
- extracting myrole to ./roles/myrole
- myrole was installed successfully

うまくいったようです。ssh+gitの場合はリポジトリパスの先頭に"git+"をつけるとうまくいきました。

注意事項

ansible-galaxyは依存しているrole(meta/main.ymlに記述する)も自動的に取得してくれるのですが、現時点ではAnsible Galaxyにあるものに限定されています。外部のリポジトリに置く場合は気をつけましょう。

To download a role with dependencies, and automatically install those dependencies, the role must be uploaded to the Ansible Galaxy website.
Ansible Galaxy — Ansible Documentation

あとがき

今まで自分で使う時はroleもろとも全部同じリポジトリに入れてしまい使い回しが厳しかったり(どっかで見たアンチパターン・・・)、gitのsubmoduleにしてみたもののどうも使い勝手が悪かったりでした。外部のリポジトリも扱えるようになってroleの使い回しが捗りそうです。Berkshelfみたいに使えて便利ですね。

63
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?