開発に必要なツールを Ansible で一括導入する
この記事は Farmnote Advent Calendar 5 日目の記事です。
連投ですが今日はエンジニアリーダーとしての話題を少し。
メンバーごとに使うツールが異なると色々手間なので、 Farmnote では一番最初に Ansible で provisioning することでお手軽に開発環境を作れるようにしています。と言っても t-wada さんの真似なのですが。
http://t-wada.hatenablog.jp/entry/mac-provisioning-by-ansible
次は個人的に使っているものですが、社内でも同様のものを作ってメンテナンスしています。
https://github.com/januswel/setupper
インストールすべきものをリスト化しているので、追加削除が楽です。
https://github.com/januswel/setupper/blob/master/roles/homebrew/vars/main.yml
あ、 HomeBrew 前提からおわかりのとおり、 macOS を想定しています。
事情があって playbook を流したくない場合でもここを見れば何をインストールすればいいかがわかるので立ち上がりが速いです。メンテコストはペイできていると言えるでしょう。
大抵のものは HomeBrew があれば問題ないのですが、個別に task を書いているものから有用そうなものをピックアップしてみます。
awscli / awsebcli
公式サイトでの案内手順は pip によるインストールです。
https://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cli-installation.html
task はこのように。
---
- name: install Python packages
pip:
name={{ item.name }}
state={{ item.state | default('latest') }}
extra_args={{ item.extra_args | default('') }}
with_items:
"{{ pip_packages }}"
で、ここに読み込ませる vars はこうです。
---
pip_packages:
- { name: awscli }
- { name: awsebcli }
ちょっと前まで six パッケージが悪さしてインストールできなかったので次のように明示的に無視してあげる必要がありました。
- { name: awscli, extra_args: --upgrade --ignore-installed six }
今後同様のことがあった場合に指定してやればいいですね。
anyenv
公式のインストール方法が PATH 環境変数をいじるものなので、 git clone のみ自動化しています。
https://github.com/riywo/anyenv#install
---
- stat:
path: ~/.anyenv
register: anyenv_is_installed
- name: install anyenv
shell: git clone https://github.com/riywo/anyenv ~/.anyenv
when: anyenv_is_installed.stat.exists == false
- name: update anyenv
shell: cd ~/.anyenv && git fetch && git rebase origin master
register: git_messages
changed_when: git_messages.stdout != "Current branch master is up to date."
shell 設定ファイルに追記する部分はメンバーによってこだわりがある部分なので次のようなものを書くように、と README で補足しています。
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
まとめ
秘伝のタレほど複雑でもなく、メンバーの立ち上がりが目に見えて早くなるのでおすすめですよ。