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

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.

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

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

Sponsorzy Open Collective Sponsorzy GitHub Patreon

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:

MailChimp DigitalOcean Referral Badge

Licencja

Copyright © 2020-2021 Megabyte LLC. Ten projekt jest objęty licencją MIT.

Zainstaluj
ansible-galaxy install professormanhattan.homebrew
Licencja
other
Pobrania
5.9k
Właściciel
Often imitated, never duplicated