megabyte-labs.homebrew
<!-- ⚠️ Ten README został wygenerowany z pliku ".config/docs/blueprint-readme-role.md" ⚠️-->
<div align="center">
<center>
<a href="https://github.com/megabyte-labs/ansible-homebrew">
<img width="148" height="148" alt="Logo Homebrew" src="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/raw/master/logo.png" />
</a>
</center>
</div>
<div align="center">
<center><h1 align="center"><i></i>Homebrew - Menedżer Pakietów dla macOS/Linux<i></i></h1></center>
<center><h4 style="color: #18c3d1;">Stworzone przez <a href="https://megabyte.space" target="_blank">Megabyte Labs</a></h4><i></i></center>
</div>
<div align="center">
<a href="https://megabyte.space" title="Strona główna Megabyte Labs" target="_blank">
<img alt="Strona Główna" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Strona%20G%C5%82%C3%B3wna&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/ansible-homebrew/blob/master/docs/CONTRIBUTING.md" title="Dowiedz się, jak się przyczynić" target="_blank">
<img alt="Przyczynianie się" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style=for-the-badge" />
</a>
<a href="https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/" title="Czatuj z nami na Slacku" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Czat-e01e5a?logo=slack&logoColor=white&style=for-the-badge" />
</a>
<a href="https://gitter.im/megabyte-labs/community" title="Czatuj z społecznością na Gitterze" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/ansible-homebrew" title="Lustro GitHub" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style=for-the-badge" />
</a>
<a href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew" title="Repozytorium GitLab" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style=for-the-badge" />
</a>
</div>
<br/>
<div align="center">
<a title="Rola Ansible: professormanhattan.homebrew" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Rola Ansible: professormanhattan.homebrew" src="https://img.shields.io/ansible/role/57302?logo=ansible&style=flat-square" />
</a>
<a title="Wersja: 1.0.0" href="https://github.com/megabyte-labs/ansible-homebrew" target="_blank">
<img alt="Wersja: 1.0.0" src="https://img.shields.io/badge/version-1.0.0-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACNJREFUCNdjIACY//+BEp9hhM3hAzYQwoBIAqEDYQrCZLwAAGlFKxU1nF9cAAAAAElFTkSuQmCC&cacheSeconds=2592000&style=flat-square" />
</a>
<a title="Status budowy w GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="Status budowy" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=master&label=build&logo=gitlab&logoColor=white&style=flat-square" />
</a>
<a title="Status testów Windows 11 na GitHubie" href="https://github.com/megabyte-labs/ansible-homebrew/actions/workflows/Windows.yml" target="_blank">
<img alt="Status testów Windows 11" src="https://img.shields.io/github/workflow/status/ProfessorManhattan/ansible-homebrew/Windows%20Ansible%20Role%20Test/master?color=cyan&label=windows&logo=windows&style=flat-square" />
</a>
<a title="Status testów macOS na GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="Status testów macOS" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=test%2Fdarwin&label=osx&logo=apple&style=flat-square" />
</a>
<a title="Status testów Linux Molecule na GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="Status testów Linux Molecule" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=test%2Flinux&label=linux&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAElBMVEUAAAAwPEEuOEIxOzswPj7///91+pI+AAAABXRSTlMANRkNJejDPNcAAAB+SURBVCjPddHBDYAgDIXhGtMRHMG7S3hvTP79VxFIQVq1wOVLm7wU8QIJpSThC2wGwwJoPQFKRdiAAIhGsAykZNSZAOVNMx4BMjwtpySgr6CDJdB/MAdJwAvSiFoE5aABHUb0ch0WHNQq+KPAOgCgrbEnbjAHArjGz3jr3hpumrQpvwi66rkAAAAASUVORK5CYII=&style=flat-square" />
</a>
<a title="Jakość Ansible Galaxy (w skali 5)" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Ocena jakości Ansible Galaxy" src="https://img.shields.io/ansible/quality/57302?logo=ansible&style=flat-square" />
</a>
<a title="Liczba pobrań Ansible Galaxy" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Liczba pobrań Ansible Galaxy" src="https://img.shields.io/ansible/role/d/57302?logo=ansible&label=pobrania&style=flat-square" />
</a>
<a title="Dokumentacja" href="https://megabyte.space/docs/ansible" target="_blank">
<img alt="Dokumentacja" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=readthedocs&logoColor=white&style=flat-square" />
</a>
<a title="Licencja: MIT" href="https://github.com/megabyte-labs/ansible-homebrew/blob/master/LICENSE" target="_blank">
<img alt="Licencja: MIT" src="https://img.shields.io/badge/license-MIT-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style=flat-square" />
</a>
</div>
> <br/><h4 align="center">**Rola Ansible, która instaluje Homebrew (system zarządzania pakietami) na systemach macOS i Linux**</h4><br/>
<a href="#table-of-contents" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Spis Treści
- [Przegląd](#overview)
- [Funkcje](#features)
- [Szybki Start](#quick-start)
- [Obsługiwane Systemy Operacyjne](#supported-operating-systems)
- [Zależności](#dependencies)
- [Python](#python)
- [Role Galaxy](#galaxy-roles)
- [Kolekcje Galaxy](#galaxy-collections)
- [Przykładowy Playbook](#example-playbook)
- [Przykład z Życia Wzięty](#real-world-example)
- [Przyczynianie się](#contributing)
- [Partnerzy](#affiliates)
- [Licencja](#license)
<a href="#overview" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Przegląd
To repozytorium jest domem roli [Ansible](https://www.ansible.com/), która instaluje Homebrew (system zarządzania pakietami) na systemach macOS i Linux. [Homebrew](https://brew.sh/) to darmowy i otwartoźródłowy system zarządzania pakietami, który upraszcza instalację oprogramowania na systemie operacyjnym macOS Apple, a także na Linuxie. Nazwa ma sugerować ideę budowania oprogramowania na Macu, w zależności od gustu użytkownika.
<a href="#features" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Funkcje
**Zapewnia instalację Homebrew:**
- Sprawdza, czy Homebrew nie jest już zainstalowane
- Instaluje Homebrew na macOS i Linux
- Upewnia się, że plik `.bashrc` prawidłowo dodaje Homebrew do zmiennej `PATH`
**Instaluje pakiety Homebrew:**
- Upewnia się, że Homebrew oraz pakiety Homebrew są aktualne
- Instaluje skonfigurowaną listę pakietów Homebrew (za pomocą zmiennej `homebrew_packages`)
- Upewnia się, że wstępnie zainstalowane cask Homebrew są aktualne
- Instaluje skonfigurowaną listę cask Homebrew na macOS (za pomocą zmiennej `homebrew_casks`)
<a href="#quick-start" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Szybki Start
Chcesz zainstalować Homebrew bez zajmowania się [Ansible](https://www.ansible.com/)? Po prostu uruchom następujące polecenie zgodnie z Twoim systemem operacyjnym:
**Linux/macOS:**
```shell
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ś prawdopodobnie bezpośrednio przejść do URL-a, aby upewnić się, że kod jest prawdziwy. Już wiemy, że jest bezpieczny, ale zawsze powinieneś sprawdzić skrypt przed jego uruchomieniem na swoim komputerze.
Możesz również sprawdzić Install Doctor. To aplikacja, którą stworzyliśmy, która umożliwia instalację dowolnej roli Ansible jednym poleceniem. Ma także inne ciekawe funkcje, jak możliwość instalacji binariów w locie bez potrzeby podawania hasła. Jednak jeśli chcesz 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 testowaliśmy tę rolę. Jest automatycznie generowana przy użyciu testów Ansible Molecule znajdujących się w folderze molecule/
. Istnieje logika CI, która automatycznie obsługuje testowanie Windows, macOS, Ubuntu, Fedora, CentOS, Debian i Archlinux. Jeżeli Twój system operacyjny nie jest wymieniony, ale jest wariantem jednego z systemów, które testujemy (np. system z rodziny Debian lub RedHat), to istnieje prawdopodobieństwo, że rola również będzie działać.
Rodzina OS | Wersja OS | Status | Idempotent | Testowane W |
---|---|---|---|---|
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 oznacza idempotentność? Idempotentny znaczy, że jeśli uruchomisz tę rolę dwa razy z rzędu, to przy drugim uruchomieniu nie będzie żadnych zmian 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 udało nam się ulepszyć nasz proces, możesz znaleźć nasze wspólne pliki Ansible oraz dokumentację Ansible interesującymi. Zobacz przewodnik CONTRIBUTING.md dla dalszych szczegółów.
Zależności
Większość naszych ról polega na kolekcjach Ansible Galaxy. Niektóre z naszych projektów są również zależne od innych ról i kolekcji, które są opublikowane w Ansible Galaxy. Zanim uruchomisz tę rolę, musisz zainstalować zależności kolekcji i ról, a także wymagania 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 również wymagań rozwojowych. To łatwy sposób na zapewnienie, że wszystko działa prawidłowo.
Python
Chociaż jedynym narzędziem niezbędnym do uruchomienia tego play na standardowej maszynie jest Ansible (pakiet Pythona), dołączamy kilka innych zależności Pythona, które są wymagane w przypadku specjalnych 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 możliwość zasilania kontenerów Docker za pomocą Ansible | ✔️ |
python-vagrant | Wymagany do zasilania maszyn wirtualnych Vagrant | ✔️ |
pywinrm | Wymagany do zasilania maszyn z systemem Windows, które korzystają z WinRM | ✔️ |
ansible-lint | Narzędzie lintingowe dla plików Ansible | |
ansibler | Niestandardowe narzędzie używane do generowania zaawansowanej dokumentacji (np. generuje wykres zgodności i inne wykresy) | |
black | Automatyczny formatator plików Pythona uwzględniony w przypadku, gdy projekt wykorzystuje skrypty testowe w Pythonie | |
blocklint | Narzędzie lintingowe, które zapobiega wprowadzeniu pewnych słów do bazy kodu | |
flake8 | Linter Pythona, który zgłasza błędy składniowe i stylowe Pythona | |
mod-ansible-autodoc | Niestandardowy fork ansible-autodoc, który pozwala nam automatycznie generować dokumentację na podstawie komentarzy w plikach YAML roli | |
molecule | Ramy testowe dla Ansible | |
molecule-docker | Wtyczka Molecule do zasilania kontenerów Docker | |
molecule-vagrant | Wtyczka Molecule do zasilania maszyn wirtualnych Vagrant | |
pre-commit-hooks | Zestaw narzędzi przydatnych do lintowania | |
proselint | Linter używany do generowania poprawek w języku angielskim (używany do poprawy dokumentacji) | |
yamllint | Linter dla plików YAML, który zapewnia, że używana jest odpowiednia składnia i styl |
Role Galaxy
Chociaż większość naszych ról nie ma zależności, zdarzają się sytuacje, w których inna rola musi zostać zainstalowana przed kontynuacją logiki. Na początku play, zależności ról Ansible Galaxy wymienione w meta/main.yml
zostaną uruchomione. Te zależności są skonfigurowane tak, aby uruchamiały się tylko raz na playbook. Jeśli włączysz 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ż pomocnicze role bezpośrednio z plików zadań, co pomaga utrzymać nasz główny playbook (Gas Station) DRY.
Plik requirements.yml
zawiera pełną listę zależności Ansible Galaxy, które są wymagane przez tę rolę (tj. zależności ról w meta/main.yml
, role pomocnicze, kolekcje itd.). Dla Twojej wygody, poniżej znajduje się lista zależności ról wraz z krótkimi opisami:
role_dependencies
Kolekcje Galaxy
Ta rola zależy od wielu kolekcji Ansible Galaxy. Kolekcje wraz z linkami do ich źródeł są wymienione poniżej.
Przykładowy Playbook
Po zainstalowaniu zależności, wszystko co musisz zrobić, to dodać rolę do swojego głównego playbooka. Rola obsługuje zachowanie become
, więc możesz po prostu dodać rolę do swojego playbooka bez obawy o polecenia, które nie powinny być uruchamiane jako root:
- hosts: all
roles:
- professormanhattan.homebrew
Jeśli włączasz tę rolę do wcześniej istniejącego playbooka, może być rozsądne skopiować wymagania przedstawione w pyproject.toml
oraz requirements.yml
do odpowiadających im plików w głównym katalogu Twojego playbooka, abyś musiał się martwić o instalację jednego zestawu zależności podczas przyszłego użycia. Zwróć uwagę, że zależności w pyproject.toml
można przenieść do bardziej tradycyjnego requirements.txt
, jeśli to jest to, czego obecnie używasz do śledzenia zależności Pythona.
Przykład z Życia Wzięty
Możesz znaleźć przykład playbooka, który włącza tę rolę w naszym głównym playbooku (znanym również jako Gas Station). Ten 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 bardziej zaawansowani użytkownicy Ansible mogą docenić. A ludzie, którzy mają mało wspólnego z Ansible, również mogą na tym skorzystać, ponieważ pozwala to w pewnym sensie uczynić z twojego komputera (i sieci) ultimatum pod względem możliwości rozwoju. Wnioskując, to wspaniały projekt, o którym powinni wiedzieć deweloperzy!
Przyczynianie się
Wszelkie wkłady, zgłoszenia problemów i propozycje funkcji są mile widziane! Nie wahaj się sprawdzić strony zgłoszeń. Jeśli chcesz się przyczynić, zajrzyj do przewodnika dla przyczyniających się.
Wsparcie Finansowe
Drogi wspaniały człowieku,
Tworzę projekty open source z miłości. Chociaż mam pracę, dach nad głową i tyle fast foodów, ile mogę zjeść, to jednak 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 uda mi się rzucić pracę i publikować open source na pełny etat.
Z wyrazami szacunku,
Brian Zalewski
Partnerzy
Poniżej znajdziesz listę usług, z których korzystamy i które oferują specjalne promocje za zapisanie się na ich usługi przez nasze specjalne linki:

Licencja
Copyright © 2020-2021 Megabyte LLC. Projekt jest licencjonowany na podstawie MIT. ```
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install megabyte-labs.homebrew