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
- Cechy
- Szybki start
- Obsługiwane systemy operacyjne
- Zależności
- Przykładowy playbook
- Wkład
- Licencja
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.
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
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:

Licencja
Copyright © 2020-2021 Megabyte LLC. Ten projekt jest licencjonowany na mocy MIT.
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install megabyte-labs.snapd