開発に必要なツールを 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 -)"

まとめ

秘伝のタレほど複雑でもなく、メンバーの立ち上がりが目に見えて早くなるのでおすすめですよ。

いいなと思ったら応援しよう!