This repo contains an Ansible role that configures Matthew Ahrenstein's personal preferences and settings on a new out-of-the-box Mac.
This drastically speeds up how long it takes to setup a new Mac for me.
Right now this Ansible role is tested against Sonoma on Apple Silicon Macs only.
This repository is tested against machines enrolled in MDM via DEP with a configuration profile that allowlists system extensions from the following vendor IDs:
Vendor Name | Team ID | KEXT IDs |
---|---|---|
VMware | EG7KH642X6 | (ALL) |
Rogue Amoeba | 7266XEXAPM | /Library/Audio/Plug-Ins/HAL/ACE.driver |
If these are not allowlisted ahead of running this role, you may have to approve system extensions as prompts come up. This is due to some of the Homebrew casks that get installed.
Additionally, on Apple Silicon computers you must enable Reduced Security ahead of running this to allow the Rogue Amoeba apps to install.
To configure a machine you must have the following:
- macOS Monterey (14.0) or later (This may work on earlier versions, but only the latest is tested)
- The account you're using must be an Admin
- Internet access
- Homebrew pre-installed
- Ansible pre-installed via Homebrew
- This role is not meant to be run against remote machines
- This role will prompt for the logged in user's password in order to use sudo for the Homebrew steps
- Logging out after the role completes is recommended as some settings don't apply until a new login occurs
There are a few variables defined in this role
The following variables should be changed as they default to my identity:
full_name
- Your first and last nameemail
- Your email addressgpg_short_id
- Your GPG key's short ID
Changing the following variables is less required but are still very personal in taste:
homebrew_taps
- Change the default taps installedhomebrew_packages
- Change the default brews that are installedhomebrew_casks
- Change the default casks that are installedlicenses
- Change this totrue
to run the licenses tasks (You will also need to populate the below licensing variables)
Licensing variables:
loopback_license
andloopback_name
- Licensing info for Rogue Amoeba's Loopbackaudiohijack_license
andaudiohijack_name
- Licensing info for Rogue Amoeba's Audio Hijacksoundsource_license
andsoundsource_name
- Licensing info for Rogue Amoeba's SoundSourcefission_license
andfission_name
- - Licensing info for Rogue Amoeba's Fissionfarrago_license
andfarrago_name
- Licensing info for Rogue Amoeba's Farragoviscosity_license
- Licensing info for Viscosity VPN Clientcommandq_license
- Licensing info for CommandQ (The format isemail,license key
encoded in base64 with no new line)
To run this role against the local machine simply run ansible-playbook playbook-local.yml -i local.inventory
To go from zero (no Homebrew or Ansible) to 100% you can optionally run something like devops-mac which uses this role.
This role is manually tested against VMs.
TESTING.md contains details and instructions for testing.