Boxenを使ってHomebrewの環境をセットアップする

森裕介(プログラマー)
無念

布団から出るのがつらい季節になってきました。 筆頭オトモと狩りに出かけたりブラッド隊隊長としてアラガミ討伐に励む日々を過ごしている森です。

Homebrewを使い始めて久しいわけですが、新しいマシンやOSの再インストール後に一からコマンドを叩いて確認して…はめんどくさいなあと考えていました。 そこで Boxen を利用して自分が利用しているツールのセットアップを自動化しようと思い至りました。

自分のメモをもとに既存環境のHomebrewからBoxenに乗り換えるための手順をまとめました。

そもそもBoxenてなに?

Boxen はGitHubが開発している開発環境のセットアップツールです。

Boxen is your team’s IT robot. It’s a dangerously opinionated framework that automates every piece of your development environment. GitHub, Inc. wrote the first version of Boxen (imaginatively called “The Setup”) to help employees start shipping on day one.

上記は公式サイトから引用です、入社した人がすぐに開発環境を整えて開発を開始するためにつくられました。

事前準備

公式レポジトリ のREADMEを見ながら作業しましょう。

Boxenには最新版の Xcode Command Line Tools が必要です。 App StoreからXcodeをインストールしてXcodeを起動、コマンドラインツールをインストールしましょう。

さらに rbenv , Homebrew がインストールされているとうまく動作しないそうなので泣きながら削除しましょう。 削除するまえには設定をメモっておきましょうね。

rm -fr ~/.rbenv
sudo rm -fr ~/usr/local

.bashrc (.zshrc) から設定を削除するのも忘れずに。

インストール

公式レポジトリ のREADMEをみながら作業しましょう。 READMEではoriginを削除していますが upstream などにリネームして残しておいたほうがいいです。

sudo mkdir -p /opt/boxen
sudo chown ${USER}:staff /opt/boxen
git clone https://github.com/boxen/our-boxen /opt/boxen/repo
cd /opt/boxen/repo
git remote rename origin upstream
git remote add origin <the location of my new git repository>
git push -u origin master

<the location of my new git repository> のところは僕の場合は git@github.com:jiska/our-boxen.git というかんじで設定しました。

あとはscriptを実行して少し待ちます。ディスクの暗号化をしていない場合は --no-fde オプションを付けます。

cd /opt/boxen/repo
script/boxen
# 暗号化してない場合は --no-fdeオプションをつける
script/boxen --no-fde

途中でGitHubのユーザー名とパスワード、二段階認証がONの場合はトークンも入力を求められますので入力します。

--> Hey, I need your current GitHub credentials to continue.
GitHub login: |jiska| jiska
GitHub password: ******************
--> It looks like you have two-factor auth enabled.
One time password (via SMS or device):
******

30分〜1時間ほどかかるので昼食をとるなり一狩りするなりしましょう。

初期設定が終わったら .bashrc or .zshrc に設定を追加してシェルを再起動しましょう。

[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh

セットアップ

無事にBoxenのインストールができたので自分用、またはプロジェクト用の設定をしていきましょう。

cd /opt/boxen/repo
script/boxen-my-config

これで modules/people/manifests/[user name].pp という名前でmanifest(Puppetの定義ファイル)が作成されます。 ここに個人用の設定を記述して script/boxen を再度実行すれば開発環境構築が自動化できるというわけです。

たとえば以下のように設定します。…正直なところmanifestの書き方がよくわかっておらずベタ書き感あふれるものになっています。

class people::jiska {
# utils
package {
[
'binutils',
'coreutils',
'htop-osx',
'nkf',
'reattach-to-user-namespace',
'source-highlight',
'tmux',
'wget'
]:
}
# completion
package {
[
'bash-completion',
'rails-completion',
'vagrant-completion'
]:
}
# git
package {
[
'git-now',
'tig'
]:
}
}

これでtmuxやtigやbash-completionなどがインストールされます。

いじったmanifestはちゃんとgitでバージョン管理しておけば幸せになれます。

まとめ

開発環境構築の自動化をするうえでBoxenは非常にパワフルなツールだなと思います。 自分も把握しきれないいろいろな設定、機能があるため駆け足かつやっつけ気味に説明していますが、 未来の自分のために一度Boxenを試してみてください。