-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Setting this repository up for SRE RE Laptop setup
* Combining all the onboarding tickets into Ansible
- Loading branch information
Showing
27 changed files
with
492 additions
and
1,392 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"recommendations": [ | ||
"redhat.ansible", | ||
"esbenp.prettier-vscode", | ||
"tyriar.sort-lines" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"[python]": { | ||
"editor.defaultFormatter": "ms-python.black-formatter", | ||
"editor.codeActionsOnSave": { | ||
"source.organizeImports": "explicit" | ||
} | ||
}, | ||
"[markdown]": { | ||
"editor.rulers": [400], | ||
"editor.wordWrap": "off" | ||
}, | ||
"editor.defaultFormatter": "esbenp.prettier-vscode", | ||
"isort.args": ["--profile", "black"], | ||
"editor.formatOnSave": true, | ||
"files.insertFinalNewline": true, | ||
"ansible.python.interpreterPath": "/usr/bin/python3" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,10 @@ | ||
After [c99ff5](https://github.com/scoremedia/dev-laptop-setup/commit/c99ff5da76d7a077494ecb86a58bd5db44df6e70) the repository was forked and all development work done after is subject to theScore's licensing terms. All rights reserved. | ||
|
||
Copyright (c) 2013 Michael Griffin | ||
http://mwgriffin.com | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,168 +1,63 @@ | ||
<img src="https://raw.githubusercontent.com/geerlingguy/mac-dev-playbook/master/files/Mac-Dev-Playbook-Logo.png" width="250" height="156" alt="Mac Dev Playbook Logo" /> | ||
<img src="https://raw.githubusercontent.com/scoremedia/dev-laptop-setup/main/files/Mac-Dev-Playbook-Logo.png" width="250" height="156" alt="Mac Dev Playbook Logo" /> | ||
|
||
# Mac Development Ansible Playbook | ||
|
||
[![CI][badge-gh-actions]][link-gh-actions] | ||
This playbook installs and configures laptop for development work in SRE Release Engineering. | ||
|
||
This playbook installs and configures most of the software I use on my Mac for web and software development. Some things in macOS are slightly difficult to automate, so I still have a few manual installation steps, but at least it's all documented here. | ||
## First Time Steps | ||
|
||
## Installation | ||
These steps should only be executed once as subsequently you will have Ansible installed via homebrew. | ||
|
||
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. 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.9/bin:/opt/homebrew/bin:$PATH"` | ||
2. Upgrade Pip: `sudo pip3 install --upgrade pip` | ||
3. Install Ansible: `pip3 install ansible` | ||
1. Run the following command to add Python 3 to your $PATH temporarily: `export PATH="$HOME/Library/Python/3.9/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. | ||
### Running the Playbooks | ||
|
||
> 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. | ||
#### Setup | ||
|
||
1. Clone or download this repository to your local drive. | ||
1. Run `ansible-galaxy install -r requirements.yml` inside this directory to install required Ansible roles. | ||
|
||
### Use with a remote Mac | ||
#### SRE Release Engineering | ||
|
||
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: | ||
This playbook will setup the laptop for SRE Release Engineering. | ||
|
||
1. (On the Mac you want to connect to:) Go to System Preferences > Sharing. | ||
2. Enable 'Remote Login'. | ||
To run this: `ansible-playbook playbooks/srere-laptop-setup.yml --ask-become-pass` | ||
|
||
> You can also enable remote login on the command line: | ||
> | ||
> sudo systemsetup -setremotelogin on | ||
It performs the following tasks: | ||
|
||
Then edit the `inventory` file in this repository and change the line that starts with `127.0.0.1` to: | ||
- Installs homebrew and sets up the Jfrog repository | ||
- Install homebrew packages, apps and taps as defined in `homebrew_installed_packages`, `homebrew_cask_apps`, `homebrew_taps` in [default.srere-laptop-setup.yml](vars_files/default.srere-laptop-setup.yml) | ||
- Sets up the zsh shell by setting up common functions, paths variable and other environment variables. | ||
- Sets up Git with some configurations like: | ||
- GPG Signing | ||
- Proper username and email (derived from your Mac username) | ||
- Default init branch set to main | ||
- `push.autoSetupRemote` set so you don't have to do `git push --set-upstream` when pushing a new branch | ||
- Helm repository setup to point to the internal Helm Chart repository. | ||
|
||
``` | ||
[ip address or hostname of mac] ansible_user=[mac ssh username] | ||
``` | ||
For a more accurate description please see [playbooks/srere-laptop-setup.yml](playbooks/srere-laptop-setup.yml) and the roles and tasks in it. | ||
|
||
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. | ||
> 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. | ||
### 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`. | ||
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 that are available can be listed by running `ansible-playbook playbooks/srere-laptop-setup.yml --list-tags`. | ||
|
||
ansible-playbook main.yml -K --tags "dotfiles,homebrew" | ||
ansible-playbook playbooks/srere-laptop-setup.yml --ask-become-pass --tags git-config,helm-repo-setup | ||
|
||
## 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 | ||
- go | ||
|
||
mas_installed_apps: | ||
- { id: 443987910, name: "1Password" } | ||
- { id: 498486288, name: "Quick Resizer" } | ||
- { id: 557168941, name: "Tweetbot" } | ||
- { id: 497799835, name: "Xcode" } | ||
|
||
composer_packages: | ||
- name: hirak/prestissimo | ||
- name: drush/drush | ||
version: '^8.1' | ||
|
||
gem_packages: | ||
- name: bundler | ||
state: latest | ||
|
||
npm_packages: | ||
- name: webpack | ||
|
||
pip_packages: | ||
- name: mkdocs | ||
|
||
configure_dock: true | ||
dockitems_remove: | ||
- Launchpad | ||
- TV | ||
dockitems_persist: | ||
- name: "Sublime Text" | ||
path: "/Applications/Sublime Text.app/" | ||
pos: 5 | ||
``` | ||
Any variable can be overridden in `config.yml`; see the supporting roles' documentation for a complete list of available variables. | ||
|
||
## Included Applications / Configuration (Default) | ||
|
||
Applications (installed with Homebrew Cask): | ||
|
||
- [ChromeDriver](https://sites.google.com/chromium.org/driver/) | ||
- [Docker](https://www.docker.com/) | ||
- [Dropbox](https://www.dropbox.com/) | ||
- [Firefox](https://www.mozilla.org/en-US/firefox/new/) | ||
- [Google Chrome](https://www.google.com/chrome/) | ||
- [Handbrake](https://handbrake.fr/) | ||
- [Homebrew](http://brew.sh/) | ||
- [LICEcap](http://www.cockos.com/licecap/) | ||
- [nvALT](http://brettterpstra.com/projects/nvalt/) | ||
- [Sequel Ace](https://sequel-ace.com) (MySQL client) | ||
- [Slack](https://slack.com/) | ||
- [Sublime Text](https://www.sublimetext.com/) | ||
- [Transmit](https://panic.com/transmit/) (S/FTP client) | ||
|
||
Packages (installed with Homebrew): | ||
|
||
- autoconf | ||
- bash-completion | ||
- doxygen | ||
- gettext | ||
- gifsicle | ||
- git | ||
- gh | ||
- go | ||
- gpg | ||
- httpie | ||
- iperf | ||
- libevent | ||
- sqlite | ||
- nmap | ||
- node | ||
- nvm | ||
- php | ||
- ssh-copy-id | ||
- cowsay | ||
- readline | ||
- openssl | ||
- pv | ||
- wget | ||
- wrk | ||
- zsh-history-substring-search | ||
|
||
My [dotfiles](https://github.com/geerlingguy/dotfiles) are also installed into the current user's home directory, including the `.osx` dotfile for configuring many aspects of macOS for better performance and ease of use. You can disable dotfiles management by setting `configure_dotfiles: no` in your configuration. | ||
|
||
Finally, there are a few other preferences and settings added on for various apps and services. | ||
|
||
## Full / From-scratch setup guide | ||
|
||
Since I've used this playbook to set up something like 20 different Macs, I decided to write up a full 100% from-scratch install for my own reference (everyone's particular install will be slightly different). | ||
|
||
You can see my full from-scratch setup document here: [full-mac-setup.md](full-mac-setup.md). | ||
|
||
## Testing the Playbook | ||
|
||
Many people have asked me if I often wipe my entire workstation and start from scratch just to test changes to the playbook. Nope! This project is [continuously tested on GitHub Actions' macOS infrastructure](https://github.com/geerlingguy/mac-dev-playbook/actions?query=workflow%3ACI). | ||
|
||
You can also run macOS itself inside a VM, for at least some of the required testing (App Store apps and some proprietary software might not install properly). I currently recommend: | ||
|
||
- [UTM](https://mac.getutm.app) | ||
- [Tart](https://github.com/cirruslabs/tart) | ||
At this time this is not possible. The configuration is somewhat neccesary to do development work. When preferential configuration is added, overriding those options will be provided. | ||
|
||
## Ansible for DevOps | ||
|
||
Check out [Ansible for DevOps](https://www.ansiblefordevops.com/), which teaches you how to automate almost anything with Ansible. | ||
|
||
## Author | ||
|
||
This project was created by [Jeff Geerling](https://www.jeffgeerling.com/) (originally inspired by [MWGriffin/ansible-playbooks](https://github.com/MWGriffin/ansible-playbooks)). | ||
|
||
[badge-gh-actions]: https://github.com/geerlingguy/mac-dev-playbook/workflows/CI/badge.svg?event=push | ||
[link-gh-actions]: https://github.com/geerlingguy/mac-dev-playbook/actions?query=workflow%3ACI | ||
This project was created by [Komail Kanjee](https://github.com/komailo) and was forked off [mac-dev-playbook](https://github.com/geerlingguy/mac-dev-playbook) by [Jeff Geerling](https://www.jeffgeerling.com/) which was originally inspired by [MWGriffin/ansible-playbooks](https://github.com/MWGriffin/ansible-playbooks). |
Oops, something went wrong.