megabyte-labs.snapd

Snap - Menedżer Pakietów Linux

Stworzony przez Megabyte Labs



Rola Ansible, która zapewnia, że Snap jest zainstalowany i poprawnie skonfigurowany w systemach Linux


Spis treści

Przegląd

To repozytorium zawiera rolę Ansible, która zapewnia, że Snap jest zainstalowany i poprawnie skonfigurowany w systemach Linux. Snap to system pakowania i dystrybucji oprogramowania opracowany przez Canonical, przeznaczony dla systemów operacyjnych korzystających z jądra Linux. Pakiety, nazywane snapami, oraz narzędzie do ich używania, snapd, działają w różnych dystrybucjach Linuxa i pozwalają programistom oprogramowania dostarczać aplikacje bezpośrednio do użytkowników. Snaps to samodzielne aplikacje działające w piaskownicy z kontrolowanym dostępem do systemu głównego.

Cechy

Zapewnia, że Snap jest zainstalowany:

  • Instaluje Snap w systemach Linux
  • Zapewnia, że Snap jest uruchomiony i włączony przy starcie systemu

Szybki start

Chcesz zainstalować Snap bez korzystania z Ansible? Po prostu uruchom poniższe polecenie, które odpowiada twojemu systemowi operacyjnemu:

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'))

Ważna uwaga: Przed uruchomieniem powyższych poleceń powinieneś najpierw odwiedzić adres URL, aby upewnić się, że kod jest autentyczny. Już wiemy, że jest bezpieczny, ale warto go sprawdzić przed wykonaniem skryptu.

Możesz również sprawdzić Install Doctor. To aplikacja, którą stworzyliśmy, aby móc instalować dowolną rolę Ansible w jednozdaniowym poleceniu. Ma też inne ciekawe funkcje, takie jak możliwość instalacji binariów on-the-fly bez potrzeby podawania hasła. Jeśli jednak chciałbyś włączyć tę rolę do playbooka Ansible (i dostosować ustawienia), to czytaj dalej.

Obsługiwane systemy operacyjne

Tabela poniżej pokazuje systemy operacyjne, na których testowaliśmy tę rolę. Jest ona automatycznie generowana na podstawie testów Ansible Molecule zawartych w folderze molecule/. W systemie CI mamy logikę, która automatycznie obsługuje testowanie Windows, macOS, Ubuntu, Fedora, CentOS, Debian i Archlinux. Jeśli twój system operacyjny nie jest wymieniony, ale jest odmianą jednego z systemów, które testujemy (np. system oparty na Debianie lub RedHat), to możliwe, że rola nadal będzie działać.

Rodzina OS Wersja OS Status Idempotentny Testowane na

Co oznacza idempotentny? Idempotentny oznacza, że jeśli uruchomisz tę rolę dwa razy z rzędu, to przy drugim uruchomieniu nie będą wprowadzane żadne zmiany w systemie.

Spędziliśmy dużo czasu na doskonaleniu naszych konfiguracji CI i narzędzi budowlanych. Jeśli chcesz dowiedzieć się więcej o tym, jak doskonaliliśmy nasz proces, możesz znaleźć ciekawe informacje w naszych wspólnych plikach Ansible oraz w dokumentacji Ansible. Szczegóły znajdziesz w przewodniku CONTRIBUTING.md.

Zależności

Większość naszych ról opiera się na zbiorach Ansible Galaxy. Niektóre z naszych projektów są również uzależnione od innych ról i zbiorów opublikowanych w Ansible Galaxy. Przed uruchomieniem tej roli będziesz musiał zainstalować dane zależności oraz wymagania Pythonowe, uruchamiając:

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

Alternatywnie, jeśli jesteś nowy w Ansible i nie masz nic przeciwko zainstalowaniu wymagań deweloperskich, możesz po prostu uruchomić bash .config/scripts/start.sh. To łatwy sposób, aby upewnić się, że wszystko działa poprawnie.

Python

Chociaż jedynym narzędziem potrzebnym do uruchomienia tego play na standardowej maszynie jest Ansible (pakiet Pythonowy), dołączyliśmy również inne zależności Pythonowe, które są wymagane do specjalistycznych przypadków użycia i rozwoju. W poniższej tabeli szczegółowo opisano te pakiety:

Pakiet Opis Wymagany
ansible System do zarządzania konfiguracją, który może zdalnie konfigurować komputery
✔️
docker Umożliwia provisionowanie kontenerów Docker za pomocą Ansible
✔️
python-vagrant Wymagany do provisionowania VM Vagrant
✔️
pywinrm Wymagany do provisionowania maszyn Windows korzystających z WinRM
✔️
ansible-lint Narzędzie do sprawdzania poprawności plików Ansible
ansibler Narzędzie używane do generowania zaawansowanej dokumentacji (np. generuje wykresy zgodności i inne wykresy)
black Auto-formatowanie plików Python, używane w przypadku wykorzystywania skryptów testowych w Pythonie
blocklint Narzędzie do sprawdzania, które zapobiega pewnym słowom przed wejściem do bazy kodowej
flake8 Linter Python, który raportuje błędy składniowe i stylu w Pythonie
mod-ansible-autodoc Własna wersja ansible-autodoc, która umożliwia automatyczne generowanie dokumentacji na podstawie komentarzy w plikach YAML roli
molecule Framework testowy dla Ansible
molecule-docker Wtyczka Molecule do provisionowania kontenerów Docker
molecule-vagrant Wtyczka Molecule do provisionowania VM Vagrant
pre-commit-hooks Zestaw narzędzi użytecznych do sprawdzania poprawności
proselint Linter używany do generowania poprawek w języku angielskim (używany do poprawy dokumentacji)
yamllint Linter dla plików YAML, zapewniający użycie odpowiedniej składni i stylu

Rola Galaxy

Chociaż większość naszych ról nie ma zależności, są pewne przypadki, kiedy inna rola musi być zainstalowana przed kontynuowaniem logiki. Na początku odgrywania Ansible zainstaluje zależności ról Galaxy wymienione w meta/main.yml. Te zależności są skonfigurowane tak, aby działały tylko raz na playbook. Jeśli umieszczasz więcej niż jedną z naszych ról w swoim playbooku, które mają wspólne zależności, instalacja zależności zostanie pominięta po pierwszym uruchomieniu. Niektóre z naszych ról wykorzystują również role pomocnicze bezpośrednio z plików zadań, co pomaga utrzymać główny playbook (Stacja Benzynowa) w porządku.

Plik requirements.yml zawiera pełną listę zależności Ansible Galaxy wymaganych przez tę rolę (tj. zależności ról meta/main.yml, role pomocnicze, zbiory itd.). Dla Twojej wygody, poniżej znajduje się lista zależności ról wraz z krótkimi opisami:

role_dependencies

Zbiory Galaxy

Ta rola jest zależna od wielu zbiorów Ansible Galaxy. Zbiory oraz linki do ich źródeł są wymienione poniżej.

  • zbiór community.general w Ansible Galaxy
  • zbiór google.cloud w Ansible Galaxy

Przykładowy playbook

Gdy zależności są zainstalowane, wystarczy dodać rolę do głównego playbooka. Rola obsługuje zachowanie become, więc możesz po prostu dodać rolę do swojego playbooka, nie martwiąc się o polecenia, które nie powinny być uruchamiane jako root:

- hosts: all
  roles:
    - professormanhattan.snapd

Jeśli włączasz tę rolę do istniejącego już playbooka, warto skopiować wymagania określone w pyproject.toml i requirements.yml do odpowiadających plików w głównym katalogu twojego playbooka, abyś musiał martwić się tylko o zainstalowanie jednego zestawu wymagań w przyszłości. Zauważ, że zależności w pyproject.toml można przenieść do bardziej tradycyjnego requirements.txt, jeśli akurat to używasz do śledzenia zależności Pythonowych.

Przykład z życia wzięty

Możesz znaleźć przykład playbooka, który zawiera tę rolę w naszym głównym playbooku (znanym również jako Stacja Benzynowa). Playbook jest doskonałym przykładem dla kogoś, kto uczy się korzystać z Ansible. Zawiera również wiele przemyślanych narzędzi budowlanych, które mogą docenić bardziej zaawansowani użytkownicy Ansible. A osoby, które nie interesują się Ansible, również mogą zyskać, ponieważ pozwala to w dużej mierze przekształcić komputer (i sieć) w doskonałe środowisko deweloperskie. Kluczowym punktem jest to, że jest to wspaniały projekt, który powinni znać wszyscy deweloperzy!

Wkład

Wkłady, zgłaszanie problemów i pomysły na funkcje są mile widziane! Zachęcamy do sprawdzenia strony z problemami. Jeśli chciałbyś wnieść wkład, zapoznaj się z przewodnikiem po wkładzie.

Wsparcie

Droga Wspaniała Osobo,

Tworzę projekty open source z miłości. Choć mam pracę, dach nad głową i tyle fast foodów, ile tylko mogę zjeść, to byłoby super, gdybym otrzymał uznanie od społeczności za coś, na co poświęciłem dużo czasu i pieniędzy. Proszę, rozważ wsparcie mnie! Kto wie? Może uda mi się rzucić pracę i zająć się pełnoetatowym publikowaniem open source.

Z poważaniem,

Brian Zalewski

Sponsorzy Open Collective Sponsorzy GitHub Patreon

Partnerzy

Poniżej znajduje się lista usług, z których korzystamy i które oferują specjalne zachęty za zapisanie się do ich usług za pośrednictwem naszych specjalnych linków:

MailChimp Odznaka polecenia DigitalOcean

Licencja

Copyright © 2020-2021 Megabyte LLC. Ten projekt jest licencjonowany na mocy MIT.

Zainstaluj
ansible-galaxy install megabyte-labs.snapd
Licencja
other
Pobrania
3.5k
Właściciel
Free open-source developer tools for managing massive amounts of code