はじめに
- 2013 年の最後の記事(だと思う)
Mac
の設定を自動化してくれるツールboxen
を試してみる- 既に 2014 年なのでこちらの記事から丸々一年遅れで試すことになります...
boxen とは
以下、自分の認識。
- Mac の設定が自動出来る(パッケージのインストールや簡単な画面のカスタマイズなど)
- github が社内でも利用している開発環境構築フレームワーク
- ベースは
puppet
Mac
のセットアップはそれほど頻繁に行うわけではないけど、設定が自動化出来るという点とベースが puppet
であるという点、そして puppet
を利用しているということでその設定をコードで管理出来るという点が個人的には魅力的。また、puppet
は少し齧ったことがあるのが嬉しい。
参考
使ってみる
環境
- MacBook Air mid 2011
- OS X Mavericks(Lion をクリーンインストールしてアップグレード)
ステップ
とりあえずステップの個人的なおさらい。
- github に
boxen
用のリポジトリを作成する - Xcode のインストール
- Command Line Tools for Xcode のインストール
- https://github.com/boxen/our-boxen.git を
git clone
する - 必要なディレクトリ(
/opt/boxen
)の作成とオーナー($USER:staff
)の変更 our-boxen/script/bootstrap
スクリプトの実行our-boxen/manifests/site.pp
の修正- 初回の
our-boxen/script/boxen --no-fde
を実行 - パスの設定をしてくれる
source /opt/boxen/env.sh
を実行 our-boxen/Puppetfile
を修正して導入したいパッケージを記載するour-boxen/modules/people/manifests/${github_ID}.pp
を作成(個別に設定したい内容を記述する
)- 改めて
./script/boxen --no-fde
を実行して設定を反映させる - そこそこ構築出来たら
github
にあらかじめ作成しておいたリポジトリにpush
する
以下は個人的にポイントだと感じた部分。
Mavericks で Command Line Tools for Xcode のインストール
Command Line Tools for Xcode
のインストールはちょっとステップが必要。Xcode
を起動して...Open Developer Tool
から More Developer Tool...
を選択。
https://developer.apple.com からダウンロードする。
~/our-boxen/manifests/site.pp の修正
boxen
がデフォルトでインストールする node
と ruby
のバージョンを指定する。
kappabookair% diff -u site.pp.bk site.pp --- site.pp.bk 2013-12-31 07:43:41.000000000 +0900 +++ site.pp 2013-12-31 10:25:06.000000000 +0900 @@ -64,14 +64,14 @@ } # node versions - include nodejs::v0_6 - include nodejs::v0_8 + #include nodejs::v0_6 + #include nodejs::v0_8 include nodejs::v0_10 # default ruby versions - include ruby::1_8_7 - include ruby::1_9_2 - include ruby::1_9_3 + #include ruby::1_8_7 + #include ruby::1_9_2 + #include ruby::1_9_3 include ruby::2_0_0 # common, useful packages
開発は殆どしないし、出来るだけ新しい環境が入っていた方が良いかなって思うので上記のように設定した。
boxen 用のディレクトリを作成する
sudo mkdir -p /opt/boxen chown -R ${USER}:staff /opt/boxen
/opt/boxen
以外は指定出来ないらしいので注意する。
初回の ~/our-boxen/script/boxen --no-fde を実行
root
パーティションを暗号化しない場合(暗号化しないので)-no-fde
オプションを付けて実行する。
cd our-boxen script/boxen --no-fde --> Hey, I need your current GitHub credentials to continue. GitHub login: |kappa| inokappa GitHub password: *************** Password for sudo:
最初に github
のアカウントと sudo
パスワードの入力を促される。正常に入力されると処理が開始される。(初回は処理の完了に小一時間ほど時間を要する。)処理が終わった後で以下を実行して boxen
に必要なパスの設定を行う。
source /opt/boxen/env.sh
設定後、以下を実行して設定内容を確認する。
~/our-boxen/script/boxen --env
以下のような内容が出力される。
BOXEN_BIN_DIR=/opt/boxen/bin BOXEN_CONFIG_DIR=/opt/boxen/config BOXEN_DATA_DIR=/opt/boxen/data BOXEN_ENV_DIR=/opt/boxen/env.d BOXEN_GITHUB_LOGIN=${github_ID} BOXEN_HOME=/opt/boxen BOXEN_LOG_DIR=/opt/boxen/log BOXEN_SETUP_VERSION= BOXEN_SOCKET_DIR=/opt/boxen/data/project-sockets BOXEN_SRC_DIR=/Users/${USER}/src
尚、ログイン時に ~/our-boxen/script/boxen --env
が実行されるように ~/.zshrc
に設定しておく(zsh
の場合)。
source /opt/boxen/env.sh
導入パッケージを Puppetfile に記述する
こちらにて puppet-
のプレフィックスがついているパッケージの中に導入したいパッケージがあれば、以下のように記述する。
github "osx", "2.2.2" github "thunderbird", "1.1.0"
右側の数値はバージョンとなり、github のブランチプルダウンの tag
からバージョン番号を取得して記載する。ちなみにこちらに存在していないパッケージなどについては他の方法で導入することが出来る。(以下、参照)
個別設定を記述する
boxen
がチームでの利用を前提としている所以がどうかはわからないが、~/our-boxen/our-boxen/modules/people/manifests/
以下に github
のアカウント ID 名でファイル作成して個別に設定したい内容なパッケージを指定出来る。
vim ~/our-boxen/our-boxen/modules/people/manifests/${github_ID}.pp
以下のように記載する。
class people::${github_ID} { include osx::dock::autohide class osx::dock::kill_dashbord{ include osx::dock boxen::osx_defaults { 'kill dashbord': user => $::boxen_user, domain => 'com.apple.dashboard', key => 'mcx-disabled', value => YES, notify => Exec['killall Dock']; } } include thunderbird # via homebrew package { [ 'python' ]: } package { # utility 'Kobito': source => "http://kobito.qiita.com/download/Kobito_v1.8.6.zip", provider => compressed_app; 'GoogleJapaneseInput': source => "https://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg", provider => pkgdmg; }
include
または class
を使って Puppetfile
の中で定義した osx
と thunderbird
を呼び出している。include osx::
又は class osx::
することで Dock
の大きさや位置、マウスのポイントなどのカスタマイズもコードで書くことが出来る。(include
と class
の使い分けについてはこちらでも少し突っ込んで書く)
また、include thunderbird
で thunderbird
がインストールされる。更に github
に登録されていないパッケージなども package
リソースを使ってインストールすることが出来るし、homebrew
を介して python
等のパッケージも導入出来る。
改めて ~/our-boxen/script/boxen --no-fde を実行する
~/our-boxen/script/boxen --no-fde
以下のように結果が出力される。
一通り構築したら以下のようにして、あらかじめ作成したリポジトリに push
する。
git remote rm origin git remote add origin https://github.com/${github_ID}/yourrepo.git git push -u origin master
github
で管理することで Mac
の環境をコードで管理、差分の管理も出来るようになるのはすばらしい!
最後に
- 今更ながら
boxen
を使ってみたけどとても便利に感じた - 「はじめに」にも書いたけどそんなに
Mac
をセットアップする機会は無いが設定の記録としても十分に利用出来る