wayofdev.homebrew




Build-Status Ansible-Rolle Neueste Version Ansible Qualitätsbewertung Ansible Rolle Software-Lizenz Commits seit letztem Release

Ansible Rolle: Homebrew

Installiert Homebrew auf macOS oder Linux und konfiguriert Taps, Pakete und Casks. Das Paket verwendet Wiederholungen, um Verbindungsprobleme zu beheben.

Wenn du diese Rolle magst/benutzt, ziehe in Betracht, sie zu markieren. Danke!


🗂 Inhaltsverzeichnis


📑 Anforderungen

  • Aktuelle Version von Ansible. Während der Wartung/Entwicklung halten wir uns an Ansible-Versionen und verwenden neue Funktionen, wenn sie verfügbar sind (und aktualisieren meta/main.yml für die Mindestversion).
  • Kompatibles Betriebssystem. Siehe Tabelle Kompatibilität.
  • Die Bibliothek jmespath muss auf dem Host installiert sein, der das Playbook ausführt (benötigt für den json_query Filter).
  • Die Rolle hat Abhängigkeiten von Drittanbieter-Rollen auf verschiedenen Betriebssystemen. Siehe requirements.yml und den Abschnitt Abhängigkeiten.

🔧 Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Beispielwerten (siehe defaults/main.yml). Zusätzliche Variablen sind in vars/main.yml gespeichert.


→ Struktur

GitHub-Repository-Variable für den Homebrew-Kern. Standardmäßig überprüft die Rolle die neueste Version aus dem offiziellen Homebrew-Repository. Wenn du homebrew_repository änderst und deinen Fork verwenden möchtest und die automatische Erkennung der neuesten Version deaktivieren möchtest, setze die Variable homebrew_repository_use_master auf true.

# Aus welchem Repository soll Homebrew installiert werden?
homebrew_repository: https://github.com/Homebrew/brew

# Setze auf true, wenn du den master-Branch anstelle der automatischen Erkennung der Version verwenden möchtest,
# oder du ein benutzerdefiniertes Fork in homebrew_repository verwendest.
homebrew_repository_use_master: false

Wenn auf true gesetzt, wird Homebrew selbst aktualisiert und alle Homebrew-Pakete aktualisiert:

# Aufgabe ausführen, um alle Pakete zu aktualisieren
homebrew_upgrade_all: true

Die Variable steuert die Anzahl der Wiederholungen und die Wartezeit zwischen den Wiederholungen, wenn die Aufgabe homebrew install fehlschlägt:

# Wie oft soll wiederholt werden, wenn die Installation von Paket / Tap / Cask fehlschlägt?
# Dies kann bei Netzwerkproblemen geschehen.
homebrew_retries: 32

# Verzögerung zwischen jedem Wiederholungsversuch.
homebrew_delay: 3

Wird auf true gesetzt, um den Homebrew-Cache zu entfernen, nachdem neue Software installiert oder aktualisiert wurde.

homebrew_clear_cache: false

Verzeichnis, in dem Anwendungen installiert werden sollen, die über cask installiert wurden.

homebrew_cask_appdir: /Applications

Wenn auf true gesetzt, wird --greedy an brew cask outdated übergeben, wenn überprüft wird, ob ein installiertes Cask eine neuere Version verfügbar hat.

homebrew_cask_greedy_mode: false

Deaktiviere die Homebrew-Analysen, die standardmäßig erfasst werden.

homebrew_collect_analytics: false

→ Taps hinzufügen

Hinzufügen (tapping) von Repositories

homebrew_taps:
  - homebrew/core
  - homebrew/cask-versions
  - homebrew/cask-fonts

Hinzufügen (tapping) von Repositories in ausführlicherer Weise mit definierten URLs und Zuständen:

homebrew_taps:
  # nur tap
  - name: homebrew/core

  # tap von benutzerdefiniertem Repository
  - name: denji/nginx
    url: https://github.com/denji/homebrew-nginx

  # tap mit definiertem benutzerdefinierten Zustand
  - name: homebrew/cask-fonts
    state: present

Entfernen von Taps:

homebrew_taps:
  # definiere state: absent, um Taps zu löschen
  - name: homebrew/cask-fonts
    state: absent

  - name: denji/nginx
    state: absent

→ Pakete: Installieren, Aktualisieren und Entfernen

Hinzufügen von Paketen auf einfache Weise:

homebrew_packages:
  - wget
  - curl
  - nano

Hinzufügen von Paketen auf erweiterte Weise, einschließlich Zustand, Pfad und anderer Optionen:

homebrew_packages:
  # Installation an benutzerdefiniertem Pfad
  - name: wget
    state: present
    path: /opt/custom/path/bin

Aktualisieren von Paketen:

homebrew_packages:
  # zuerst Homebrew aktualisieren und das Formel wget mit 'brew' im Standardpfad installieren
  - name: wget
    state: present
    update_homebrew: true

  # zuerst Homebrew aktualisieren und die Formel curl auf die neueste verfügbare Version mit 'brew' im Standardpfad aktualisieren
  - name: curl
    state: latest
    update_homebrew: true

Entfernen von Paketen:

homebrew_packages:
  - name: wget
    state: absent
  - name: curl
    state: absent

→ Casks: Installieren, Aktualisieren und Entfernen

:warning: Hinweis: Casks werden nur auf macOS unterstützt. Siehe diesen Beitrag.

Hinzufügen von Casks auf einfache Weise:

homebrew_casks:
  # Installation einer Liste von Casks
  - firefox
  - google-chrome
  - alfred
  - 1password

Hinzufügen von Casks mit erweiterten Optionen:

homebrew_casks:
  # Installation des Cask firefox
  - name: firefox
    state: present

Entfernen von Casks:

homebrew_casks:
  # definiere state: absent, um zu löschen
  - name: firefox
    state: absent
  - name: google-chrome
    state: absent

📗 Beispiel-Playbook

→ für macOS-Maschinen

---
- hosts: all
  connection: local

  # ist nötig, wenn über SSH ausgeführt wird
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_taps:
      - homebrew/core
      - homebrew/cask
      - homebrew/cask-fonts
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # von homebrew/core
      - yt-dlp  # von yt-dlp/taps
    homebrew_casks:
      - firefox
      - google-chrome
      - font-fira-code-nerd-font  # von homebrew/cask-fonts
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - elliotweiser.osx-command-line-tools  # nur auf macOS-Maschinen
    - wayofdev.homebrew

→ für Linux-Maschinen

---
- hosts: all
  connection: local

  # ist nötig, wenn über SSH ausgeführt wird
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_user: linuxbrew  # FYI: kann übersprungen werden, wird automatisch erkannt, aber linuxbrew-Benutzer ist der empfohlene Weg zur Installation von Homebrew unter Linux
    homebrew_group: linuxbrew  # das gleiche wie homebrew_user

    homebrew_taps:
      - homebrew/core
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # von homebrew/core
      - yt-dlp  # von yt-dlp/taps
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - geerlingguy.git  # nur auf Linux-Maschinen und kann übersprungen werden, wenn die Maschine Git hat
    - wayofdev.homebrew

⚙️ Entwicklung

Um Abhängigkeiten zu installieren und mit der Entwicklung zu beginnen, kannst du den Inhalt unserer Makefile überprüfen.

Installiere poetry mit poetry-bin und alle entwicklungsrelevanten Python-Abhängigkeiten:

$ make install

Installiere nur Python-Abhängigkeiten, vorausgesetzt, du hast bereits Poetry:

$ make install-deps

Installiere alle Git Hooks:

$ make hooks

Lint alle Rollendateien:

$ make lint

🧪 Tests

Du kannst die Makefile überprüfen, um eine vollständige Liste von Befehlen für das Remote- und lokale Testen zu erhalten. Für lokale Tests kannst du diese Befehle verwenden, um die gesamte Rolle oder separate Aufgaben zu testen:

→ auf localhost

:warning: Hinweis: Standardmäßig werden alle Tests auf deinem lokalen Rechner ausgeführt!

# führe alle Tags mit dem Szenario aus ./tests/test.yml aus
$ make test

# oder test-tag ohne Parameter
$ make test-tag

# führe einen Idempotenz-Test durch
$ make test-idempotent

# führe Aufgaben aus, die die Konfigurationsdatei validieren und die Installation durchführen
$ export TASK_TAGS="brew-install,brew-update"
$ make test-tag

# führe einen vordefinierten Befehl aus, der nur ein Tag ausführt
$ make test-install
$ make test-analytics
$ make test-update
$ make test-taps
$ make test-packages
$ make test-casks

# führe Molecule-Tests auf localhost aus
$ poetry run molecule test --scenario-name default-macos-on-localhost -- -vvv

# oder mit make-Befehl
$ make m-local

# führt Molecule mit Docker-Treiber aus
$ poetry run molecule test --scenario-name default -- -vvv

# oder mit Makefile
$ make m-linux

→ über SSH

# führe Molecule-Szenarien gegen Remote-Maschinen über SSH aus
# dies benötigt VM-Setup und Konfiguration
$ poetry run molecule test --scenario-name default-macos-over-ssh -- -vvv

$ make m-remote

# Tags können ebenfalls übergeben werden
$ export TASK_TAGS="brew-install,brew-update"
$ make m-remote

📦 Abhängigkeiten

Die Installation erfolgt über Makefile und die Anforderungen sind in requirements.yml definiert.

→ für alle

→ nur macOS

→ nur Linux


🧩 Kompatibilität

Diese Rolle wurde auf diesen Systemen getestet:

System / Container Tag
macos monterey
macos big-sur
ubuntu jammy
ubuntu focal
debian bullseye
debian buster
fedora 36
fedora 35
centos 8
centos 7

🤝 Lizenz

Lizenz


🙆🏼‍♂️ Autoreninformationen

Diese Rolle wurde 2022 von lotyp / wayofdev erstellt.


🧱 Danksagungen und Ressourcen

Inspiriert von:


🫡 Mitwirkende


🤑 Sponsoren

Die Entwicklung und das Testen der Rolle wurden auf Parallels Desktop Pro Edition durchgeführt, und die Lizenz wurde von Parallels bereitgestellt.

Über das Projekt

Ansible role that uses loops and retries to install Homebrew apps and casks.

Installieren
ansible-galaxy install wayofdev.homebrew
Lizenz
gpl-3.0
Downloads
521
Besitzer
Making things to build better software