##はじめに
MacBook Proを新しく購入したので、これを機に開発環境の整備と構築自動化についてまとめました。
##環境
MacOSX Yosemite 10.10.3
##とても参考にした記事
Mac の開発環境構築を自動化する (2015 年初旬編) - t-wadaのブログ
HomebrewとAnsibleでMacの開発環境構築を自動化する | mawatari.jp
GitHub - homesick を使って dotfiles を管理する! - Qiita
GitHub と homesick を使って複数 Mac 間で dotfiles を同期する | Developers.IO
##事前インストールもろもろ
-
XCodeインストール(Mac App Store)
-
XCode license同意
sudo xcodebuild -license
-
Xcode CommandLineToolインストール
xcode-select --install
-
Homebrewインストール
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
brew環境整備
brew doctor
brew update
- Ansibleインストール
brew install python
brew install ansible
以上で、必要なもろもろのインストール等が完了ですm(_ _)m
##自動化準備
- 作業ディレクトリ作成
cd ~
mkdir .macbook-provisioning
cd .macbook-provisioning/
-
inventoryファイル作成
echo 'localhost' > hosts
-
playbookファイル作成
localhost.ymlにAnsibleで実行させるプロビジョニング内容を記述。
https://github.com/massa142/mac-provisioning -
Homebrew Caskオプションの設定
*詳しい説明はHomebrewとAnsibleでMacの開発環境構築を自動化する | mawatari.jpでされています。
echo 'export HOMEBREW_CASK_OPTS="--appdir=/Applications"' >> ~/.bash_profile
source ~/.bash_profile
これで準備OK!(´-ω-`)
##自動化開始
-
プロビジョニング実行!
ansible-playbook -i hosts -vv localhost.yml
-
↑でインストールされたhomesickを用いて、githubで管理しているdotfilesを適用
https://github.com/massa142/dotfiles
sudo homesick clone massa142/dotfiles
cd ~
homesick symlink dotfiles
環境構築完了です╭( ・ㅂ・)و ̑̑ グッ !
##ちなみに
今回作成したlocalhost.ymlはこんな感じになりました。
- hosts: localhost
connection: local
gather_facts: no
sudo: no
vars:
homebrew_taps:
- caskroom/cask
- motemen/ghq
- homebrew/php
- sanemat/font
homebrew_packages:
- { name: readline }
- { name: openssl }
- { name: openssl, state: linked, install_options: force }
- { name: python }
- { name: python3 }
- { name: ansible }
- { name: heroku-toolbelt }
- { name: git }
- { name: hub }
- { name: zsh, install_options: disable-etcdir }
- { name: zsh-completions }
- { name: wget }
- { name: curl }
- { name: nkf }
- { name: peco }
- { name: rbenv }
- { name: ruby-build }
- { name: mysql }
- { name: sqlite }
- { name: redis }
- { name: imagemagick }
# - { name: maven }
- { name: macvim, options: 'override-system-vim', 'with-lua', 'with-cscope' }
- { name: ghq }
- { name: php56 }
- { name: php56-xdebug }
- { name: phpenv }
- { name: automake }
- { name: pkg-config }
homebrew_cask_packages:
- { name: adobe-reader }
- { name: alfred }
- { name: android-studio }
- { name: appcleaner }
- { name: base }
- { name: cyberduck }
- { name: coteditor }
- { name: duet }
- { name: evernote }
- { name: dash }
- { name: dropbox }
- { name: firefox }
- { name: fluid }
- { name: flux }
- { name: genymotion }
- { name: github }
- { name: google-chrome }
- { name: google-japanese-ime }
- { name: gyazo }
- { name: hipchat }
# - { name: hoster }
- { name: intellij-idea }
- { name: iterm2 }
- { name: java }
- { name: karabiner }
- { name: kindle }
- { name: kobito }
- { name: licecap }
- { name: mysqlworkbench }
- { name: pycharm }
- { name: seil }
- { name: sequel-pro }
- { name: skype }
- { name: slack }
- { name: sourcetree }
- { name: sublime-text }
- { name: seil }
- { name: xtrafinder }
- { name: vagrant }
- { name: virtualbox }
- { name: 1password }
gem_packages:
- { name: homesick }
tasks:
- name: homebrew の tap リポジトリを追加
homebrew_tap: tap={{ item }} state=present
with_items: homebrew_taps
- name: homebrew をアップデート
homebrew: update_homebrew=yes
# brew
- name: brew パッケージをインストール
homebrew: >
name={{ item.name }}
state={{ item.state | default('latest') }}
install_options={{
item.install_options | default() | join(',')
if item.install_options is not string
else item.install_options
}}
with_items: homebrew_packages
register: brew_result
- name: brew パッケージの情報保存先ディレクトリを作成
file: path=brew_info state=directory
- name: brew パッケージの情報を保存
shell: brew info {{ item }} > brew_info/{{ item }}
with_items: brew_result.results | selectattr('changed') | map(attribute='item') | map(attribute='name') | list
# cask
- name: homebrew-cask のインストール
homebrew: name=brew-cask state=latest
- name: cask パッケージをインストール
homebrew_cask: name={{ item.name }} state={{ item.state|default('installed') }}
with_items: homebrew_cask_packages
register: cask_result
- name: cask パッケージの情報保存先ディレクトリを作成
file: path=cask_info state=directory
- name: cask パッケージの情報を保存
shell: brew cask info {{ item }} > cask_info/{{ item }}
with_items: cask_result.results | selectattr('changed') | map(attribute='item') | map(attribute='name') | list
# gem
- name: gem パッケージのインストール
gem: name={{ item.name }} state={{ item.state | default('latest') }}
with_items: gem_packages
# nodebrew
- name: nodebrew のインストール
shell: curl -L git.io/nodebrew | perl - setup
# oh-my-zsh
- name: oh-my-zsh のインストール
shell: curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
args:
creates: ~/.oh-my-zsh/
# Ricty
- name: xquartz のインストール (for Ricty)
homebrew_cask: name=xquartz
- name: fontforge のインストール (for Ricty)
homebrew: name=fontforge
- name: Ricty のインストール
homebrew: name=ricty
- name: 生成されたフォントファイルをコピー
shell: cp -f $(brew --cellar ricty)/*/share/fonts/Ricty*.ttf ~/Library/Fonts/
args:
creates: ~/Library/Fonts/Ricty-Bold.ttf
notify: run fc-cache
# vim-neobundle
- name: mkdir vim-neobundle dir
file: path=~/.vim/bundle state=directory
notify: install neobundle
handlers:
- name: run fc-cache
shell: fc-cache -vf
- name: install neobundle
command: git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim