boxenを導入した話
OSXの環境設定を自動化出来るツール。puppetベースだけどchefこねくり回すよりは個人で使うには手軽で良かったです。 XCode入れればとりあえず動かせるし、our-boxenベースにすればrbenvとかnvm(nodenvもいける)とかhomebrewがなんか勝手に入る。便利。
OSXアプリケーションのインストールもAppStoreのもの以外はだいたい全部自動化出来ました。便利。
便利です。
手順
- XCode(& Command Line Tools)を入れる
boxen用にディレクトリ掘る
sudo mkdir -p /opt/boxen sudo chown $USER:admin /opt/boxen
our-boxen(boxenテンプレート) mkdir ~/src && cd ~/src && git clone git://github.com/boxen/our-boxen.git our-boxen
- Puppetfileに使いたいpuppetのgemをモリモリ並べる
- ~/src/our-boxen/modules/people/manifests/$USER.ppを書く
- ~/src/our-boxen/script/boxen を実行
設定
うちで使ってるのは以下みたいな感じです
~/src/our-boxen/modules/people/manifests/trapezoid.pp
class people::trapezoid { #includes include skype include iterm2::stable include chrome include firefox include virtualbox include flux include rubymine include sourcetree include dropbox include sublime_text_2 include ctags include java class { 'intellij': edition => 'ultimate', } #include osx package { [ 'tmux', 'tig', ]: } package { 'ForkLift': source => "http://download.binarynights.com/ForkLift2.5.4.zip", provider => compressed_app; 'Mou': source => "http://mouapp.com/download/Mou.zip", provider => compressed_app; 'GoogleJapaneseInput': source => "http://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg", provider => pkgdmg; 'RemoteDesktopConnectionClient': source => "http://download.microsoft.com/download/C/F/0/CF0AE39A-3307-4D39-9D50-58E699C91B2F/RDC_2.1.1_ALL.dmg", provider => pkgdmg; } 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"; } $home = "/Users/${::luser}" $src = "${home}/src" $dotfiles = "${src}/dotfiles" $oh_my_zsh = "${home}/.oh-my-zsh" $oh_my_zsh_custom = "${home}/.oh-my-zsh-custom" $dust = "${home}/.dust" file {$dust: ensure => directory } $dust_vim = "${dust}/vim" file {$dust_vim: ensure => directory } $dust_vim_swap = "${dust_vim}/swap" file {$dust_vim_swap: ensure => directory } $dust_vim_backup = "${dust_vim}/backup" file {$dust_vim_backup: ensure => directory } repository { $dotfiles: source => "trapezoid/dotfiles", require => File[$src] } exec { "ruby ${dotfiles}/symlink.rb": cwd => $dotfiles, creates => "${home}/.zshrc", require => Repository[$dotfiles], } repository { $oh_my_zsh_custom: source => "trapezoid/oh-my-zsh-custom", require => File[$src] } $sublimetext2_packages = "${src}/sublimetext2-packages" repository { $sublimetext2_packages: source => "trapezoid/sublimetext2_packages", require => File[$src] } exec { "ruby ${sublimetext2_packages}/symlink.rb": cwd => $sublimetext2_packages, creates => "${home}/Library/Application Support/Sublime Text 2/Installed Packages/Package Control.sublime-package", require => Repository[$sublimetext2_packages], } }
Puppetfile
# ..省略 # Optional/custom modules. There are tons available at # https://github.com/boxen. github "chrome", "1.1.0" github "rubymine", "1.0.1" github "iterm2", "1.0.2" github "firefox", "1.0.5" github "skype", "1.0.2" github "intellij", "1.1.3" github "vlc", "1.0.1" github "flux", "0.0.1" github "osx", "1.0.0" github "ctags", "1.0.0" github "dropbox", "1.1.0" github "java", "1.0.6" github "virtualbox", "1.0.2" github "sourcetree", "0.0.2" github "sublime_text_2","1.1.0"