Skip to content

Instantly share code, notes, and snippets.

@Israphel
Created April 25, 2023 16:55
Show Gist options
  • Save Israphel/6bfd426743a644cb8bf17f6a52483c4b to your computer and use it in GitHub Desktop.
Save Israphel/6bfd426743a644cb8bf17f6a52483c4b to your computer and use it in GitHub Desktop.
---
- name: Check if brew binary exists
ansible.builtin.stat:
path: "{{ homebrew_prefix }}/bin/brew"
register: brew_check
- name: Determine Homebrew ownership variables
ansible.builtin.set_fact:
homebrew_user: "{{ ansible_user_id }}"
homebrew_group: "{{ ansible_user_gid }}"
- name: Ensure Homebrew parent directory has correct permissions (M1)
become: yes
ansible.builtin.file:
path: "{{ homebrew_prefix }}"
state: directory
owner: "{{ homebrew_user }}"
group: "{{ homebrew_group }}"
mode: 0775
when:
- ansible_machine == 'arm64'
- not brew_check.stat.exists
- name: Create Homebrew folders
become: yes
ansible.builtin.file:
path: "{{ homebrew_prefix }}/{{ item }}"
state: directory
owner: "{{ homebrew_user }}"
group: "{{ homebrew_group }}"
mode: 0775
loop: "{{ homebrew_folders }}"
when: not brew_check.stat.exists
- name: Clone Homebrew
ansible.builtin.git:
repo: https://github.com/Homebrew/brew
version: master
dest: "{{ homebrew_prefix }}/Homebrew"
update: false
depth: 1
when: not brew_check.stat.exists
- name: Symlink brew binary
become: yes
ansible.builtin.file:
src: "{{ homebrew_prefix }}/Homebrew/bin/brew"
dest: "{{ homebrew_prefix }}/bin/brew"
state: link
when: not brew_check.stat.exists
- name: Ensure Homebrew bin directory is in path (M1)
become: yes
ansible.builtin.lineinfile:
path: /etc/paths
state: present
line: "{{ homebrew_prefix }}/bin"
insertbefore: '/usr/bin'
when:
- ansible_machine == 'arm64'
- name: Update Homebrew
community.general.packaging.os.homebrew:
update_homebrew: true
- name: Upgrade Homebrew Packages
community.general.packaging.os.homebrew:
upgrade_all: true
when:
- upgrade_brew_packages
- name: Install Homebrew Packages
community.general.packaging.os.homebrew:
name: "{{ item }}"
state: present
register: download
until: download is succeeded
loop: "{{ brew_packages }}"
- name: Install Homebrew Cask Packages
community.general.packaging.os.homebrew_cask:
name: "{{ item }}"
state: present
install_options: force
sudo_password: "{{ ansible_become_password | default(omit) }}"
register: download
until: download is succeeded
loop: "{{ brew_cask_packages }}"
changed_when: false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment