This repository contains an Ansible configuration for setting up a Mac from scratch. It's primary purpose is setting up a new Mac from scratch, but I endeavor to also use it for adding new software as I go so that it remains up to date. At the moment it's being used for setting up M1 based Macs running MacOS Monterey.
There's a simple shell script in bin/bootstrap
which will perform the initial steps of:
- Installing Ansible
- Fetching required Ansible roles and collections
And then runs the main playbook ansible_osx.yml
.
For future updates, bin/apply
can be used to run just the Ansible playbook without the setup commands.
It's important to note that this isn't designed to be particularly robust, particularly when it comes to required env vars, it may be required to run this. Then close the terminal and open it again and re-run and then repeat this process a few times.
The easiest way to understand what's installed is to read the contents of ansible_osx.yml
, this configuration is fairly specific to the range of development I do personally, but may serve as a useful starting point for others. The core components are:
- ZSH + Oh My Zsh as the primary shell
- Homebrew for package management
- ASDF for version management (along with plugins and default versions for ruby, python, javascript, elixir and erlang)
- VSCode + default plugins and configuration
- Lots of other tools and utilities
Running this ansible playbook against a machine which has manually installed packages may result in errors - even though it can see the package is installed. This is something I need to tidy and improve the failure logic. Ideally this should be run against a clean install mac. For the mean time let brew and ASDF manage your packages which would normally be installed with this repo.
Everything can be customised by editing ansible_osx.yml
.