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.

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

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

Sponsorzy Open Collective Sponsorzy GitHub Patreon

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:

MailChimp Odznaka polecenia DigitalOcean

Licencja

Copyright © 2020-2021 Megabyte LLC. Projekt jest licencjonowany na podstawie MIT. ```

Zainstaluj
ansible-galaxy install megabyte-labs.homebrew
Licencja
other
Pobrania
7.9k
Właściciel
Free open-source developer tools for managing massive amounts of code