読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

OSXのHomebrewでインストールするのをitamaeでやるようにした

自分のマシンの環境構築

数年に一度なのでイマイチ自動化とかしてなかったのだけど、Homebrewでインストールするヤツくらい自動化しても良いかと思ったので、 itamae-kitchen/itamae · GitHub でやるようにした。

caskでのインストールとかまで自動でできるようになると結構良いかなーと思っているが、そこまでやってない。。。

このエントリを読んで得られるもの

itamae についてちょっとだけ知識を得られるかもしれません。

  • パッケージのインストールを行う方法
  • シェルスクリプトの実行をする方法
  • itamaelocal モード(実行しているマシン自身を対象とする)の実行方法

リポジトリと実際のソースコードはこんな感じ

dotfiles/app_setup at master · sugamasao/dotfiles · GitHub

主に package リソースを使っていますが、brew tap の部分は直接シェルスクリプトを実行しているため、 execute リソースを使っています。

また、Homebrewは重複してインストールしてもエラーになったりはしませんが、 only_ifnot_if を使ってインストール済みであれば実行をスキップするようにして処理時間を短縮しています。

# brew install
%w(openssl git tig imagemagick mysql zsh tmux mecab mecab-ipadic tree).each do |pkg|
  package pkg do
    action :install
    only_if "brew info #{ pkg } | grep -qi 'Not Installed'"
  end
end

## using tap repository
%w(sanemat/font peco/peco).each do |tap_name|
  execute "using tap #{ tap_name }" do
    command "brew tap #{ tap_name }"
    not_if "brew tap | grep -q '#{ tap_name }'"
  end
end

%w(ricty peco).each do |pkg|
  package pkg do
    action :install
    only_if "brew info #{ pkg } | grep -qi 'Not Installed'"
  end
end

local モードで実行するにはこのようにする。

$ bundle exec itamae local recipe.rb

まーこの程度シェルスクリプトでも良いじゃん?という気もするんだけど、今どきはOSXでもRuby 2.0系がデフォルトで入るようになってるし、臆さずRuby使ってけば良いのではという気持ちになっている。あと重要なのはitamaeを気に入ってるので、使っていきたいという気持ちw