Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gperdomor/macos-ansible
Provision your Mac with Ansible
https://github.com/gperdomor/macos-ansible
ansible macos playbook
Last synced: about 1 month ago
JSON representation
Provision your Mac with Ansible
- Host: GitHub
- URL: https://github.com/gperdomor/macos-ansible
- Owner: gperdomor
- License: mit
- Created: 2017-08-02T02:23:47.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2022-10-25T18:22:53.000Z (about 2 years ago)
- Last Synced: 2024-05-01T16:49:07.928Z (7 months ago)
- Topics: ansible, macos, playbook
- Language: Jinja
- Size: 133 KB
- Stars: 16
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![macOS](https://github.com/gperdomor/macOS-ansible/actions/workflows/ci.yml/badge.svg)](https://github.com/gperdomor/macOS-ansible/actions/workflows/ci.yml)
# Ansible MacOS Playbook
This playbook installs and configures most of the software I use on my Mac for web and software development.
## Installation
1. Ensure Apple's command line tools are installed (xcode-select --install to launch the installer).
2. [Install Ansible](https://docs.ansible.com/ansible/latest/installation_guide/index.html):
1. Run the following command to add Python 3 to your $PATH: `export PATH="$HOME/Library/Python/3.8/bin:/opt/homebrew/bin:$PATH"`
2. Upgrade Pip: `sudo pip3 install --upgrade pip`
3. Install Ansible: `pip3 install ansible`
3. Clone or download this repository to your local drive.
4. Run `ansible-galaxy install -r requirements.yml` inside this directory to install required Ansible roles.
5. Run `ansible-playbook main.yml --ask-become-pass` inside this directory. Enter your macOS account password when prompted for the 'BECOME' password.> Note: If some Homebrew commands fail, you might need to agree to Xcode's license or fix some other Brew issue. Run `brew doctor` to see if this is the case.
### Use with a remote Mac
You can use this playbook to manage other Macs as well; the playbook doesn't even need to be run from a Mac at all! If you want to manage a remote Mac, either another Mac on your network, or a hosted Mac like the ones from [MacStadium](https://www.macstadium.com), you just need to make sure you can connect to it with SSH:
1. (On the Mac you want to connect to:) Go to System Preferences > Sharing.
2. Enable 'Remote Login'.> You can also enable remote login on the command line:
>
> sudo systemsetup -setremotelogin onThen edit the `inventory.yml` file in this repository and change the config to something like this:
```yaml
---
machines:
hosts:
[ip address or hostname of mac]:
ansible_user: [mac ssh username]
```If you need to supply an SSH password (if you don't use SSH keys), make sure to pass the `--ask-pass` parameter to the `ansible-playbook` command.
### Running a specific set of tagged tasks
You can filter which part of the provisioning process to run by specifying a set of tags using `ansible-playbook`'s `--tags` flag. The tags available are `dotfiles`, `homebrew`, `mas`, `extra-packages` and `osx`.
ansible-playbook main.yml -K --tags "dotfiles,homebrew"
## Overriding Defaults
Not everyone's development environment and preferred software configuration is the same.
You can override any of the defaults configured in `default.config.yml` by creating a `config.yml` file and setting the overrides in that file. For example, you can customize the installed packages and apps with something like:
```yaml
homebrew_installed_packages:
- cowsay
- git
- gomas_installed_apps:
- { id: 443987910, name: "1Password" }
- { id: 498486288, name: "Quick Resizer" }
- { id: 557168941, name: "Tweetbot" }
- { id: 497799835, name: "Xcode" }npm_packages:
- name: webpack
```Any variable can be overridden in `config.yml`; see the supporting roles' documentation for a complete list of available variables.
## Acknowledgements
This playbook is heavily inspired by
[Dan Bohea's macsible](https://github.com/macsible/macsible)
[Jeff Geerling's mac-dev-playbook](https://github.com/geerlingguy/mac-dev-playbook) and [Jérôme Gamez's ansible-macos-playbook](https://github.com/jeromegamez/ansible-macos-playbook).The macOS settings (a.k.a. `defaults write`s) are mostly taken from
[Mathias Bynens' defaults scripts](https://mths.be/macos) or from one of the
dotfiles repos from [http://dotfiles.github.io](http://dotfiles.github.io).You can find other defaults [here](https://macos-defaults.com).