From 8457b44cc0d2800aadd28eae81bcc41913bb5562 Mon Sep 17 00:00:00 2001 From: Ahmed AbdelHalim Date: Tue, 19 Aug 2025 23:55:38 +0200 Subject: Add homebrew role --- molecule/default/converge.yml | 1 + roles/homebrew/README.md | 7 +++++++ roles/homebrew/meta/main.yml | 18 ++++++++++++++++++ roles/homebrew/tasks/main.yml | 40 +++++++++++++++++++++++++++++++++++++++ roles/homebrew/vars/archlinux.yml | 5 +++++ roles/homebrew/vars/debian.yml | 5 +++++ site.yml | 1 + 7 files changed, 77 insertions(+) create mode 100644 roles/homebrew/README.md create mode 100644 roles/homebrew/meta/main.yml create mode 100644 roles/homebrew/tasks/main.yml create mode 100644 roles/homebrew/vars/archlinux.yml create mode 100644 roles/homebrew/vars/debian.yml diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index 90c760b1..2bc1759b 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -19,6 +19,7 @@ - role: password_policy - role: locales - role: timezone + - role: homebrew - role: pihole vars: pihole_interface: "eth0" diff --git a/roles/homebrew/README.md b/roles/homebrew/README.md new file mode 100644 index 00000000..db948a04 --- /dev/null +++ b/roles/homebrew/README.md @@ -0,0 +1,7 @@ +# Ansible Role: homebrew + +This role installs homebrew package manager on Linux distributions + +## Role Variables + +- `homebrew_dependencies` the required system packages for homebrew installation (auto-configured per OS) diff --git a/roles/homebrew/meta/main.yml b/roles/homebrew/meta/main.yml new file mode 100644 index 00000000..5b3ae39a --- /dev/null +++ b/roles/homebrew/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install homebrew package manager on Linux distributions" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/homebrew/tasks/main.yml b/roles/homebrew/tasks/main.yml new file mode 100644 index 00000000..81e9dbe3 --- /dev/null +++ b/roles/homebrew/tasks/main.yml @@ -0,0 +1,40 @@ +--- +- name: "Include OS-specific variables" + ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" + +- name: "Install homebrew dependencies" + become: true + ansible.builtin.package: + name: "{{ item }}" + state: "present" + with_items: "{{ homebrew_dependencies }}" + +- name: "Create linuxbrew directory" + become: true + ansible.builtin.file: + path: "/home/linuxbrew" + state: directory + owner: "{{ ansible_user_id }}" + group: "{{ ansible_user_id }}" + mode: "0755" + +- name: "Download homebrew installer" + ansible.builtin.get_url: + url: "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh" + dest: "/tmp/install_homebrew.sh" + mode: "0755" + +- name: "Run homebrew installer" + ansible.builtin.command: + cmd: "/tmp/install_homebrew.sh" + args: + creates: "/home/linuxbrew/.linuxbrew/bin/brew" + environment: + NONINTERACTIVE: "1" + +- name: "Add homebrew to shell profile" + ansible.builtin.lineinfile: + path: "{{ ansible_env.HOME }}/.bashrc" + line: 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' + create: true + mode: "0644" diff --git a/roles/homebrew/vars/archlinux.yml b/roles/homebrew/vars/archlinux.yml new file mode 100644 index 00000000..0b3af4b0 --- /dev/null +++ b/roles/homebrew/vars/archlinux.yml @@ -0,0 +1,5 @@ +--- +homebrew_dependencies: + - base-devel + - curl + - git diff --git a/roles/homebrew/vars/debian.yml b/roles/homebrew/vars/debian.yml new file mode 100644 index 00000000..3f2348cc --- /dev/null +++ b/roles/homebrew/vars/debian.yml @@ -0,0 +1,5 @@ +--- +homebrew_dependencies: + - build-essential + - curl + - git diff --git a/site.yml b/site.yml index 82bfe8e7..d19385dd 100644 --- a/site.yml +++ b/site.yml @@ -30,6 +30,7 @@ roles: - role: "locales" - role: "timezone" + - role: "homebrew" - name: "Raspberry Pi configure" gather_facts: true -- cgit v1.2.3