Elixirをインストールする際、ローカルの開発環境(のMac)であれば
$ brew update
$ brew install elixir
で済むんですが、本番/ステージングサーバーや、Vagrant等の仮想環境にインストールする場合は、以下の様な作業が必要になり、わりかし手間だったりします。もっとライトにやりたいです。
- Erlangをインストール
- Elixirをインストール
- (必要なら)パスを設定
- etc
そこで、良いAnsible(ライトにという事なのでchefは候補から外しました)のRoleが無いかAnsible-Galaxyで探したんですが、
- Erlangをaptでインストールしているのでバージョンアップができない/遅い
- Elixirのバージョンが0.15.0固定(公式のzipを取得/解凍/binに配置)
というものしかなくて(残念ながら2015/2/22時点でこの1つだけ)、ちょっと実運用には耐えられんかなーという事で作成しました。
方針としては
- kerlでErlangのバージョンを指定してインストール
- Githubのelixirリポジトリをcloneして
make install
- まずはCentOS/Fedora/AmazonLinuxをサポート(Ubuntu/Debianは現在対応中)
- Ansible-Galaxyに公開
という感じでRoleを作成してあります。
https://github.com/ohr486/ansible-elixir
https://galaxy.ansible.com/list#/roles/2930
利用方法は、galaxyからroleをインストールして、roles指定のplaybookを実行するだけです
$ ansible-galaxy install ohr486.elixir
install_elixir.yml
- hosts: target-server
sudo: yes
roles:
- { role: ohr486.ansible-elixir, erlang_version: 17.4, elixir_version: v1.0.3 }
$ ansible-playbook install_elixir.yml
Vagrant/Docker等と組み合わせると、開発環境構築が捗るのではないでしょうか。