This repository contains scripts and Ansible roles to configure macOS 10.15+ for DevOps usage.
This repository is tested against machines enrolled in MDM with a configuration profile that whitelists kexts from the following vendor IDs:
Vendor Name | Team ID | KEXT IDs |
---|---|---|
Oracle | VB5E2TV963 | (ALL) |
VMware | EG7KH642X6 | (ALL) |
EQHXZ8M8AV | com.google.drivefs.filesystems.dfsfuse | |
Intel | Z3L495V9L4 | (ALL) |
If these are not whitelisted ahead of running sudo ./runMe.sh
, you may have to approve kexts as prompts come up,
and then retry the script. This is due to some of the Homebrew casks that get installed.
To configure a machine you must have the following:
- macOS Catalina (10.15.0) or later (This may work on earlier versions but it's untested)
- The account you're using must be an Admin
- Internet access
- Execute
sudo ./runMe.sh
as the user you will use your Mac with.- You will be prompted for your Mac user password several times in Terminal and via GUI.
Just a few things left to do:
- ansible role for gems via rbenv
- Custom Mouse and Trackpad settings
When you execute sudo ./runMe.sh
the following tasks are performed:
- Install XCode Command Line Tools
- Install Homebrew
- Install Ansible using Homebrew
- Run the Ansible playbook mac-devops.yml on the local machine
- Search for and install any available macOS updates
This playbook includes the following roles:
- homebrew
- Configure these taps
- parera10/csshx
- ahrenstein/homebrew-taps
- Install this list of Homebrew packages
- ansible-lint
- awscli
- parera10/csshx/csshx
- docker
- docker-machine
- docker-machine-driver-vmware
- git
- git-crypt
- git-flow
- git-lfs
- gnu-sed
- kubernetes-cli
- minikube
- packer
- qemu
- rbenv
- ruby-build
- saml2aws-duo
- sshfs
- telnet
- terraform
- vfuse
- watch
- wget
- Install this list of Homebrew casks
- aerial
- cryptomator
- docker
- google-drive-file-stream
- gpg-suite
- intellij-idea
- osxfuse
- profilecreator
- vagrant
- vagrant-vmware-utility
- virtualbox
- viscosity
- vmware-fusion
- Configure these taps
- profile-common
- Create the following common directories
~/Code
with 700 permissions~/Protected
with 700 permissions- Clone VagrantBoxes to
~/Vagrant
~/Scratch
with 700 permissions
- Create the following common directories
- dot-files (#TODO)
- Deploys custom ~/.zshrc
- Deploys
~/.csshrc
(Configured to run csshX from a second Thunderbolt display) - Deploys
~/.gitconfig
(PGP signing and LFS with variables prompted at run time) - Deploys
~/.vimrc
- Deploys
~/.ansible.cfg
- Deploys
~/.gnupg/gpg-agent.conf
and~/.gpg-agent-info
(Used for SSH via YubiKey)
- thefuck
- Install thefuck from Homebrew
- Deploy custom thefuck rules
- mac-tweaks
- Ensure current user's screen shots are saved to /Scratch
- Re-enable holding a key down to repeat the character
- Set keyboard tab stops to "All controls"
- Change Notification Center's default notification timeout to 7 seconds
- Disable automatic capitalization, smart dashes, and smart quotes
- Disable autocorrect (Apps like Pages might still have their own)
- Set measurement units to Metric
- Set the temperature unit to Celsius
- Disable .DS_Store files on network volumes
- Deploy a custom DevOps Terminal and set it as the default
We use a few third party tools to make this work. This is the list of tools used:
- Due to the requirement for the password to be entered a few times this is not totally unattended
This project is manually tested in a clean install of macOS in VMware Fusion.