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

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 zur PATH-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.

  • community.general Ansible Galaxy-Abzeichen
  • google.cloud Ansible Galaxy-Abzeichen

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

Open Collective Sponsoren GitHub-Sponsoren Patreon

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:

MailChimp DigitalOcean Referral Badge

Lizenz

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

Installieren
ansible-galaxy install megabyte-labs.homebrew
GitHub Repository
Lizenz
other
Downloads
7.9k
Besitzer
Free open-source developer tools for managing massive amounts of code