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

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.

  • community.general Ansible Galaxy Badge
  • google.cloud Ansible Galaxy Badge

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

Open Collective Sponsoren GitHub Sponsoren Patreon

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:

MailChimp DigitalOcean Referral Badge

Lizenz

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

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