diary

日記です

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"