Ansible Galaxyを使ってRoleをダウンロードする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

望月です。

Ansible Galaxyというサービスをご存知でしょうか。Ansibleの処理単位であるRoleの共有サービスです。ChefでいうとSupermarketのような感じでしょうか。

存在は知っていましたが使ったことは無かったので、今回試してみました。

ユーザ登録

Ansible GalaxyのWEBサイトにアクセスし、ユーザ登録を行いましょう。 Twitter、Facebook、Githubのソーシャルアカウントを持っていればそれと連携することができますし、個別にユーザ登録も行えます。

ユーザ登録が完了したら、「Browse Roles」や「Explore」でRoleを眺めてみましょう。EC2にJenkinsをインストールしようと考えていたのでjenkinsで検索してみます。

galaxy_1

たくさんありますね。。どうやらGalaxyには「Community Score」というものがあるようで、これがRoleの良さの判断材料のひとつになりそうです。

一番評価の良かったRoleを手元にインストールしてみましょう。

活用

Ansible Galaxyに登録されたRoleを利用するためにはansible-galaxyコマンドを利用します。このコマンドは1.4.2以降のAnsibleがインストールされた環境であれば存在するはずです。

早速インストールしてみます。インストールの方法はWEBサイトにも記載がありますが、ansible-galaxy installコマンドを実行するだけです。引数の形式は[ユーザ名].[ロール名]の形式のようです。

$ ansible-galaxy install geerlingguy.jenkins

これで手元へのインストールが完了しました。Roleのファイル群はansible.cfgのrole_pathで定義されたパスにインストールされます。特に設定していない場合、/etc/ansible/rolesにインストールされます。手元のMacにはHomebrewでAnsibleを導入したのですが、その場合は/usr/local/etc/ansible/rolesがインストール先になるようです。

インストールしたRoleを使ってみましょう。以下のようなplaybook(main.yml)を用意します。

- hosts: all
  sudo: yes
  roles:
    - { role: geerlingguy.jenkins }

インストール対象の1台をインベントリに記述します。

54.xxx.xxx.xxx # インストール対象のIPアドレス

あとはコマンドを実行するだけです。

$ ansible-playbook -i hosts main.yml

<...snip...>

PLAY RECAP ********************************************************************
54.xxx.xxx.xxx               : ok=14   changed=10   unreachable=0    failed=0

終わりました。簡単ですね!

最終確認として、ブラウザでアクセスして稼働しているかどうか確認しましょう。URLはhttp://<EC2インスタンスのIPアドレス>:8080/です。

jenkins_1

まとめ

Ansible Galaxyを使うことで既存のAnsible Roleを再活用することができます。何か試したいミドルウェアがあるときにはまず検索してみるのが良いでしょう。
ただしミドルウェアのインストール先や設定などを自分でカスタマイズしたい時などは既存のRoleではまかないきれない部分が出てくると思います。その時には新たに自分で書くか、既存のRoleを修正してGithubでPull Requestを出してしまいましょう。