megabyte-labs.homebrew
Homebrew - Ein Paketmanager für macOS/Linux
Erstellt von Megabyte Labs
Eine Ansible-Rolle, die Homebrew (ein Paketverwaltungssystem) auf macOS- und Linux-Systemen installiert
Inhaltsverzeichnis
- Überblick
- Eigenschaften
- 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 dem Betriebssystem macOS von Apple sowie Linux vereinfacht. Der Name soll die Idee vermitteln, Software auf dem Mac nach dem Geschmack des Benutzers zu erstellen.
Eigenschaften
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
-Variable hinzufügt
Installiert Homebrew-Pakete:
- Stellt sicher, dass Homebrew und Homebrew-Pakete auf dem neuesten Stand sind
- Installiert eine konfigurierbare Liste von Homebrew-Paketen (über die Variable
homebrew_packages
) - Stellt sicher, dass vorinstallierte Homebrew-Casks auf dem neuesten Stand sind
- Installiert eine konfigurierbare Liste von Homebrew-Casks auf macOS (über die Variable
homebrew_casks
)
Schnellstart
Möchten Sie Homebrew installieren, ohne sich mit Ansible auseinanderzusetzen? Führen Sie einfach den folgenden Befehl aus, der Ihrem 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 Sie die obigen Befehle ausführen, sollten Sie wahrscheinlich die URL direkt aufrufen, um sicherzustellen, dass der Code legitim ist. Wir wissen bereits, dass es sicher ist, aber bevor Sie ein Skript auf Ihrem Computer ausführen, sollten Sie es überprüfen.
Sie können auch Install Doctor ausprobieren. Es ist eine App, die wir erstellt haben und die jede Ansible-Rolle mit einem einfachen Befehl installieren kann. Sie hat auch einige andere nützliche Funktionen, wie die Möglichkeit, Binärdateien ohne Passwortabfrage sofort zu installieren. Wenn Sie diese Rolle jedoch in ein Ansible-Playbook integrieren und die Einstellungen anpassen möchten, lesen Sie bitte weiter.
Unterstützte Betriebssysteme
Die folgende Tabelle zeigt die Betriebssysteme, auf denen wir diese Rolle getestet haben. Sie wird automatisch generiert, indem die Ansible Molecule-Tests im molecule/
-Verzeichnis verwendet werden. Es gibt CI-Logik, die automatisch die Tests für Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux durchführt. Wenn Ihr 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), könnte die Rolle trotzdem funktionieren.
OS-Familie | OS-Version | Status | Idempotent | Getestet am |
---|---|---|---|---|
ArchLinux | Aktuell | ❌ |
❌ |
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 Sie diese Rolle zweimal hintereinander ausführen, beim zweiten Mal keine Änderungen am System vorgenommen werden.
Wir haben viel Zeit damit verbracht, unsere CI-Konfigurationen und Build-Tools zu perfektionieren. Wenn Sie mehr darüber erfahren möchten, wie wir unseren Prozess perfektioniert haben, könnten Sie unsere Ansible gemeinsamen Dateien und Ansible-Dokumentation Repositories interessant finden. Weitere Details finden Sie im CONTRIBUTING.md Leitfaden.
Abhängigkeiten
Die meisten unserer Rollen basieren auf Ansible Galaxy Sammlungen. Einige unserer Projekte sind auch von anderen Rollen und Sammlungen abhängig, die auf Ansible Galaxy veröffentlicht wurden. Bevor Sie diese Rolle ausführen, müssen Sie die Sammlungs- und Rollenden abhängigkeiten sowie die Python-Anforderungen installieren, indem Sie Folgendes ausführen:
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 können Sie einfach bash .config/scripts/start.sh
ausführen, wenn Sie neu bei Ansible sind und es Ihnen nichts ausmacht, dass die Entwicklungsanforderungen ebenfalls installiert werden. Dies ist der einfache Weg, um sicherzustellen, dass alles richtig funktioniert.
Python
Obwohl das einzige notwendige Werkzeug, um dieses Play auf einem Standardcomputer auszuführen, Ansible (ein Python-Paket) ist, haben wir mehrere andere Python-Abhängigkeiten eingefügt, die für spezielle Anwendungsfälle und die Entwicklung erforderlich sind. Die folgende Tabelle zeigt diese Pakete:
Paket | Beschreibung | Erforderlich |
---|---|---|
ansible | Ein Konfigurationsmanagementsystem, das Computer remote 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 anspruchsvoller Dokumentationen (z. B. generiert es das Kompatibilitätsschema und einige andere Diagramme) | |
black | Python-Datei-Automat, wenn das Projekt Python-Testskripte nutzt | |
blocklint | Linting-Tool, das verhindert, dass bestimmte Wörter in den Code gelangen | |
flake8 | Python-Linter, der Python-Syntax- und Stilfehler meldet | |
mod-ansible-autodoc | Modifizierter Fork von ansible-autodoc, der es uns ermöglicht, Dokumentationen basierend auf Kommentaren in den YAML-Dateien der Rolle automatisch zu generieren | |
molecule | Test-Framework für Ansible | |
molecule-docker | Molecule-Plugin zur Bereitstellung von Docker-Containern | |
molecule-vagrant | Molecule-Plugin zur Bereitstellung von Vagrant-VMs | |
pre-commit-hooks | Sammlung von nützlichen Tools zum Linting | |
proselint | Linter, der zur Verbesserung der englischen Sprache verwendet wird (verwendet zur Verbesserung der Dokumentation) | |
yamllint | Linter für YAML-Dateien, der sicherstellt, dass korrekte Syntax und Formatierung verwendet wird |
Galaxy-Rollen
Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es in einigen Fällen, wo eine andere Rolle installiert werden muss, bevor die Logik fortgesetzt werden kann. Zu Beginn des Plays werden die in meta/main.yml
aufgeführten Ansible Galaxy-Rollen-Abhängigkeiten ausgeführt. Diese Abhängigkeiten sind so konfiguriert, dass sie pro Playbook nur einmal ausgeführt werden. Wenn Sie in Ihrem Playbook mehr als eine unserer Rollen einfügen, die gemeinsame Abhängigkeiten haben, wird die Abhängigkeitsinstallation nach der ersten Ausführung übersprungen. Einige unserer Rollen verwenden auch direkt in den Aufgaben Dateien Hilfsrollen, 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 von dieser Rolle benötigt werden (d. h. meta/main.yml
Rollenabhängigkeiten, Hilfsrollen, Sammlungen usw.). Zur Ihrer Information finden Sie hier eine Liste der Rollenabhängigkeiten mit kurzen Beschreibungen:
role_dependencies
Galaxy-Kollektionen
Diese Rolle ist von mehreren Ansible Galaxy-Sammlungen abhängig. Die Sammlungen sowie Links zu ihren Quellen sind unten aufgeführt.
Beispiel-Playbook
Nachdem die Abhängigkeiten installiert sind, müssen Sie nur noch die Rolle zu Ihrem Haupt-Playbook hinzufügen. Die Rolle behandelt das become
-Verhalten, sodass Sie die Rolle einfach zu Ihrem Playbook hinzufügen können, ohne sich um Befehle zu kümmern, die nicht als Root ausgeführt werden sollten:
- hosts: all
roles:
- professormanhattan.homebrew
Wenn Sie diese Rolle in ein bestehendes Playbook integrieren, kann es sinnvoll sein, die in pyproject.toml
und requirements.yml
aufgeführten Anforderungen in die entsprechenden Dateien im Hauptverzeichnis Ihres Playbooks zu kopieren, sodass Sie sich bei zukünftigen Verwendungen nur um die Installation einer Anforderungssatzes kümmern müssen. Beachten Sie, dass die Abhängigkeiten in pyproject.toml
in die traditionellere requirements.txt
verschoben werden können, wenn Sie diese derzeit verwenden, um Python-Abhängigkeiten zu verfolgen.
Beispiel aus der Praxis
Sie finden ein Beispiel für ein Playbook, das diese Rolle in unserem Haupt-Playbook (auch bekannt als Gas Station) integriert. Das Playbook ist ein hervorragendes Beispiel für jemanden, der lernt, wie man Ansible verwendet. Es enthält auch viele durchdachte Build-Tools, die fortgeschrittene Ansible-Nutzer zu schätzen wissen. Und auch Menschen, die sich nicht um Ansible kümmern, können davon profitieren, denn es ermöglicht Ihnen, Ihren Computer (und Ihr Netzwerk) mehr oder weniger in die ultimative Entwicklungsumgebung zu verwandeln. Alles in allem ist es ein großartiges Projekt, das Entwickler kennen sollten!
Mitwirken
Beiträge, Probleme und Funktionsanfragen sind willkommen! Sie können die Seite für Probleme besuchen. Wenn Sie einen Beitrag leisten möchten, werfen Sie bitte einen Blick auf den Leitfaden zum Mitwirken.
Unterstützung
Lieber großartiger Mensch,
Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job, ein Zuhause und so viel Fast Food habe, wie ich kann, wäre es dennoch ganz schön, von der Community für etwas geschätzt zu werden, an dem ich viel Zeit und Geld investiert habe. Bitte überlegen Sie, mich zu unterstützen! Wer weiß? Vielleicht kann ich meinen Job kündigen und Open Source in Vollzeit veröffentlichen.
Herzlichst,
Brian Zalewski
Partner
Im Folgenden finden Sie eine Liste von Diensten, die wir nutzen und die spezielle Anreize bieten, wenn Sie sich über unsere speziellen Links anmelden:

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 megabyte-labs.homebrew