professormanhattan.snapd
Snap - Menedżer pakietów Linux
Stworzone przez Megabyte Labs
Rola Ansible, która zapewnia zainstalowanie i odpowiednią konfigurację Snap na systemach Linux
Spis treści
- Przegląd
- Funkcje
- Szybki start
- Obsługiwane systemy operacyjne
- Zależności
- Przykładowy playbook
- Wnoszenie wkładu
- Licencja
Przegląd
To repozytorium jest domem dla roli Ansible, która zapewnia, że Snap jest zainstalowany i prawidłowo skonfigurowany na systemach Linux. Snap to system pakowania i wdrażania oprogramowania opracowany przez Canonical dla systemów operacyjnych działających na jądrze Linux. Pakiety zwane snapami oraz narzędzie do ich używania, snapd, działają w różnych dystrybucjach Linuxa i pozwalają deweloperom oprogramowania na bezpośrednie udostępnianie aplikacji użytkownikom. Snaps to samowystarczalne aplikacje działające w piaskownicy z ograniczonym dostępem do systemu gospodarza.
Funkcje
Zapewnia, że Snap jest zainstalowany:
- Instaluje Snap na systemach Linux
- Zapewnia, że Snap jest uruchomiony i włączony przy rozruchu systemu
Szybki start
Chcesz zainstalować Snap bez zajmowania się Ansible? Po prostu uruchom poniższe polecenie odpowiednie dla swojego systemu operacyjnego:
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: Zanim uruchomisz powyższe polecenia, warto bezpośrednio sprawdzić URL, aby upewnić się, że kod jest legitny. Już wiemy, że jest bezpieczny, ale przed uruchomieniem jakiegokolwiek skryptu na swoim komputerze powinieneś go zbadać.
Możesz również sprawdzić Install Doctor. To aplikacja, którą stworzyliśmy, aby można było zainstalować dowolną rolę Ansible jednym poleceniem. Posiada również inne przydatne funkcje, jak możliwość instalowania binarek na bieżąco bez konieczności podawania hasła. Jednak jeśli chciałbyś włączyć tę rolę do playbooka Ansible (i dostosować ustawienia), kontynuuj czytanie poniżej.
Obsługiwane systemy operacyjne
Tabela poniżej pokazuje systemy operacyjne, na których przetestowaliśmy tę rolę. Jest automatycznie generowana przy użyciu testów Ansible Molecule znajdujących się w folderze molecule/
. Posiadamy logikę CI, 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 testowanych systemów (np. system oparty na Debianie lub RedHat), istnieje możliwość, że rola wciąż będzie działać.
Rodzina OS | Wersja OS | Status | Idempotencyjny | Testowane na |
---|
Co to znaczy, że jest idempotentny? Idempotentny oznacza, że jeśli uruchomisz tę rolę dwa razy z rzędu, to nie będzie żadnych zmian w systemie za drugim razem.
Poświęciliśmy dużo czasu na doskonalenie naszych konfiguracji CI i narzędzi budowlanych. Jeśli chcesz dowiedzieć się więcej o tym, jak zoptymalizowaliśmy nasz proces, możesz być zainteresowany naszymi wspólnymi plikami Ansible oraz dokumentacją Ansible. Zobacz przewodnik CONTRIBUTING.md po więcej szczegółów.
Zależności
Większość naszych ról opiera się na kolekcjach Ansible Galaxy. Niektóre nasze projekty są również uzależnione od innych ról i kolekcji publikowanych w Ansible Galaxy. Zanim uruchomisz tę rolę, musisz zainstalować zależności kolekcji i ról, a także wymagania Python, wykonują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, możesz po prostu uruchomić bash .config/scripts/start.sh
, jeśli jesteś nowy w Ansible i nie masz nic przeciwko zainstalowaniu także wymagań developerskich. To łatwy sposób na upewnienie się, że wszystko działa poprawnie.
Python
Chociaż jedynym narzędziem niezbędnym do uruchomienia tego play na standardowej maszynie jest Ansible (pakiet Python), dołączamy także kilka innych zależności Python, które są potrzebne do specjalnych zastosowań i rozwoju. Tabela poniżej szczegółowo opisuje te pakiety:
Paket | Opis | Wymagany |
---|---|---|
ansible | System 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 maszyn Vagrant | ✔️ |
pywinrm | Wymagany do provisionowania maszyn Windows korzystających z WinRM | ✔️ |
ansible-lint | Narzędzie lintingowe dla plików Ansible | |
ansibler | Niestandardowe narzędzie do generowania zaawansowanej dokumentacji (np. generuje tabelę zgodności i inne wykresy) | |
black | Auto-formatka plików Python, w przypadku gdy projekt wykorzystuje skrypty testowe Python | |
blocklint | Narzędzie lintingowe, które zapobiega wprowadzeniu niektórych słów do bazy kodu | |
flake8 | Linter Pythona, który raportuje błędy składni i stylu | |
mod-ansible-autodoc | Niestandardowa wersja ansible-autodoc, która pozwala na 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 maszyn Vagrant | |
pre-commit-hooks | Zestaw narzędzi przydatnych do lintingu | |
proselint | Linter używany do generowania poprawek w języku angielskim (wykorzystywany do poprawy dokumentacji) | |
yamllint | Linter dla plików YAML, który zapewnia poprawną składnię i styl |
Rola Galaxy
Chociaż większość naszych ról nie ma zależności, są przypadki, gdy inna rola musi być zainstalowana, zanim logika będzie mogła zostać kontynuowana. Na początku wykonywania roli, zależności z Galaxy Ansible wymienione w meta/main.yml
będą działały. Te zależności są skonfigurowane w taki sposób, aby działały tylko raz na playbook. Jeśli w swoim playbooku uwzględnisz więcej niż jedną z naszych ról, które mają wspólne zależności, instalacja zależności zostanie pominięta po pierwszym uruchomieniu. Niektóre nasze role korzystają również z pomocniczych ról bezpośrednio w plikach z zadaniami, co pomaga w utrzymaniu naszego głównego playbooka (Gas Station) w duchu DRY.
Plik requirements.yml
zawiera pełną listę zależności z Ansible Galaxy wymaganych przez tę rolę (tj. zależności roli z meta/main.yml
, role pomocnicze, kolekcje itp.). Dla Twojej wygody poniżej znajduje się lista zależności ról oraz ich krótkie opisy:
dependencies_ról
Kolekcje Galaxy
Ta rola zależy od kilku kolekcji Ansible Galaxy. Kolekcje oraz linki do ich źródeł są wymienione poniżej.
Przykładowy playbook
Gdy zainstalujesz wszystkie zależności, wszystko co musisz zrobić to dodać rolę do swojego głównego playbooka. Rola obsługuje zachowanie become
, dzięki czemu możesz po prostu dodać rolę do swojego playbooka bez martwienia się o komendy, które nie powinny być uruchamiane jako root:
- hosts: all
roles:
- professormanhattan.snapd
Jeśli włączasz tę rolę do już istniejącego playbooka, warto skopiować wymagania opisane w pyproject.toml
oraz requirements.yml
do odpowiednich plików w głównym katalogu Twojego playbooka, abyś musiał martwić się tylko o zainstalowanie jednego zestawu wymagań przy przyszłym użyciu. Zauważ, że zależności w pyproject.toml
mogą być przeniesione do bardziej tradycyjnego requirements.txt
, jeśli to właśnie używasz do śledzenia zależności Python.
Przykład z życia wzięty
Możesz znaleźć przykład playbooka, który włącza tę rolę w naszym głównym playbooku (tzw. Gas Station). Playbook ten jest doskonałym przykładem dla kogoś, kto uczy się korzystać z Ansible. Zawiera także wiele przemyślanych narzędzi budowlanych, które bardziej zaawansowani użytkownicy Ansible mogą docenić. A ludzie, którzy nie są zainteresowani Ansible, również mogą skorzystać z niego, ponieważ pozwala to przemienić komputer (i sieć) w doskonałe środowisko deweloperskie. Ostatecznie jest to wspaniały projekt, o którym powinien wiedzieć każdy programista!
Wnoszenie wkładu
Wszelkie wkłady, problemy i prośby o funkcje są mile widziane! Nie krępuj się sprawdzić strony z problemami. Jeśli chciałbyś wnieść swój wkład, zapoznaj się z przewodnikiem po wnoszeniu wkładu.
Wsparcie
Droga Osobo,
Tworzę projekty open source z miłości. Mimo że mam pracę, dach nad głową i tyle jedzenia, ile mogę zjeść, byłoby naprawdę miło być docenionym przez społeczność za coś, na co poświęciłem dużo czasu i pieniędzy. Proszę, rozważ wsparcie mnie! Kto wie? Może będę mógł zrezygnować z pracy i publikować open source na pełen etat.
Z szacunkiem,
Brian Zalewski
Partnerzy
Poniżej znajdziesz listę usług, z których korzystamy i które oferują specjalne korzyści za rejestrację w ich serwisach przez nasze specjalne linki:

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