Macbookクリーンインストールでやった事（Homebrew+Ansible）

クリーンインストールでやった事のメモです。

### クリーンインストール 
必要なファイル等はDropboxなどに退避する。

 1. 電源起動時に、command + Rを押しっぱなしにする
 2. OS X ユーティリティからディスクユーティリティを選択
 3. ディスクを消去する
 4. OS X ユーティリティからOS Xを再インストールするを選択
 5. ソフトウェア使用許諾契約に同意する
 6. インストール先のディスクを選択してインストール
 7. AppleIDとパスワードを入力
 8. OSダウンロードが始まり、その後インストールが開始されるので放置
 9. キーボード入力環境はUSなのでUSを選択
 10. 今は情報の転送はしないを選択
 11. Macを探すは許可する
 12. コンピュータアカウントを作成（iCloudアカウントは使わなかった）
 13. iCloudキーチェーンを設定するを選択
 14. FileVaultディスク暗号化を有効にする
 15. 診断と使用状況はチェックしてない

クリーンインストールが終わったらApp storeからシステムアップデートをかける。

###システム環境設定
####Dock
 - サイズを小さくする
 - 拡大にチェック。まんなかぐらい
 - 画面上の位置を左に変える
 - Dockを自動的に隠す／表示にチェック

####セキュリティとプライバシー
 - スリープとスクリーンセーバの解除を15分後に

####キーボード
 - キーのリピートを速く
 - リピート入力時間を短く
 - F1,F2などのすべてのキーを標準のファンクション
キーとして使用にチェック
 - 修飾キーからCaps Lockキーを変える→Controlキーにした
 - 入力ソースはUSと日本語で
 - メニューバーに入力メニューを表示にチェック

####トラックパッド
 - タップでクリックにチェック
 - 軌跡の速さを速くする

####サウンド
 - メニューバーに音量を表示にチェック

####iCloud
 - iCloud、キーチェーン、Macを探すにチェックのみ

####共有
 - コンピュータ名をかわいいのに変える

####日付のオプション
 - 曜日を表示
 - 日付を表示


###Xcodeをインストール
App storeからXcodeをインストール。結構時間がかかる。




### Homebrewのインストール
以下の手順は下記を参考にさせていただきました。
[Mac の開発環境構築を自動化する (2015 年初旬編) - t-wadaのブログ](http://t-wada.hatenablog.jp/entry/mac-provisioning-by-ansible)
[HomebrewとAnsibleでMacの開発環境構築を自動化する | mawatari.jp](http://mawatari.jp/archives/mac-provisioning-by-homebrew-and-ansible)


Xcodeのライセンス認証。

````Bash
sudo xcodebuild -license
````

Homebrewをインストールする

````Bash
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
````

するとGithubへのSSLで失敗。

````Bash
fatal: unable to access 'https://github.com/Homebrew/homebrew/': Server aborted the SSL handshake
Failed during: git fetch origin master:refs/remotes/origin/master -n
```` 

Githubに繋いでいなかったので、ブラウザからhttps接続して証明書もらう。
そのあと再トライ・・・が失敗。

````Bash
It appears Homebrew is already installed. If your intent is to reinstall you
should do the following before running this installer again:
    rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
````

言われた通り.gitを消してもう一回。

````Bash
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1

Press RETURN to continue or any other key to abort
==> Downloading and installing Homebrew...
remote: Counting objects: 239353, done.
Receiving objects:  21% (52392/239353), 12.41 MiB | 3.00 KiB/s     
error: RPC failed; result=18, HTTP code = 200 MiB | 1024 bytes/s   
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Failed during: git fetch origin master:refs/remotes/origin/master -n
````

何故か途中で止まる。ちょうどGithubが不調という話があり、その影響か？
何回か繰り返し実行する事でできました。

事前に入れるやつをHomebrewでインストール。

````Bash
brew install python
brew install ansible
brew install caskroom/cask/brew-cask
````

###Ansibleの実行
プロビジョニング用のディレクトリ作成。

````Bash
mkdir .macbook-provisioning
cd .macbook-provisioning/
````

ansible用のinventoryファイル作成

````Bash
echo 'localhost' > hosts
````

AnsibleのPlaybookを作成(名前は習ってlocalhost.ymlにしました)

````Bash
- hosts: localhost
  connection: local
  gather_facts: no
  sudo: no
  vars:
    homebrew_taps:
      - homebrew/binary
      - homebrew/dupes
      - caskroom/cask
      - sanemat/font
    homebrew_packages:
      - { name: readline }
      - { name: openssl }
      - { name: openssl, state: linked, install_options: force }
      - { name: python }
      - { name: ansible }
      - { name: git }
      - { name: zsh, install_options: disable-etcdir } #
      - { name: wget }
      - { name: curl }
      - { name: tree }
      - { name: go }
      - { name: rbenv }
      - { name: ruby-build }
      - { name: vim }
    homebrew_cask_packages:
      - { name: iterm2 }
      - { name: dropbox }
      - { name: firefox }
      - { name: google-chrome }
      - { name: adobe-reader }
      - { name: skype }
      - { name: slack }
      - { name: kobito }
      - { name: vagrant }
      - { name: virtualbox }

  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

    # 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

  handlers:
    - name: run fc-cache
      shell: fc-cache -vf
````

Homebrew Caskオプションを設定

````Bash
echo 'export HOMEBREW_CASK_OPTS="--appdir=/Applications"' >> ~/.bash_profile
source ~/.bash_profile
````

作成したPlaybookを実行する

````Bash
ansible-playbook -i hosts -vv localhost.yml
````

bashからzshへの変更
HomeBrew経由のzshパスを追加。

````Bash
sudo vi /etc/shells
````

/usr/local/bin/zshを追記したらchshでログインシェルを変更する

````Bash
chsh -s /usr/local/bin/zsh
````

これで取り敢えず完了。
細かい所は抜けてる気がするので、いじりながら直していきます。

春がきました。