boxenを使ってMacのセットアップ
気になってたので使ってみた。
Boxen (redirecting)
いくつか記事を参考にやろうとしたけど、どうやらversion上がって、boxenのinstall方法(というかinstall先の構成か)が変わったらしく、とりあえずboxenをuninstallしてやり直すところから。
$ /opt/boxen/repo/script/nuke --all --force
気を取り直して、セットアップ。
事前準備として、Xcode, Command Line Toolsをinstallしておく。
Xcode開発環境のインストール
boxenをinstallすると、自前のhomebrewを /opt/boxen/homebrew/bin/brew に持つので、既存のhomebrewと共存させたい場合は少しめんどくさそうだし注意。homebrewで入れられるやつはboxen経由で入れられるので、基本的にboxenの持ってるbrewで全部管理するようにしようかなと。
あとは、boxenはデフォルトでディスクの暗号化を要求するので、それも設定する。
$ sudo mkdir -p /opt/boxen $ sudo chown $USER:admin /opt/boxen $ git clone git://github.com/boxen/our-boxen /opt/boxen/repo $ echo '[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh' >> ~/.bashrc $ source /opt/boxen/env.sh # システム環境設定→セキュリティとプライバシー→FileVaultを有効に $ boxen
これで一通り動く。
boxenで必要なものをいれてから、はじめてのvagrantまで。
Vagrant(Vagrant by HashiCorp)で遊ぼうと思い立ったのだけど、せっかくboxen入れたので、必要なものをとりあえずboxen経由で入れてみようかと。
ということで、まずboxen経由でvirtualboxとVagrantをinstall
# ~/src/our-boxen/Puppetfileに追記 # 現在のところ、boxen入れると/opt/boxen/repoのシンボリックリンクが~/src以下に作られる github "virthualbox", "1.0.2" # ~/src/our-boxen/modules/people/manifests/{github-user-name}.pp class people::{github-user-name} { include virtualbox package { 'Vagrant1.2.2': provider => 'pkgdmg', source => 'http://files.vagrantup.com/packages/7e400d00a3c5a0fdf2809c8b5001a035415a607b/Vagrant-1.2.2.dmg' } } # 上記のものをinstall $ boxen
dmg指定でVagrantの現時点で最新1.2.2をいれてるのだけど、latestのaliasがあると便利だなぁ。あと、boxenで入れたアプリの削除とかアップデートとかどうなってるんだろうというのが気になったので、機会あったらコード追ってみよう。
ここまでで必要なものはそろったので、あとはVagrantを試してみる。いろいろやりたいけど、とりあえずhello worldまで。
# box追加 $ vagrant box add centos6.4-x86-minimal http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box # 初期化。 $ vagrant init # できたVagrantfile編集してconfig.vm.box = "centos6.4-x86-minimal"に。 # instance立ち上げ $ vagrant up # とりあえずつないでみる $ vagrant ssh
こんな感じでカジュアルにvm立てれると。便利。
Vagrantfileとかをgitとかで管理するときに、boxファイル自体は同管理するのがいいんだろ。これは後で調べよう。
複数台構成をVagrantで立ててみたり、Vagrantで立てたサーバをchefでセットアップしてみたり、capistranoとかでそこにdeployしてみたりとかはこれから試してみるつもり。あと、途中までセットアップしたboxを配る、みたいなのとかも。
【追記1】
config.vm.box_urlが指定で来て、ローカルにboxがない場合はそこ見にいってくれるっぽい。
【追記2】
Vagrantfileのあるディレクトリが/vagrantとしてマウントされていて、ファイルが共有される。地味に便利っぽい。
boxenでログインシェルをzshにする
osx_chshを使うのだけど、このResourceはpuppet-osxに依存してるので、それも追加しておく。
dotfilesちゃんと管理して.zshrcとかもよしなにしたいけど、それはまたそのうち。
# ~/src/our-boxen/Puppetfileに追記 github "osx", "1.0.0" # ~/src/our-boxen/modules/people/manifests/{github-user-name}.pp class people::{github-user-name} { package { 'zsh': install_options => [ '--disable-etcdir', ]; } file_line { 'add zsh to /etc/shells': path => '/etc/shells', line => "${boxen::config::homebrewdir}/bin/zsh", require => Package['zsh'], before => Osx_chsh[$::luser]; } osx_chsh { $::luser: shell => "${boxen::config::homebrewdir}/bin/zsh"; } # 上記をinstall $ boxen