summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-08-19 23:55:38 +0200
committerAhmed Abdelhalim <[email protected]>2025-08-20 00:07:39 +0200
commitf9b1434299720b009f00477c3b7e880c1f47765e (patch)
treef41019c242addad509bd9dda87a224829d217f21
parentc9910eac758ae62b09c98d0dde788c2c84e1f2aa (diff)
Add homebrew role
-rw-r--r--molecule/default/converge.yml1
-rw-r--r--roles/homebrew/README.md7
-rw-r--r--roles/homebrew/meta/main.yml18
-rw-r--r--roles/homebrew/tasks/main.yml40
-rw-r--r--roles/homebrew/vars/archlinux.yml5
-rw-r--r--roles/homebrew/vars/debian.yml5
-rw-r--r--site.yml1
7 files changed, 77 insertions, 0 deletions
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