professormanhattan.homebrew
Homebrew - Menedżer Pakietów dla macOS/Linux
Stworzone przez Megabyte Labs
Rola Ansible, która instaluje Homebrew (system zarządzania pakietami) na systemach macOS i Linux
Spis treści
- Przegląd
- Cechy
- Szybki start
- Obsługiwane systemy operacyjne
- Zależności
- Przykładowy plik playbooka
- Przyczynianie
- Licencja
Przegląd
To repozytorium to miejsce, w którym znajduje się rola Ansible, która instaluje Homebrew (system zarządzania pakietami) na systemach macOS i Linux. Homebrew to bezpłatny i otwartoźródłowy system zarządzania pakietami, który upraszcza instalację oprogramowania na systemie operacyjnym Apple macOS, jak również na Linuxie. Nazwa ma sugerować ideę budowania oprogramowania na Macu zgodnie z gustem użytkownika.
Cechy
Zapewnia instalację Homebrew:
- Sprawdza, czy Homebrew nie jest już zainstalowany
- Instaluje Homebrew na macOS i Linux
- Zapewnia poprawne dodanie Homebrew do zmiennej
PATH
w pliku.bashrc
Instaluje pakiety Homebrew:
- Zapewnia, że Homebrew i pakiety Homebrew są aktualne
- Instaluje konfigurowalną listę pakietów Homebrew (poprzez zmienną
homebrew_packages
) - Zapewnia, że wcześniej zainstalowane casksy Homebrew są aktualne
- Instaluje konfigurowalną listę casków Homebrew na macOS (poprzez zmienną
homebrew_casks
)
Szybki start
Chcesz zainstalować Homebrew, nie zajmując się Ansible? Po prostu uruchom następujące polecenie, które odpowiada twojemu systemowi operacyjnemu:
Linux/macOS:
curl -sS https://install.doctor/homebrew | 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/homebrew?os=win'))
Ważna uwaga: Zanim uruchomisz powyższe polecenia, powinieneś zapoznać się z adresem URL, aby sprawdzić, czy kod jest legitny. Już wiemy, że jest bezpieczny, ale przed uruchomieniem jakiegokolwiek skryptu na swoim komputerze, powinieneś go sprawdzić.
Możesz również sprawdzić Install Doctor. To aplikacja, którą stworzyliśmy, aby zainstalować dowolną rolę Ansible za pomocą jednego polecenia. Posiada również inne przydatne funkcje, takie jak możliwość instalacji binarek na bieżąco bez wymagania hasła. Jednak jeśli chciałbyś włączyć tę rolę do playbooka Ansible (i dostosować ustawienia), to kontynuuj czytanie poniżej.
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 znajdujących się w folderze molecule/
. Wprowadzono logikę CI, aby automatycznie obsługiwać testowanie systemów Windows, macOS, Ubuntu, Fedora, CentOS, Debian i Archlinux. Jeśli twój system operacyjny nie jest wymieniony, ale jest wariantem jednego z systemów, które testujemy (np. system Debian lub system RedHat), to możliwe, że rola i tak będzie działać.
Rodzina OS | Wersja OS | Status | Idempotent | Testowano na |
---|---|---|---|---|
ArchLinux | Najnowsza | ❌ |
❌ |
7 stycznia 2022 |
CentOS | 7 | ❌ |
❌ |
7 stycznia 2022 |
CentOS | 8 | ❌ |
❌ |
7 stycznia 2022 |
CentOS Stream | 8 | ❌ |
❌ |
7 stycznia 2022 |
Debian | 10 (Buster) | ❌ |
❌ |
7 stycznia 2022 |
Debian | 11 (Bullseye) | ❌ |
❌ |
7 stycznia 2022 |
Debian | 9 (Stretch) | ❌ |
❌ |
7 stycznia 2022 |
Fedora | 33 | ❌ |
❌ |
7 stycznia 2022 |
Fedora | 34 | ❌ |
❌ |
7 stycznia 2022 |
Fedora | 35 | ❌ |
❌ |
7 stycznia 2022 |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
7 stycznia 2022 |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
7 stycznia 2022 |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
7 stycznia 2022 |
Ubuntu | 21.10 (Impish Indri) | ✅ |
❌ |
7 stycznia 2022 |
Windows | 10 | ✅ |
❌ |
7 stycznia 2022 |
Co to znaczy, że jest idempotentne? Idempotentność oznacza, że jeśli uruchomisz tę rolę dwa razy z rzędu, to przy drugim uruchomieniu nie będzie zmian w systemie.
Poświęciliśmy dużo czasu na dopracowanie naszych konfiguracji CI i narzędzi budowlanych. Jeśli chcesz dowiedzieć się więcej o tym, jak dopracowaliśmy nasz proces, możesz znaleźć interesujące nasze wspólne pliki Ansible oraz dokumentację Ansible. Więcej szczegółów znajdziesz w przewodniku CONTRIBUTING.md.
Zależności
Większość naszych ról opiera się na kolekcjach Ansible Galaxy. Niektóre z naszych projektów zależą również od innych ról i kolekcji, które są publikowane na Ansible Galaxy. Zanim uruchomisz tę rolę, będziesz musiał zainstalować zależności kolekcji i ról, a także wymagania dotyczące Pythona, 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, 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ń do rozwoju. To łatwy sposób, aby upewnić się, że wszystko działa poprawnie.
Python
Chociaż jedynym narzędziem koniecznym do uruchomienia tego play na standardowej maszynie jest Ansible (pakiet Pythona), zawieramy również kilka innych zależności Pythona, które są wymagane dla wyspecjalizowanych przypadków użycia i rozwoju. Poniższa tabela szczegółowo opisuje te pakiety:
Pakiet | Opis | Wymagany |
---|---|---|
ansible | System zarządzania konfiguracją, który może zdalnie konfigurować komputery | ✔️ |
docker | Umożliwia provisionowanie kontenerów Docker z Ansible | ✔️ |
python-vagrant | Wymagany do provisionowania VMs Vagrant | ✔️ |
pywinrm | Wymagany do provisionowania maszyn Windows, które używają WinRM | ✔️ |
ansible-lint | Narzędzie lintingowe dla plików Ansible | |
ansibler | Niestandardowe narzędzie używane do generacji zaawansowanej dokumentacji (np. generuje wykres kompatybilności i inne wykresy) | |
black | Automatyczny formatator plików Pythona w przypadku, gdy projekt wykorzystuje skrypty testowe Pythona | |
blocklint | Narzędzie lintingowe, które zapobiega wprowadzaniu określonych słów do bazy kodu | |
flake8 | Linter Pythona, który raportuje błędy składni i stylu Pythona | |
mod-ansible-autodoc | Niestandardowa wersja ansible-autodoc, która umożliwia nam 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 VMs Vagrant | |
pre-commit-hooks | Zestaw narzędzi użytecznych do lintingu | |
proselint | Linter używany do generowania poprawy języka angielskiego (używany do poprawy dokumentacji) | |
yamllint | Linter dla plików YAML, który zapewnia prawidłową składnię i styl |
Role Galaxy
Chociaż większość naszych ról nie ma zależności, zdarzają się przypadki, kiedy inna rola musi być zainstalowana, zanim logika będzie mogła kontynuować. Na początku gry zostaną uruchomione zależności ról Ansible Galaxy wymienione w meta/main.yml
. Te zależności są skonfigurowane tak, aby uruchamiały się tylko raz na playbook. Jeśli zamieszasz więcej niż jedną z naszych ról w swoim playbooku, które mają wspólne zależności, to instalacja zależności zostanie pominięta po pierwszym uruchomieniu. Niektóre nasze role wykorzystują również pomocnicze role bezpośrednio z plików zadań, co pomaga utrzymać nasz główny playbook (Gas Station) w dobrym stylu.
Plik requirements.yml
zawiera pełną listę zależności 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 wraz z krótkimi opisami:
role_dependencies
Kolekcje Galaxy
Ta rola jest uzależniona od wielu kolekcji Ansible Galaxy. Kolekcje wraz z linkami do ich źródła są wymienione poniżej.
Przykładowy plik playbooka
Po zainstalowaniu zależności, wystarczy dodać rolę do swojego głównego playbooka. Rola obsługuje zachowanie become
, więc wystarczy dodać rolę do swojego playbooka, nie martwiąc się o polecenia, które nie powinny być uruchamiane jako root:
- hosts: all
roles:
- professormanhattan.homebrew
Jeśli dodajesz tę rolę do już istniejącego playbooka, warto skopiować wymagania zawarte w pyproject.toml
i requirements.yml
do odpowiadających im plików w głównym folderze twojego playbooka, aby mieć tylko jedną paczkę wymagań do zainstalowania w przyszłości. Należy zauważyć, że zależności w pyproject.toml
można przenieść do bardziej tradycyjnego pliku requirements.txt
, jeśli aktualnie używasz go do śledzenia zależności Pythona.
Przykład ze świata rzeczywistego
Możesz znaleźć przykład playbooka, który wykorzystuje tę rolę w naszym głównym playbooku (inaczej Gas Station). Playbook jest świetnym przykładem dla kogoś, kto uczy się, jak używać Ansible. Zawiera również wiele przemyślanych narzędzi do budowy, które bardziej zaawansowani użytkownicy Ansible mogą docenić. A ludzie, których Ansible zupełnie nie interesuje, mogą również na tym skorzystać, ponieważ pozwala ci w większym lub mniejszym stopniu przekształcić twój komputer (i sieć) w ostateczne środowisko deweloperskie. Podsumowując, to wspaniały projekt, o którym każdy deweloper powinien wiedzieć!
Przyczynianie
Wkłady, zgłoszenia problemów i prośby o nowe funkcje są mile widziane! Nie wahaj się sprawdzić strony z problemami. Jeśli chcesz się przyczynić, zapoznaj się z przewodnikiem dla przyczyniających się.
Sponsorowanie
Droga Wspaniała Osobo,
Tworzę projekty open source z miłości. Choć mam pracę, dach nad głową i tyle fast foodu, ile mogę zjeść, byłoby miło, gdyby społeczność doceniła 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ł rzucić pracę i publikować open source na pełen etat.
Z poważaniem,
Brian Zalewski
Affiliate
Poniżej znajdziesz listę usług, które wykorzystujemy, a które oferują specjalne benefity za zapisanie się do ich usług poprzez nasze specjalne linki:

Licencja
Copyright © 2020-2021 Megabyte LLC. Ten projekt jest objęty licencją MIT.
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install professormanhattan.homebrew