🚀 macOS開発環境を一括でセットアップするAnsibleプレイブック
git clone https://github.com/neco-nico/ansible-devbox-setup.git
cd ansible-devbox-setup
# テスト実行後にセットアップ
make setup
# 変更を反映
source ~/.zshrc
# または直接実行(Python 3が必要)
ansible-galaxy collection install -r requirements.yml
ansible-playbook playbooks/setup.yml- Homebrew - macOS用パッケージマネージャー
- 開発ツール: git, tig, wget, gh (GitHub CLI), fzf, ripgrep
- Node.js環境: volta (Node.jsバージョン管理), Node.js, yarn
- その他: Ansible, Git用のzshエイリアス
- ✅ 冪等性: 何度実行しても安全
- ✅ Dry Run: 事前に変更内容を確認可能 (
--check) - ✅ 自動テスト: Moleculeテストでセットアップ結果を自動検証
| セットアップ実行例 | 冪等性確認例 |
|---|---|
![]() |
![]() |
make help # ヘルプ表示
make test # 全テスト実行(lint + syntax + check)
make setup # テスト後にセットアップ実行make linting # YAML・Ansible Lint
make syntax # 構文チェック
make check # Dry run(事前確認)| 項目 | 所要時間 | 備考 |
|---|---|---|
| 初回セットアップ | 41.813秒 | ネットワーク速度や既存インストール状況に依存 |
| 再実行(冪等性確認) | 18.558秒 | 変更がない場合は短時間で完了 |
ansible-devbox-setup/
├── site.yml # Ansibleエントリーポイント
├── playbooks/ # Ansibleプレイブック
│ └── setup.yml # メインセットアッププレイブック
├── ansible.cfg # Ansible設定
├── requirements.yml # Ansible collections依存関係
├── roles/ # Ansibleロール
│ ├── common/ # 共通設定(Homebrew、Ansible、開発ツール)
│ └── git/ # Git関連設定
│ └── files/ # Gitエイリアス用の設定ファイル
└── docs/ # デモ画像などのメディア
- Gitロールは
roles/git/files/.zshrcを~/.zshrc.git-configにコピーし、~/.zshrcから自動的に読み込みます - Gitエイリアスを変更したい場合は、リポジトリ内の
roles/git/files/.zshrcを編集し、再度プレイブックを実行してください(再実行時に常に上書きされます) - 手元で一時的に変更したい場合は、セットアップ後に
~/.zshrc.git-configを直接編集しても構いませんが、再度プレイブックを実行するとリポジトリの内容で上書きされる点に注意してください - セットアップ直後のシェルでエイリアスを使うには
source ~/.zshrcを実行するか、新しいターミナル(zsh)を開き直してください
- macOS: Apple Silicon (M1/M2/M3) または Intel
- シェル: zsh(macOSデフォルト)
- 前提条件: Python 3(macOSに標準搭載)
- curl|bash回避: セキュリティのため
curl|bashパターンは使用しません - パッケージマネージャー優先: Homebrew等の署名済みパッケージを使用
- チェックサム検証: 外部バイナリはパッケージマネージャー経由で検証済み
- 非root実行: 可能な限りユーザー権限で実行
- 冪等性保証: 何度実行しても副作用なし、安全な繰り返し実行
- 事前確認:
make checkで実際の実行前にテスト可能 - 外部スクリプト排除: 全ロジックがAnsibleプレイブック内に含有
# 機密データにはAnsible Vaultを使用
ansible-vault create secret_vars.yml
ansible-vault edit secret_vars.yml
# Vault付きで実行
ansible-playbook playbooks/setup.yml --ask-vault-pass# 実行前に変更内容を確認
make check # Dry run で予定変更を表示
# セットアップ後の検証(Moleculeテスト)
cd roles/common && molecule test
cd roles/git && molecule test2回目以降の再実行では、すべてのタスクが changed: 0 となり、システム状態が変化しないことを確認できます。
$ ansible-playbook playbooks/setup.yml
PLAY RECAP ******************************************************************************************************
localhost : ok=25 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
