megabyte-labs.java
Java
Stworzony przez Megabyte Labs
Rola Ansible, która instaluje Java na prawie każdej platformie
Spis Treści
- Przegląd
- Funkcje
- Szybki start
- Obsługiwane systemy operacyjne
- Zależności
- Przykład playbooka
- Udział
- Licencja
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.
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
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:

Licencja
Copyright © 2020-2021 Megabyte LLC. Ten projekt jest licencjonowany na podstawie MIT.
Installs Java on almost any platform
ansible-galaxy install megabyte-labs.java