professormanhattan.snapd
Snap - Ein Linux-Paketmanager
Entwickelt von Megabyte Labs
Eine Ansible-Rolle, die sicherstellt, dass Snap auf Linux-Systemen installiert und korrekt konfiguriert ist
Inhalt
- Überblick
- Funktionen
- Schnellstart
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Beitragen
- Lizenz
Überblick
Dieses Repository ist das Zuhause 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 Snaps genannt werden, und das Tool, um sie zu verwenden, snapd, funktionieren über eine Reihe von Linux-Distributionen und ermöglichen es Softwareentwicklern, ihre Anwendungen direkt an die Benutzer zu verteilen. Snaps sind eigenständige Anwendungen, die in einer Sandbox laufen mit kontrolliertem Zugriff auf das Hosts-System.
Funktionen
Stellt sicher, dass Snap installiert ist:
- Installiert Snap auf Linux-Systemen
- Stellt sicher, dass Snap gestartet wird und beim Systemstart aktiviert ist
Schnellstart
Möchten Sie Snap installieren, ohne sich mit Ansible auseinandersetzen zu müssen? Führen Sie einfach den folgenden Befehl aus, der zu Ihrem Betriebssystem passt:
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 er sicher ist, aber bevor Sie ein Skript auf Ihrem Computer ausführen, sollten Sie es inspizieren.
Sie können auch Install Doctor ausprobieren. Es ist eine App, die wir erstellt haben, die jede Ansible-Rolle mit einer einzigen Zeile installieren kann. Es hat auch einige andere nette Funktionen, z.B. die Möglichkeit, Binärdateien ohne Passworteingabe unterwegs zu installieren. Wenn Sie jedoch diese Rolle in ein Ansible-Playbook einfügen (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 durch die Ansible Molecule-Tests generiert, die sich im Ordner molecule/
befinden. Es gibt eine CI-Logik, um automatisch die Tests für Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux zu handhaben. Wenn Ihr Betriebssystem nicht aufgelistet ist, aber eine Variante eines der Systeme ist, die wir testen (also ein Debian-basiertes System oder ein RedHat-basiertes System), dann kann es sein, dass die Rolle trotzdem funktioniert.
OS-Familie | OS-Version | Status | Idempotent | Getestet auf |
---|
Was bedeutet idempotent? Idempotent bedeutet, dass wenn Sie diese Rolle zwei Mal hintereinander ausführen, es beim zweiten Mal keine Änderungen am System gibt.
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, finden Sie möglicherweise unsere Ansible Common Dateien und unsere Ansible-Dokumentation Repositories interessant. Weitere Einzelheiten finden Sie im Leitfaden CONTRIBUTING.md.
Abhängigkeiten
Die meisten unserer Rollen basieren auf Ansible Galaxy Sammlungen. Einige unserer Projekte hängen auch von anderen Rollen und Sammlungen ab, die auf Ansible Galaxy veröffentlicht sind. Bevor Sie diese Rolle ausführen, müssen Sie die Sammlung und Rollenabhä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 sich nicht um die Entwicklungsvoraussetzungen kümmern möchten. Dies ist der einfache Weg, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Python
Obwohl das einzige Werkzeug, das erforderlich ist, um dieses Play auf einer Standardmaschine auszuführen, Ansible (ein Python-Paket) ist, enthalten wir mehrere andere Python-Abhängigkeiten, die für spezialisierte Anwendungsfälle und Entwicklungen 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 | Benutzerdefiniertes Tool zum Erstellen fortschrittlicher Dokumentationen (z.B. es erstellt das Kompatibilitätsschema und einige andere Diagramme) | |
black | Automatisches Formatierungstool für Python-Dateien, falls das Projekt Python-Testskripte verwendet | |
blocklint | Linting-Tool, das verhindert, dass bestimmte Wörter in den Code-Eingang gelangen | |
flake8 | Python-Linter, der Python-Syntax und -Stil-Fehler meldet | |
mod-ansible-autodoc | Benutzerdefinierte Fork von ansible-autodoc, die es uns ermöglicht, Dokumentationen 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 beim Linting nützlich sind | |
proselint | Linter, der zur Verbesserung der englischen Sprache verwendet wird (wird verwendet, um die Dokumentation zu verbessern) | |
yamllint | Linter für YAML-Dateien, der sicherstellt, dass die richtige Syntax und Formatsierung verwendet wird |
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 fortgesetzt werden 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 pro Playbook nur einmal ausgeführt werden. Wenn Sie mehr als eine unserer Rollen in Ihr Playbook aufnehmen, die gemeinsame Abhängigkeiten haben, wird die Installationsabhängigkeit nach der ersten Ausführung übersprungen. Einige unserer Rollen verwenden auch Hilfsrollen direkt aus den Aufgaben, was hilft, unser Hauptplaybook (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. die in meta/main.yml
aufgeführten Rollenabhängigkeiten, Hilfsrollen, Sammlungen usw.). Zu Ihrer Bequemlichkeit finden Sie eine Liste der Rollenabhängigkeiten mit kurzen Beschreibungen unten:
rollenabhängigkeiten
Galaxy-Kollektionen
Diese Rolle ist von mehreren Ansible Galaxy-Sammlungen abhängig. Die Sammlungen sowie Links zu ihrer Quelle 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 übernimmt das become
Verhalten, Sie können die Rolle also einfach zu Ihrem Playbook hinzufügen, ohne sich um Befehle zu kümmern, die nicht als root ausgeführt werden sollten:
- hosts: alle
rollen:
- professormanhattan.snapd
Wenn Sie diese Rolle in ein vorhandenes Playbook einfügen, kann es ratsam sein, die Anforderungen, die in pyproject.toml
und requirements.yml
aufgeführt sind, in die entsprechenden Dateien im Stamm Ihres Playbooks zu kopieren, sodass Sie sich nur um die Installation eines Satzes von Anforderungen während der zukünftigen Nutzung kümmern müssen. Beachten Sie, dass die Abhängigkeiten in pyproject.toml
in die traditionellere requirements.txt
verschoben werden können, falls Sie diese zur Verfolgung von Python-Abhängigkeiten verwenden.
Echtes Beispiel
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 integriert auch viele durchdachte Build-Tools, die fortgeschrittene Ansible-Nutzer zu schätzen wissen. Und Menschen, die sich nicht um Ansible kümmern, können ebenfalls davon profitieren, weil es Ihnen im Grunde ermöglicht, Ihren Computer (und Ihr Netzwerk) in die ultimative Entwicklungsumgebung zu verwandeln. Die Quintessenz ist, dass es ein großartiges Projekt ist, von dem Entwickler wissen sollten!
Beitragen
Beiträge, Probleme und Funktionsanfragen sind willkommen! Fühlen Sie sich frei, die Probleme-Seite zu überprüfen. Wenn Sie beitragen möchten, werfen Sie bitte einen Blick auf den Leitfaden zum Beitragen.
Sponsoring
Liebe großartige Person,
Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job, ein Dach über dem Kopf und so viel Fast Food wie ich vertrage habe, wäre es trotzdem ziemlich toll, von der Community für etwas gewürdigt 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 Vollzeit 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 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 professormanhattan.snapd