professormanhattan.homebrew

Homebrew - Ein Paketmanager für macOS/Linux

Entwickelt von Megabyte Labs



Eine Ansible-Rolle, die Homebrew (ein Paketverwaltungssystem) auf macOS- und Linux-Systemen installiert


Inhaltsverzeichnis

Überblick

Dieses Repository ist die Heimat einer Ansible Rolle, die Homebrew (ein Paketverwaltungssystem) auf macOS- und Linux-Systemen installiert. Homebrew ist ein kostenloses und Open-Source-Paketverwaltungssystem, das die Installation von Software auf Apples Betriebssystem macOS sowie auf Linux vereinfacht. Der Name soll die Idee vermitteln, Software auf dem Mac entsprechend dem Geschmack des Nutzers zu erstellen.

Funktionen

Stellt sicher, dass Homebrew installiert ist:

  • Überprüft, ob Homebrew bereits installiert ist
  • Installiert Homebrew auf macOS und Linux
  • Stellt sicher, dass die .bashrc-Datei Homebrew korrekt zur PATH-Variablen hinzufügt

Installiert Homebrew-Pakete:

  • Sorgt dafür, dass Homebrew und Homebrew-Pakete aktuell sind
  • Installiert eine konfigurierbare Liste von Homebrew-Paketen (über die Variable homebrew_packages)
  • Stellt sicher, dass bereits installierte Homebrew-Casks aktuell sind
  • Installiert eine konfigurierbare Liste von Homebrew-Casks auf macOS (über die Variable homebrew_casks)

Schnellstart

Möchtest du Homebrew installieren, ohne dich mit Ansible herumzuschlagen? Führe einfach den folgenden Befehl aus, der deinem Betriebssystem entspricht:

Linux/macOS:

curl -sS https://install.doctor/homebrew | bash

Windows:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/homebrew?os=win'))

Wichtiger Hinweis: Bevor du die obigen Befehle ausführst, solltest du wahrscheinlich direkt auf die URL zugreifen, um sicherzustellen, dass der Code legitim ist. Wir wissen bereits, dass es sicher ist, aber bevor du ein Skript auf deinem Computer ausführst, solltest du es überprüfen.

Du kannst auch Install Doctor ausprobieren. Es ist eine App, die wir erstellt haben, die jede Ansible-Rolle mit einer Zeile installieren kann. Sie hat auch einige andere nützliche Funktionen, wie die Möglichkeit, Programme ohne Passwortabfrage zu installieren. Wenn du jedoch diese Rolle in ein Ansible-Playbook einfügen und die Einstellungen anpassen möchtest, lies bitte weiter.

Unterstützte Betriebssysteme

Die folgende Tabelle zeigt die Betriebssysteme, auf denen wir diese Rolle getestet haben. Sie wird automatisch mit den Ansible-Molecule-Tests im Ordner molecule/ erstellt. Es gibt CI-Logik, die automatisch die Tests für Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux durchführt. Wenn dein Betriebssystem nicht aufgeführt ist, aber eine Variante eines der Systeme ist, die wir testen (z.B. ein Debian-basiertes System oder ein RedHat-basiertes System), ist es möglich, dass die Rolle weiterhin funktioniert.

OS-Familie OS-Version Status Idempotent Getestet am
ArchLinux Neueste
7. Januar 2022
CentOS 7
7. Januar 2022
CentOS 8
7. Januar 2022
CentOS Stream 8
7. Januar 2022
Debian 10 (Buster)
7. Januar 2022
Debian 11 (Bullseye)
7. Januar 2022
Debian 9 (Stretch)
7. Januar 2022
Fedora 33
7. Januar 2022
Fedora 34
7. Januar 2022
Fedora 35
7. Januar 2022
Ubuntu 18.04 (Bionic Beaver)
7. Januar 2022
Ubuntu 20.04 (Focal Fossa)
7. Januar 2022
Ubuntu 21.04 (Hirsute Hippo)
7. Januar 2022
Ubuntu 21.10 (Impish Indri)
7. Januar 2022
Windows 10
7. Januar 2022

Was bedeutet idempotent? Idempotent bedeutet, dass, wenn du diese Rolle zweimal hintereinander ausführst, es bei der zweiten Ausführung keine Änderungen am System gibt.

Wir haben viel Zeit damit verbracht, unsere CI-Konfigurationen und Build-Tools zu perfektionieren. Wenn du mehr darüber erfahren möchtest, wie wir unseren Prozess perfektioniert haben, könntest du unsere Ansible gemeinsamen Dateien und die Ansible-Dokumentation Repositories interessant finden. Siehe den Leitfaden CONTRIBUTING.md für weitere Details.

Abhängigkeiten

Die meisten unserer Rollen basieren auf Ansible Galaxy Kollektionen. Einige unserer Projekte sind auch von anderen Rollen und Kollektionen abhängig, die auf Ansible Galaxy veröffentlicht sind. Bevor du diese Rolle ausführst, musst du die Kollektionen und Rollenabhängigkeiten sowie die Python-Anforderungen installieren, indem du Folgendes ausführst:

if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml

Alternativ kannst du einfach bash .config/scripts/start.sh ausführen, wenn du neu bei Ansible bist und nichts dagegen hast, dass die Entwicklungsanforderungen ebenfalls installiert werden. Dies ist der einfache Weg, um sicherzustellen, dass alles ordnungsgemäß funktioniert.

Python

Obwohl das einzige Tool, das zum Ausführen dieses Plays auf einer Standardmaschine erforderlich ist, Ansible (ein Python-Paket) ist, fügen wir mehrere andere Python-Abhängigkeiten hinzu, die für spezielle Anwendungsfälle und die Entwicklung erforderlich sind. Die folgende Tabelle beschreibt diese Pakete:

Paket Beschreibung Erforderlich
ansible Ein Konfigurationsmanagementsystem, das Computer aus der Ferne konfigurieren kann
✔️
docker Ermöglicht die Bereitstellung von Docker-Containern mit Ansible
✔️
python-vagrant Erforderlich für die Bereitstellung von Vagrant-VMs
✔️
pywinrm Erforderlich für die Bereitstellung von Windows-Maschinen, die WinRM verwenden
✔️
ansible-lint Linting-Tool für Ansible-Dateien
ansibler Eigenes Tool zur Erstellung fortgeschrittener Dokumentation (z.B. generiert es das Kompatibilitätsdiagramm und einige andere Diagramme)
black Auto-Formatter für Python-Dateien, der enthalten ist, falls das Projekt Python-Testskripte verwendet
blocklint Linting-Tool, das verhindert, dass bestimmte Worte in den Code gelangen
flake8 Python-Linter, der Syntax- und Stilfehler in Python meldet
mod-ansible-autodoc Eigene Fork von ansible-autodoc, die es uns ermöglicht, Dokumentation basierend auf Kommentaren in den YAML-Dateien der Rolle automatisch zu generieren
molecule Testframework für Ansible
molecule-docker Molecule-Plugin zur Bereitstellung von Docker-Containern
molecule-vagrant Molecule-Plugin zur Bereitstellung von Vagrant-VMs
pre-commit-hooks Suite von Tools, die nützlich für das Linting sind
proselint Linter, der zur Verbesserung der englischen Sprache dient (verwendet zur Verbesserung der Dokumentation)
yamllint Linter für YAML-Dateien, der sicherstellt, dass die richtige Syntax und Stile verwendet werden

Galaxy-Rollen

Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es einige Fälle, in denen eine andere Rolle installiert sein muss, bevor die Logik fortfahren kann. Zu Beginn des Plays werden die Ansible Galaxy Rollenabhängigkeiten, die in meta/main.yml aufgeführt sind, ausgeführt. Diese Abhängigkeiten sind so konfiguriert, dass sie nur einmal pro Playbook ausgeführt werden. Wenn du mehr als eine unserer Rollen in deinem Playbook einfügst, die gemeinsame Abhängigkeiten haben, wird die Installation der Abhängigkeiten nach dem ersten Durchlauf übersprungen. Einige unserer Rollen verwenden auch Hilfsrollen direkt aus den Aufgaben-Dateien, was hilft, unser Haupt-Playbook (Gas Station) DRY zu halten.

Die Datei requirements.yml enthält eine vollständige Liste der Ansible Galaxy Abhängigkeiten, die für diese Rolle erforderlich sind (d.h. meta/main.yml Rollenabhängigkeiten, Hilfsrollen, Kollektionen usw.). Zur deiner Bequemlichkeit findest du eine Liste der Rollenabhängigkeiten zusammen mit kurzen Beschreibungen unten:

rollen_dependencies

Galaxy-Kollektionen

Diese Rolle ist von mehreren Ansible Galaxy Kollektionen abhängig. Die Kollektionen sowie Links zu ihren Quellen sind unten aufgeführt.

  • community.general Ansible Galaxy Badge
  • google.cloud Ansible Galaxy Badge

Beispiel-Playbook

Nachdem die Abhängigkeiten installiert sind, musst du die Rolle nur noch zu deinem Haupt-Playbook hinzufügen. Die Rolle kümmert sich um das become-Verhalten, sodass du die Rolle einfach zu deinem Playbook hinzufügen kannst, ohne dir um Befehle kümmern zu müssen, die nicht als Root ausgeführt werden sollten:

- hosts: all
  roles:
    - professormanhattan.homebrew

Wenn du diese Rolle in ein bereits bestehendes Playbook einfügst, könnte es sinnvoll sein, die in pyproject.toml und requirements.yml genannten Anforderungen in die entsprechenden Dateien im Stammverzeichnis deines Playbooks zu kopieren, sodass du dir nur während zukünftiger Nutzungen um das Installieren eines Satzes von Anforderungen kümmern musst. Beachte, dass die Abhängigkeiten in pyproject.toml in die traditionellere requirements.txt verschoben werden können, wenn du derzeit diese zur Verfolgung von Python-Abhängigkeiten verwendest.

Reales Beispiel

Du findest ein Beispiel eines Playbooks, das diese Rolle integriert, in unserem Haupt-Playbook (auch bekannt als Gas Station). Dieses Playbook ist ein ausgezeichnetes Beispiel für jemanden, der lernt, wie man Ansible verwendet. Es integriert auch viele gut durchdachte Build-Tools, die fortgeschrittene Ansible-Nutzer zu schätzen wissen. Und Leute, die sich nicht um Ansible kümmern, können auch davon profitieren, denn es ermöglicht dir, deinen Computer (und dein Netzwerk) mehr oder weniger in die ultimative Entwicklungsumgebung zu verwandeln. Die Quintessenz ist, dass es ein fantastisches Projekt ist, das Entwickler kennen sollten!

Mitwirken

Beiträge, Probleme und Feature-Anfragen sind willkommen! Fühl dich frei, die Überblick-Seite zu überprüfen. Wenn du mitwirken möchtest, schau dir bitte den Leitfaden zur Mitwirkung an.

Patenschaft

Lieber großartiger Mensch,

Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job habe, ein Dach über dem Kopf und so viel Fast Food, wie ich verkraften kann, wäre es trotzdem ziemlich cool, von der Gemeinschaft für etwas gewürdigt zu werden, für das ich viel Zeit und Geld aufgewendet habe. Bitte ziehe in Betracht, mich zu unterstützen! Wer weiß? Vielleicht kann ich meinen Job kündigen und Open Source in Vollzeit veröffentlichen.

Mit freundlichen Grüßen,

Brian Zalewski

Open Collective Sponsoren GitHub Sponsoren Patreon

Partner

Hier findest du eine Liste von Diensten, die wir nutzen und die spezielle Anreize bieten, wenn du dich über unsere speziellen Links anmeldest:

MailChimp DigitalOcean Referral-Badge

Lizenz

Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.

Installieren
ansible-galaxy install professormanhattan.homebrew
GitHub Repository
Lizenz
other
Downloads
5.9k
Besitzer
Often imitated, never duplicated