PAST ARTICLE · Apple
OS X Mavericks の初期設定
MacBook Pro Retina 13 インチが届いたので早速、初期設定することにしました。今回は、以前使用していた MacBook Air 13 インチからデータを移せずに新たにインストールすることにしました。
今回は、GitHub から提供されている BOXEN で初期設定することにしました。BOXEN は、構成管理ツールで Puppet をベースに作られています。
- GitHub でアカウントを作成 FileVault の有効化
- Xcode のインストール
- BOXEN 用リポジトリの作成
- 初期設定の作成
- BOXEN の実行
GitHub でアカウント作成
GitHub のアカウントが必要となるので、作成します。SSH の設定など初期設定は完了しておいてください。
FileVault の有効化
FileVault は、使用しなくてもいいです。ただし、ノートブックなので、盗難などのセキュリティインシデントになる可能性もあるので、有効にしています。
Xcode のインストール
App Store から Xcode をインストールし、一度起動しておきます。また、Command Line Tools のみでも BOXEN の実行は可能です。
BOXEN 用リポジトリの作成
GitHub で my-boxen レポジトリを事前に作成しておきます。そして、ターミナルを起動して、BOXEN のソースをコピーして、先ほど作ったリポジトリに追加します。
sudo mkdir -p /opt/boxen
sudo chown sugitaku:staff /opt/boxen
git clone https://github.com/boxen/our-boxen /opt/boxen/repo
cd /opt/boxen/repo
git remote rm origin
git remote add origin git@github.com:Sugitaku/my-boxen.git
git push -u origin masterコミット時のアカウントを変えるときは、git config user.name、git config user.email で設定します。
初期設定の作成
インストールするものは、アプリケーション、Homebrew、フォントで下記のものとなります。
アプリケーション
- Chrome
- Dropbox
- Google 日本語入力
- iTerm2
- LimeChat
- Java
- Skype
- Sophos Antivirus
- Sublime Text 2
- Transmit
- Tunnelblick
- Vagrant
- VirtualBox
Homebrew
- emacs
- tmux
- tig
- zsh
フォント
- Ricty
では、実際に初期設定を作成していきます。外部リソースを使用するときは、Puppetfile に追記します。(https://github.com/boxen)にリソースが公開されているので、利用することができます。
% vi /opt/boxen/repo/Puppetfile
# This file manages Puppet module dependencies.
#
# It works a lot like Bundler. We provide some core modules by
# default. This ensures at least the ability to construct a basic
# environment.
...
github "boxen", "3.3.4"
# Core modules for a basic development environment. You can replace
# some/most of these if you want, but it's not recommended.
github "dnsmasq", "1.0.0"
github "foreman", "1.0.0"
github "gcc", "2.0.1"
github "git", "1.2.5"
github "go", "1.0.0"
github "homebrew", "1.5.1"
github "hub", "1.0.3"
github "inifile", "1.0.0", :repo => "puppetlabs/puppetlabs-inifile"
github "nginx", "1.4.2"
github "nodejs", "3.3.0"
github "openssl", "1.0.0"
github "phantomjs", "2.0.2"
github "pkgconfig", "1.0.0"
github "repository", "2.2.0"
github "ruby", "6.7.2"
github "stdlib", "4.1.0", :repo => "puppetlabs/puppetlabs-stdlib"
github "sudo", "1.0.0"
github "xquartz", "1.1.0"
# Optional/custom modules. There are tons available at
# https://github.com/boxen.
github "chrome", "1.1.2"
github "dropbox", "1.2.0"
github "iterm2", "1.0.6"
github "java", "1.2.0"
github "osx", "2.2.0"
github "skype", "1.0.7"
github "sublime_text_2", "1.1.2"
github "transmit", "1.0.1"
github "tunnelblick", "1.0.4"
github "vagrant", "3.0.2"
github "virtualbox", "1.0.9"続いて、インストールの設定を書いていきます。modules/people/manifests/sugitaku.pp を作成します。作成するファイル名のルールは、.pp となっています。また、クラス名も class people:: となっています。
% vi /opt/boxen/repo/modules/people/manifests/sugitaku.pp
class people::sugitaku {
# os x
include osx::finder::show_all_on_desktop
include osx::dock::autohide
class { 'osx::dock::icon_size':
size => 18
}
include osx::no_network_dsstores
include osx::software_update
# local application
include chrome
include dropbox
include iterm2::stable
include java
include skype
include sublime_text_2
sublime_text_2::package { 'Emmet':
source => 'sergeche/emmet-sublime'
}
include transmit
include tunnelblick::beta
include vagrant
include virtualbox
package {
'GoogleJapaneseInput':
source => "http://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg",
provider => pkgdmg;
'LimeChatForMac':
source => "https://downloads.sourceforge.net/project/limechat/limechat/LimeChat_2.39.tbz",
provider => compressed_app;
'SophosAntivirusForMac':
source => "http://downloads.sophos.com/home-edition/savosx_90_he.zip",
provider => compressed_app;
}
# homebrew
package {
[
'emacs',
'tmux',
'tig',
'zsh',
]:
}
# ricty font
homebrew::tap { 'sanemat/font': }
package { 'sanemat/font/ricty':
require => Homebrew::Tap["sanemat/font"]
}
exec { 'set ricty':
command => "cp -f ${homebrew::config::installdir}/share/fonts/Ricty*.ttf ~/Library/Fonts/ && fc-cache -vf",
require => Package["sanemat/font/ricty"]
}
$home = "/Users/${::boxen_user}"
# dotfile
$dotfiles = "${home}/dotfiles"
repository { $dotfiles:
source => 'Sugitaku/dotfiles',
}
file { "${home}/.zshrc":
ensure => link,
target => "${dotfiles}/.zshrc"
}
file { "${home}/.tmux.conf":
ensure => link,
target => "${dotfiles}/.tmux.conf"
}
file { "${dotfiles}/.emacs.d/conf":
ensure => directory
}
file { "${home}/.emacs.d":
ensure => link,
target => "${dotfiles}/.emacs.d/"
}
osx_chsh { $::luser:
shell => "${boxen::config::homebrewdir}/bin/zsh";
}
}最後に、Node.js と Ruby は古いバージョンがインストールされるので、不要なときはコメントアウトしておきます。
% vi /opt/boxen/repo/manifests/site.pp
require boxen::environment
require homebrew
require gcc
Exec {
...
}
File {
...
}
Package {
...
}
Repository {
...
}
Service {
...
}
...
node default {
...
# node versions
#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::2_0_0
...
}BOXEN の実行
BOXEN を実行して、初期設定を行います。また、FileVault が無効なときは、script/boxen --no-fde とします。
% cd /opt/boxen/repo/
% script/boxenあとは、シェルに下記を追加します。
[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh最後に、変更分をコミットしておけば完了となります。新しくアプリケーションを追加するときは、設定ファイルに追記して、BOXEN を実行すればインストールできます。ただし、App Store でのみ公開されているアプリケーションは、BOXEN では管理できないので、別途 App Store からインストール必要があります。
dotfiles のように、my-boxen もいろいろな方が共有されちるので、どういうアプリケーションを使っているのかな?、どういう設定にされているのかな?ということが、テキストでわかるのが非常にいい感じです。また今回、初期設定を久し振りにしたので、どのように設定したのか忘れているところがあったので、やっぱりテキストで管理されていることは、とても便利でした。
my-boxen (https://github.com/Sugitaku/my-boxen)
dotfiles (https://github.com/Sugitaku/dotfiles)