megabyte-labs.java

Java

Stworzony przez Megabyte Labs



Rola Ansible, która instaluje Java na prawie każdej platformie


Spis Treści

Przegląd

To repozytorium to dom dla Ansible roli, która instaluje Java na prawie każdej platformie. Java to język programowania, który opiera się na klasach i jest zorientowany obiektowo, zaprojektowany tak, aby miał jak najmniej zależności implementacyjnych.

Funkcje

Zapewnia instalację Java:

  • Instaluje Java przy użyciu Chocolatey na Windows
  • Ustawia zmienną JAVA_HOME
  • Instaluje Java na systemach macOS, Linux i Windows
  • Upewnia się, że Java jest dodana do PATH

Optymalizacja dla Windows:

  • Usuwa folder Java z menu startowego na Windows

Szybki start

Chcesz zainstalować Java bez konieczności używania Ansible? Wystarczy uruchomić następujące polecenie, które odpowiada Twojemu systemowi operacyjnemu:

Linux/macOS:

curl -sS https://install.doctor/java | 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/java?os=win'))

Ważna uwaga: Przed uruchomieniem powyższych poleceń powinieneś najpierw bezpośrednio uzyskać dostęp do URL, aby upewnić się, że kod jest legalny. Wiemy, że jest bezpieczny, ale przed uruchomieniem jakiegokolwiek skryptu na swoim komputerze powinieneś go przeanalizować.

Możesz również sprawdzić Install Doctor. To aplikacja, którą stworzyliśmy, aby móc zainstalować każdą rolę Ansible za pomocą jednego polecenia. Oferuje także inne przydatne funkcje, takie jak możliwość instalowania binariów na bieżąco bez konieczności podawania hasła. Jeśli chcesz włączyć tę rolę do playbooka Ansible (i dostosować ustawienia), to czytaj dalej.

Obsługiwane systemy operacyjne

Tabela poniżej pokazuje systemy operacyjne, na których testowano tę rolę. Jest automatycznie generowana przy użyciu testów Ansible Molecule znajdujących się w folderze molecule/. Istnieje logika CI, aby automatycznie obsługiwać 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 Debian lub RedHat), to możliwe, że ta rola również zadziała.

Rodzina OS Wersja OS Status Idempotent Testowane na

Co oznacza idempotent? Idempotent oznacza, że jeśli uruchomisz tę rolę dwa razy z rzędu, nie będzie żadnych zmian w systemie za drugim razem.

Spędziliśmy wiele czasu na dopracowywaniu naszych konfiguracji CI i narzędzi budowlanych. Jeśli chcesz dowiedzieć się więcej o tym, jak udoskonaliliśmy nasz proces, możesz zainteresować się naszymi wspólnymi plikami Ansible i repozytoriami dokumentacji Ansible. Zobacz przewodnik CONTRIBUTING.md po więcej szczegółów.

Zależności

Większość naszych ról zależy od kolekcji Ansible Galaxy. Niektóre z naszych projektów również zależą od innych ról i kolekcji opublikowanych w Ansible Galaxy. Przed uruchomieniem tej roli musisz zainstalować zależności kolekcji i ról oraz 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 instalacji także wymagań deweloperskich. To łatwy sposób, by upewnić się, ż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łączyliśmy kilka innych zależności Pythona, które są wymagane do specjalnych zastosowań 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ść provisionowania kontenerów Docker z Ansible
✔️
python-vagrant Wymagany do provisionowania maszyn wirtualnych Vagrant
✔️
pywinrm Wymagany do provisionowania maszyn z systemem Windows, które używają WinRM
✔️
ansible-lint Narzędzie lintingowe dla plików Ansible
ansibler Narzędzie używane do generowania zaawansowanej dokumentacji (np. generuje wykres zgodności i inne)
black Automatyczny formatownik plików Python, do zainstalowania, jeśli projekt wykorzystuje skrypty testowe w Pythonie
blocklint Narzędzie lintingowe, które zapobiega wnikaniu określonych słów do bazy kodu
flake8 Linter Pythona, który zgłasza błędy składni i stylu Pythona
mod-ansible-autodoc Zmodyfikowana wersja ansible-autodoc, która pozwala nam na automatyczne generowanie dokumentacji bazującej na komentarzach w plikach YAML roli
molecule Framework testowy dla Ansible
molecule-docker Plugin Molecule do provisionowania kontenerów Docker
molecule-vagrant Plugin Molecule do provisionowania maszyn wirtualnych Vagrant
pre-commit-hooks Zestaw narzędzi użytecznych do lintingu
proselint Linter używany do generowania ulepszeń w języku angielskim (używany do poprawy dokumentacji)
yamllint Linter dla plików YAML, który zapewnia właściwą składnię i styl

Role Galaxy

Chociaż większość naszych ról nie ma zależności, w niektórych przypadkach inna rola musi być zainstalowana, zanim logika może się kontynuować. Na początku play'a będą uruchamiane zależności ról Ansible Galaxy wymienione w meta/main.yml. Te zależności są zaprogramowane tak, aby uruchamiały się tylko raz na playbook. Jeśli dołączysz więcej niż jedną z naszych ról do swojego playbooka, które mają wspólne zależności, to instalacja zależności zostanie pominięta po pierwszym uruchomieniu. Niektóre z naszych ról wykorzystują również role pomocnicze bezpośrednio z plików zadań, co pomaga utrzymać nasz główny playbook (Gas Station) w dobrym stanie.

Plik requirements.yml zawiera pełną listę zależności Ansible Galaxy wymaganych przez tę rolę (tj. zależności ról w meta/main.yml, role pomocnicze, kolekcje itp.). Dla Twojej wygody, poniżej znajduje się lista zależności ról z krótkimi opisami:

role_dependencies

Kolekcje Galaxy

Ta rola zależy od kilku kolekcji Ansible Galaxy. Kolekcje wraz z linkami do źródła są wymienione poniżej.

  • odznaka chocolatey.chocolatey Ansible Galaxy
  • odznaka community.general Ansible Galaxy
  • odznaka google.cloud Ansible Galaxy

Przykład playbooka

Po zainstalowaniu zależności musisz tylko dodać rolę do swojego głównego playbooka. Rola obsługuje zachowanie become, więc możesz po prostu dodać rolę do swojego playbooka, nie martwiąc się o komendy, które nie powinny być wykonywane jako root:

- hosts: all
  roles:
    - professormanhattan.java

Jeśli włączasz tę rolę do istniejącego playbooka, rozważ skopiowanie wymagań opisanych w pyproject.toml i requirements.yml do odpowiadających im plików w korzeniu Twojego playbooka, tak aby w przyszłości wystarczyło zainstalować jeden zestaw wymagań. Zauważ, że zależności w pyproject.toml mogą być przeniesione do bardziej tradycyjnego requirements.txt, jeśli to jest to, co obecnie używasz do śledzenia zależności Pythona.

Realny przykład

Możesz znaleźć przykład playbooka, który wykorzystuje tę rolę w naszym głównym playbooku (a.k.a. Gas Station). Playbook jest doskonałym przykładem dla osób uczących się korzystać z Ansible. Incorporuje też wiele przemyślanych narzędzi budowlanych, które bardziej zaawansowani użytkownicy Ansible mogą docenić. A osoby, które nie interesują się Ansible, także mogą na tym skorzystać, ponieważ pozwala Ci w zasadzie przekształcić swój komputer (i sieć) w ostateczne środowisko do programowania. Krótko mówiąc, to świetny projekt, o którym powinni wiedzieć programiści!

Udział

Wkład, zgłaszanie problemów i prośby o nowe funkcje są mile widziane! Zachęcamy do sprawdzenia strony problemów. Jeśli chciałbyś się przyczynić, zapoznaj się z przewodnikiem po udziale.

Wsparcie

Droga wspaniała osoba,

Tworzę projekty open source z pasji. Chociaż mam pracę, dach nad głową i tyle fast foodu, ile mogę zjeść, byłoby miło być docenionym przez społeczność za coś, w co włożyłem dużo czasu i pieniędzy. Proszę, rozważ wsparcie mnie! Kto wie? Może uda mi się zrezygnować z pracy i publikować open source na pełen etat.

Z poważaniem,

Brian Zalewski

Sponsorzy Open Collective Sponsorzy GitHub Patreon

Powiązania

Poniżej znajduje się lista usług, z których korzystamy, oferujących specjalne zachęty za rejestrację w ich usługi za naszymi specjalnymi linkami:

MailChimp Odznaka polecenia DigitalOcean

Licencja

Copyright © 2020-2021 Megabyte LLC. Ten projekt jest licencjonowany na podstawie MIT.

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