Files
ansible-osx-setup/ansible_osx.yml
2021-11-22 14:52:15 +00:00

244 lines
6.5 KiB
YAML

---
- hosts: localhost
tasks:
- name: Install homebrew
include_role:
name: geerlingguy.mac.homebrew
- name: Make sure homebrew bin is in path
ansible.builtin.lineinfile:
path: /etc/paths
state: present
line: '/opt/homebrew/bin'
become: true
become_user: root
- name: 'add custom homebrew repos'
community.general.homebrew_tap:
name: [
adoptopenjdk/openjdk,
fishtown-analytics/dbt,
heroku/brew,
homebrew/cask-versions,
thoughtbot/formulae,
weaveworks/tap,
]
- name: Install core packages via brew casks
community.general.homebrew_cask:
name: "{{ item }}"
ignore_errors: yes
with_items:
- 1password
- android-sdk
- android-studio
- datagrip
- docker
- dropbox
- figma
- google-chrome
- google-cloud-sdk
- iterm2
- kindle
- ngrok
- slack
- sublime-text
- telegram
- visual-studio-code
- vlc
- zoom
- tuple
- name: "Install homebrew packages"
community.general.homebrew:
name: [
'autoconf',
'automake',
'aws-iam-authenticator',
'awscli',
'bfg',
'coreutils',
'curl',
'dbt@0.18.0',
'direnv',
'dnsmasq',
'fzf',
'gnu-time',
'gpg',
'heroku',
'htop',
'imagemagick@6',
'kubectx',
'kubernetes-cli',
'kubernetes-helm',
'libtool',
'libxslt',
'libyaml',
'mas',
'openssl' ,
'pkg-config',
'postgresql',
'rcm',
'readline',
'redis',
'sqlite3',
'tmux',
'unixodbc',
'unzip',
'vim',
'watchman',
'xz',
'yarn',
'zlib',
'zsh',
]
state: present
update_homebrew: yes
- name: "Install from Mac app store"
shell: mas install {{ item }}
with_items:
- 497799835 # xcode
- name: Get the path to ZSH
become: false
local_action: command which zsh
register: zsh_path
- name: "Ensure homebrew zsh is in allowed shells"
lineinfile:
path: /etc/shells
line: "{{ zsh_path.stdout }}"
become: true
- name: Install Oh My ZSH
shell: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
args:
creates: "/Users/{{ lookup('env', 'USER') }}/.oh-my-zsh"
- name: Set ZSH as the default shell
shell: chsh -s $(which zsh) {{ lookup('env', 'USER') }}
become: true
- name: "Create a default ZSH configuration"
template:
src: templates/.zshrc.j2
dest: /Users/{{ lookup('env', 'USER') }}/.zshrc
owner: "{{ lookup('env', 'USER') }}"
force: yes
- name: Create a default VSCode configuration
template:
src: templates/vscode-settings.json.j2
dest: /Users/{{ lookup('env', 'USER') }}/Library/Application Support/Code/User/settings.json
owner: "{{ lookup('env', 'USER') }}"
force: yes
- name: Create a default VSCode keuybinding configuration
template:
src: templates/vscode-keybindings.json.j2
dest: /Users/{{ lookup('env', 'USER') }}/Library/Application Support/Code/User/keybindings.json
owner: "{{ lookup('env', 'USER') }}"
force: yes
# Add something which ensures path is set here
- name: Install VSCode extensions
shell: code --install-extension {{ item }}
with_items:
- apollographql.vscode-apollo
- bradlc.vscode-tailwindcss
- castwide.solargraph
- clinyong.vscode-css-modules
- eamodio.gitlens
- jakebecker.elixir-ls
- kaiwood.endwise
- karunamurti.haml
- ms-vscode-remote.vscode-remote-extensionpack
- ms-vscode.vscode-typescript-tslint-plugin
- msjsdiag.debugger-for-chrome
- rebornix.ruby
- richie5um2.vscode-sort-json
- Tyriar.sort-lines
- vscodevim.vim
- wholroyd.jinja
- wingrunr21.vscode-ruby
- xabikos.javascriptsnippets
- streetsidesoftware.code-spell-checker
- fabiospampinato.vscode-todo-plus
- git:
repo: https://github.com/asdf-vm/asdf.git
dest: "/Users/{{ lookup('env', 'USER') }}/.asdf"
version: v0.8.1
- name: "Create a default asdf configuration"
template:
src: templates/.asdfrc.j2
dest: /Users/{{ lookup('env', 'USER') }}/.asdfrc
owner: "{{ lookup('env', 'USER') }}"
force: yes
- name: "Install asdf plugins"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
asdf plugin-add {{ item }} || exit 0
with_items:
- ruby
- elixir
- nodejs
- python
- erlang
- name: "Install Default Python"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
asdf install python 3.10.0
asdf global python 3.10.0
pip3 install ansible
asdf reshim python
- name: "Install Default Ruby"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
asdf install ruby 3.0.2
asdf global ruby 3.0.2
gem install bundler
gem install cocoapods
gem install rubocop
gem install solargraph
- name: "Install default node"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
bash /Users/{{ lookup('env', 'USER') }}/.asdf/plugins/nodejs/bin/import-release-team-keyring
asdf install nodejs 16.4.2
asdf global nodejs 16.4.2
- name: "Install default erlang"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
asdf install erlang 24.0.2
asdf global erlang 24.0.2
- name: "Install default elixir"
shell: |
source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh
asdf install elixir 1.12.3-otp-24
asdf global elixir 1.12.3-otp-24
mix local.hex --force
- name: Install yarn packages
shell: yarn global add {{ item }}
with_items:
- react-native-cli
- create-react-app
- apollo
- generator-generator
- yo
- name: re-generate bins now we've installed some yarn packages
shell: asdf reshim nodejs