megabyte-labs.snapd
Snap - Ein Paketmanager für Linux
Gestaltet von Megabyte Labs
Eine Ansible-Rolle, die sicherstellt, dass Snap auf Linux-Systemen installiert und richtig konfiguriert ist
Inhaltsverzeichnis
- Überblick
- Funktionen
- Schnellstart
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Mitwirken
- Lizenz
Überblick
Dieses Repository ist die Heimat einer Ansible-Rolle, die sicherstellt, dass Snap auf Linux-Systemen installiert und richtig konfiguriert ist. Snap ist ein Software-Paket- und Bereitstellungssystem, das von Canonical für Betriebssysteme entwickelt wurde, die den Linux-Kernel verwenden. Die Pakete, die Snap genannt werden, und das Werkzeug zu deren Verwendung, snapd, funktionieren über eine Vielzahl von Linux-Distributionen und ermöglichen es Softwareentwicklern, ihre Anwendungen direkt an die Nutzer zu verteilen. Snaps sind eigenständige Anwendungen, die in einer Sandbox laufen und kontrollierten Zugriff auf das Hauptsystem haben.
Funktionen
Stellt sicher, dass Snap installiert ist:
- Installiert Snap auf Linux-Systemen
- Stellt sicher, dass Snap gestartet und beim Systemstart aktiviert ist
Schnellstart
Möchten Sie Snap installieren, ohne sich mit Ansible beschäftigen zu müssen? Führen Sie einfach den folgenden Befehl entsprechend Ihrem Betriebssystem aus:
Linux/macOS:
curl -sS https://install.doctor/snapd | 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/snapd?os=win'))
Wichtiger Hinweis: Bevor Sie die obigen Befehle ausführen, sollten Sie wahrscheinlich direkt die URL 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 einer einzigen Zeile installieren kann. Es hat auch einige andere nützliche Funktionen, wie die Möglichkeit, Binärdateien ohne Passwortabfrage in Echtzeit zu installieren. Wenn Sie jedoch diese Rolle in ein Ansible-Playbook einfügen möchten (und Einstellungen anpassen), 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 Ordner molecule/
verwendet werden. Es gibt CI-Logik, die automatisch die Tests für Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux verarbeitet. 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), dann ist es möglich, dass die Rolle trotzdem funktioniert.
OS-Familie | OS-Version | Status | Idempotenz | Getestet auf |
---|
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 an unseren Allgemeinen Ansible-Dateien und Ansible-Dokumentationen interessiert sein. Siehe den CONTRIBUTING.md-Leitfaden für weitere Details.
Abhängigkeiten
Die meisten unserer Rollen sind auf Ansible Galaxy Kollektionen angewiesen. Einige unsere Projekte sind ebenfalls von anderen Rollen und Kollektionen abhängig, die auf Ansible Galaxy veröffentlicht sind. Bevor Sie diese Rolle ausführen, müssen Sie die Abhängigkeiten der Kollektionen und Rollen 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 auch die Entwicklungsanforderungen installiert werden. Dies ist der einfache Weg, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Python
Obwohl das einzige Tool, das nötig ist, um dieses Play auf einem Standardrechner auszuführen, Ansible (ein Python-Paket) ist, fügen wir mehrere andere Python-Abhängigkeiten hinzu, die für spezialisierte Anwendungsfälle und Entwicklung erforderlich sind. Die folgende Tabelle beschreibt 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 | Ein benutzerdefiniertes Tool zur Erstellung fortgeschrittener Dokumentation (z.B. es generiert die Kompatibilitätstabelle und einige andere Tabellen) | |
black | Python-Datei-Automatizierer, falls das Projekt Python-Testskripte verwendet | |
blocklint | Linting-Tool, das bestimmte Wörter daran hindert, in den Code zu gelangen | |
flake8 | Python-Linter, der Python-Syntax- und Stilfehler meldet | |
mod-ansible-autodoc | Benutzerdefinierte Abzweigung von ansible-autodoc, die es uns ermöglicht, Dokumentation 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 | Eine Sammlung von nützlichen Linting-Tools | |
proselint | Linter, der verwendet wird, um Verbesserungen der englischen Sprache zu generieren (wird zur Verbesserung der Dokumentation verwendet) | |
yamllint | Linter für YAML-Dateien, der sicherstellt, dass die richtige Syntax und der richtige Stil verwendet werden |
Galaxy-Rollen
Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es einige Fälle, in denen eine andere Rolle installiert werden muss, bevor die Logik fortfahren kann. Zu Beginn des Plays werden die in meta/main.yml
aufgeführten Ansible Galaxy-Rollenabhängigkeiten ausgeführt. Diese Abhängigkeiten sind so konfiguriert, dass sie nur einmal pro Playbook ausgeführt werden. Wenn Sie mehr als eine unserer Rollen in Ihr Playbook aufnehmen, die gemeinsame Abhängigkeiten haben, wird die Installation der Abhängigkeiten nach dem ersten Lauf übersprungen. Einige unserer Rollen nutzen auch Hilfsrollen direkt aus den Aufgaben-Dateien, was hilft, unser Haupt-Playbook (Tankstelle) DRY zu halten.
Die Datei requirements.yml
enthält eine vollständige Liste der für diese Rolle erforderlichen Ansible Galaxy-Abhängigkeiten (d.h. meta/main.yml
Rollenabhängigkeiten, Hilfsrollen, Kollektionen usw.). Zur Ihrer Bequemlichkeit finden Sie eine Liste der Rollenabhängigkeiten zusammen mit kurzen Beschreibungen unten:
role_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, müssen Sie nur die Rolle zu Ihrem Haupt-Playbook hinzufügen. Die Rolle übernimmt das become
-Verhalten, sodass Sie die Rolle einfach zu Ihrem Playbook hinzufügen können, ohne sich um Befehle kümmern zu müssen, die nicht als Root ausgeführt werden sollten:
- hosts: all
roles:
- professormanhattan.snapd
Wenn Sie diese Rolle in ein bereits bestehendes Playbook integrieren, könnte es sinnvoll sein, die Anforderungen aus pyproject.toml
und requirements.yml
in die entsprechenden Dateien im Root-Verzeichnis Ihres Playbooks zu kopieren, damit Sie sich nur um die Installation einer Anforderung für die zukünftige Verwendung kümmern müssen. Beachten Sie, dass die Abhängigkeiten in pyproject.toml
in die traditionellere requirements.txt
verschoben werden können, wenn Sie derzeit diese Datei zur Verfolgung von Python-Abhängigkeiten verwenden.
Echtes Beispiel
Sie finden ein Beispiel für ein Playbook, das diese Rolle integriert, in unserem Haupt-Playbook (auch bekannt als Tankstelle). Das Playbook ist ein ausgezeichnetes Beispiel für jemanden, der lernt, wie man Ansible benutzt. Es enthält auch viele durchdachte Build-Tools, die auch fortgeschrittenen Ansible-Benutzern gefallen. Und Menschen, denen Ansible herzlich egal ist, können auch davon profitieren, da es Ihnen in der Regel ermöglicht, Ihren Computer (und Ihr Netzwerk) in die ultimative Entwicklungsumgebung zu verwandeln. Zusammenfassend ist es ein großartiges Projekt, das Entwickler kennen sollten!
Mitwirken
Beiträge, Probleme und Funktionsanfragen sind willkommen! Überprüfen Sie gerne die Issues-Seite. Wenn Sie beitragen möchten, werfen Sie bitte einen Blick auf den Mitwirkungsleitfaden.
Unterstützung
Lieber großartiger Mensch,
Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job, ein Dach über dem Kopf und so viel Fast Food, wie ich ertragen kann, habe, wäre es trotzdem ziemlich cool, von der Community für etwas geschätzt zu werden, an dem ich viel Zeit und Geld investiert habe. Bitte ziehen Sie in Betracht, mich zu sponsern! Wer weiß? Vielleicht kann ich meinen Job aufgeben und Vollzeit Open Source veröffentlichen.
Mit freundlichen Grüßen,
Brian Zalewski
Partner
Unten finden Sie eine Liste von Diensten, die wir nutzen und die spezielle Anreize bieten, wenn Sie sich über unsere speziellen Links für ihre Dienste anmelden:

Lizenz
Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install megabyte-labs.snapd