LoginSignup
42
42

More than 5 years have passed since last update.

Ansible&Homebrew&homesickでMac開発環境構築

Last updated at Posted at 2015-04-29

はじめに

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/
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はこんな感じになりました。

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
42
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
42