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
- Funktionen
- Schnellstart
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Mitwirken
- Lizenz
Ü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 zurPATH
-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.
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
Partner
Hier findest du eine Liste von Diensten, die wir nutzen und die spezielle Anreize bieten, wenn du dich über unsere speziellen Links anmeldest:

Lizenz
Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install professormanhattan.homebrew