概要
brew bundle Brewfile
の代替を探していたところ、
osxc
というものがありましたので、導入してみました。
Ansible
を利用して Homebrew
を操作しているツールです。
Ansible
の要領で Mac のセットアップを記述できますので、
brew bundle Brewfile
ではできなかった設定も施すことができます1。
導入
osxc/starter の README によると、
公式ページで紹介されているやり方は古くなっているようですので、
README に記載されている手順を参考に導入します(一部改変しています)。
-
XCode Command-Line tools
導入xcode-select --install
上記のやり方でインストールできない場合、以下の対応を行います。
1) Open Xcode app. 2) Click on Xcode > Open Developer Tools > More Developers Tools. 3) Download Command Line Tools for your Mac OS X version.
あるいは、 Xcode を介さずデベロッパポータルから直接インストールします。
こちらの手順であれば、 Xcode のインストールは不要です。https://developer.apple.com/downloads/index.action Downloads for Apple Developers -> Command Line Tools
-
Homebrew
導入ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew doctor brew -v brew update
-
Ansible
導入brew install ansible
-
osxc
導入git clone https://github.com/osxc/starter.git ~/osxc cd ~/osxc ansible-galaxy install -r requirements.yml
-
インストール設定調整
インストールしたいツール・行いたい処理に関して、
既に記述されているサンプルを参考に設定を行います。vi configuarion.yml vi install.yml
-
osxc
実行ansible-playbook desktop.yml
2台目以降の PC であれば、
osxc
は自分用にカスタマイズしたリポジトリからクローンする形が良さそうです。
GitHub 上で Fork したのであれば、そのリポジトリを使います。
ディレクトリ構造
.
├── LICENSE
├── README.md
├── ansible.cfg
├── configuration.yml
├── desktop.yml
├── dotfiles
│ ├── tmux.conf.local
│ ├── vimrc.bundles.local
│ ├── vimrc.local
│ └── zshrc
├── install.yml
├── inventory
├── requirements.yml
└── roles
├── osxc.common-env
├── osxc.homebrew
├── osxc.packages
└── osxc.repository
ワークフロー
インストールする物に関しては install.yml
に、
インストール後の設定ファイル設置などは configuration.yml
に記述します。
desktop.yml
から install.yml
, configuration.yml
の順に呼び出している形で、
ansible-playbook desktop.yml
として実行します。
慣れない内は、ansible-playbook install.yml
として、
install.yml
のみを実行する形でも良さそうです。
それだけでも brew bundle Brewfile
でやっていたことはカバーできます。
課題
- 結局、1~5までは手作業を強いられますね…。
- 管理者権限が求められる際、パスワード入力待ち状態になります。
処理を走らせて放置とはいかず、定期的に様子をみないとだめみたいですね…。 -
brew install
時に指定するオプションをサポートするには、
osxc/packages の更新が必要です。
事前に用意した.vimrcをVimインストール後に設置する、などです。
osxc側でHomebrewは入れてくれるのですが、
AnsibleもHomebrewで管理させたかったため、先にHomebrewを導入しました。