dotfilesと連携するMacの環境構築ブートストラップスクリプトをAnsibleで書いた。
転職とリモートワークの諸事情で、一時期、私物MacBook Airで業務をこなしていたのですが、業務ツールのインストールでMacの環境が汚れてしまい、再インストールの機運が高まった&Ansibleのお勉強も兼ねて自動構築スクリプトをAnsibleで書いてみることにしました。
インターネットに存在している環境構築スクリプトはだいたい環境構築するために必要なツールと構築内容が1つのスクリプト/レポジトリに混ぜられており流用性が低かったので分離することに。
成果物
- Dash (環境構築するためのツールのインストール部分) github.com
- dotfiles (構築内容を記載している部分) github.com dotfilesはよくある設定管理のレポジトリです。
使い方
Dash 単体で実行する場合
Dash単体で実行した場合、Macで環境構築するために必要なツールのみをインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/senyoltw/dash/master/bin/bootstrap)"
- インストールされるもの
- git
- Ansible
- Homebrew
- Homebrew-cask
- Homebrew-bundle
- mas-cli
- Dashレポジトリを
~/.dash
にclone
シェルスクリプト部分、Ansible-Playbook部分ともに冪等性を意識して書いてあるので何度実行しても大丈夫。
環境構築をしたい場合は、dotfiles側に記述するようにします。
dotfilesと連携させてDashを実行する場合
dotfilesとは->ようこそdotfilesの世界へ - Qiita
dotfilesレポジトリと連携する場合はブートストラップスクリプトを叩く前に$DOTFILES_URL
にレポジトリURLを代入、もしくは~/dotfiles
にレポジトリをcloneすることで、Dashスクリプトが前述の環境構築ツールのインストール後に続けて環境構築をしてくれます。
# exportの代わりに git clone https://github.com/senyoltw/dotfiles ~/dotfiles でも良い export DOTFILES_URL=https://github.com/senyoltw/dotfiles /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/senyoltw/dash/master/bin/bootstrap)"
- 追加でやってくれること
~/dotfiles
が存在しない場合、dotfilesレポジトリを~/dotfiles
にclone~/dotfiles/osx/playbook.yml
がある場合、Ansible-Playbookとして実行(好きなように書いてください)~/dotfiles/osx/Brewfile
がある場合、Brewfileに記述されてるアプリをhomebrew、cask、mac-cli から自動でインストール。
※Brewfileはbrew bundle dump
で出力できます。
インストールした環境をアップデートしたいとき
~/.dash/bin/update
を実行してください。インストールの際に使用したplaybookを再度実行するシェルスクリプトです。
特にエイリアスなどは設定してないのでお好きなエイリアスを設定してください。
(ブートストラップスクリプトを最初から実行しても冪等性が保証されるよう書いてあるのでそっちでも良いです。が、無駄な部分もあるのでこちらをオススメ)
ということで、とりあえず環境構築を1から始めたいなという方でもこれを起点にして環境構築が作りやすい環境ができるようになっています。
まず、BrewfileだけでもdotfilesにおいておくとMacのセットアップが楽になるのでやってみると良いのではないでしょうか。
謝辞
ベースとなったレポジトリとして、IFTTT/dash というIFTTTがgithubにあげていた自動構築ツールが素となっています。
dotfilesは以下の記事とgithubにある様々なdotfilesレポジトリを参考にしました。