professormanhattan.java
Java
Stworzone 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ładowa książka
- Udział
- Licencja
Przegląd
To repozytorium jest domem roli Ansible, która instaluje Java na prawie każdej platformie. Java jest językiem programowania opartym na klasach, zorientowanym obiektowo, zaprojektowanym z jak najmniejszą liczbą zależności implementacyjnych.
Funkcje
Zapewnia instalację Java:
- Instaluje Java za pomocą Chocolatey na Windows
- Ustawia zmienną
JAVA_HOME
- Instaluje Java na systemach macOS, Linux i Windows
- Dodaje Java do zmiennej
PATH
Optymalizacja dla Windows:
- Usuwa folder Java z menu startowego w Windows
Szybki start
Chcesz zainstalować Java bez użycia Ansible? Wystarczy, że uruchomisz następujące polecenie związane z Twoim systemem operacyjnym:
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 komend powinieneś najpierw odwiedzić stronę, aby upewnić się, że kod jest poprawny. Już wiemy, że jest bezpieczny, ale przed uruchomieniem jakiegokolwiek skryptu na swoim komputerze warto go dokładnie sprawdzić.
Możesz także zapoznać się z Install Doctor. To aplikacja, którą stworzyliśmy, aby zainstalować każdą rolę Ansible jednym poleceniem. Posiada również inne ciekawe funkcje, takie jak możliwość instalacji binariów w locie bez konieczności podawania hasła. Jeśli chcesz włączyć tę rolę do playbooka Ansible (i dostosować ustawienia), kontynuuj czytaną poniżej.
Obsługiwane systemy operacyjne
Tabela poniżej pokazuje systemy operacyjne, na których przetestowaliśmy tę rolę. Jest automatycznie generowana za pomocą testów Ansible Molecule znajdujących się w folderze molecule/
. Jest wprowadzona logika CI do automatycznego testowania Windows, macOS, Ubuntu, Fedora, CentOS, Debian i Archlinux. Jeśli Twój system operacyjny nie jest wymieniony, a jest wariantem jednego z systemów, które testujemy (np. system bazujący na Debianie lub RedHat), to istnieje prawdopodobieństwo, że rola będzie działać.
Rodzina OS | Wersja OS | Status | Idempotentny | Testowane na |
---|
Co oznacza idempotentność? Idempotentny oznacza, że jeśli uruchomisz tę rolę dwa razy z rzędu, to za drugim razem nie będzie żadnych zmian w systemie.
Poświęciliśmy dużo czasu na doskonalenie naszych konfiguracji CI i narzędzi budowlanych. Jeśli chcesz dowiedzieć się więcej o tym, jak udoskonaliliśmy nasz proces, możesz znaleźć interesujące nasze wspólne pliki Ansible oraz repozytoria dokumentacji Ansible. Zobacz przewodnik CONTRIBUTING.md po więcej 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 opublikowanych w Ansible Galaxy. Zanim uruchomisz tę rolę, będziesz musiał 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 także wymagań deweloperskich. To najłatwiejszy sposób, aby upewnić się, że wszystko działa poprawnie.
Python
Chociaż jedynym narzędziem niezbędnym do uruchomienia tej roli na standardowym komputerze jest Ansible (pakiet Pythona), dołączamy 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 | Wymagane |
---|---|---|
ansible | System zarządzania konfiguracją, który może zdalnie konfigurować komputery | ✔️ |
docker | Umożliwia provisionowanie kontenerów Docker za pomocą Ansible | ✔️ |
python-vagrant | Wymagany do provisionowania maszyn Wirtualnych Vagrant | ✔️ |
pywinrm | Wymagany do provisionowania maszyn Windows korzystających z WinRM | ✔️ |
ansible-lint | Narzędzie do lintingu dla plików Ansible | |
ansibler | Narzędzie używane do generowania zaawansowanej dokumentacji (np. generuje wykresy kompatybilności i inne wykresy) | |
black | Automatyczny sformatowacz plików Pythona włączony w przypadku, gdy projekt wykorzystuje skrypty testowe Pythona | |
blocklint | Narzędzie do lintingu, które zapobiega określonym słowom wchodzącym do kodu | |
flake8 | Linter Pythona, który zgłasza błędy składni i stylu Pythona | |
mod-ansible-autodoc | Niestandardowa wersja ansible-autodoc, która pozwala na automatyczne generowanie dokumentacji na podstawie komentarzy w plikach YAML roli | |
molecule | Framework do testowania Ansible | |
molecule-docker | Wtyczka Molecule do provisionowania kontenerów Docker | |
molecule-vagrant | Wtyczka Molecule do provisionowania maszyn Wirtualnych Vagrant | |
pre-commit-hooks | Zestaw narzędzi przydatnych do lintingu | |
proselint | Linter używany do generowania usprawnień języka angielskiego (używany do ulepszania 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, istnieją pewne przypadki, w których inna rola musi być zainstalowana przed kontynuowaniem logiki. Na początku playbooka uruchomią się zależności ról Ansible Galaxy wymienione w meta/main.yml
. Te zależności są skonfigurowane do uruchomienia tylko raz na playbook. Jeśli uwzględnisz więcej niż jedną z naszych ról w swoim playbooku, które mają wspólne zależności, wtedy instalacja tej zależności zostanie pominięta po pierwszym uruchomieniu. Niektóre z naszych ról korzystają również z pomocniczych ról bezpośrednio w plikach z zadaniami, co pomaga zachować DRY w głównym playbooku (Gas Station).
Plik requirements.yml
zawiera pełną listę zależności Ansible Galaxy wymaganych przez tę rolę (tj. zależności ról z meta/main.yml
, ról pomocniczych, kolekcji, itd.). Dla Twojej wygody lista zależności ról wraz z krótkimi opisami znajduje się poniżej:
role_dependencies
Kolekcje Galaxy
Ta rola zależy od wielu kolekcji Ansible Galaxy. Kolekcje oraz linki do ich źródeł znajdują się poniżej.
Przykładowa książka
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ć tę rolę do swojego playbooka bez martwienia się o polecenia, które nie powinny być uruchamiane jako root:
- hosts: all
roles:
- professormanhattan.java
Jeśli włączasz tę rolę do istniejącego playbooka, warto skopiować wymagania opisane w pyproject.toml
i requirements.yml
do odpowiadających im plików w katalogu głównym twojego playbooka, abyś musiał się martwić tylko o instalację jednego zestawu wymagań przy przyszłym użyciu. Zauważ, że zależności w pyproject.toml
mogą być przeniesione do bardziej tradycyjnego requirements.txt
, jeśli aktualnie korzystasz z tego do śledzenia zależności Pythona.
Przykład rzeczywisty
Możesz znaleźć przykład playbooka, który zawiera tę rolę w naszym głównym playbooku (znanym również jako Gas Station). Playbook jest doskonałym przykładem dla kogoś, kto uczy się jak używać Ansible. Zawiera również wiele dobrze przemyślanych narzędzi budowlanych, które bardziej zaawansowani użytkownicy Ansible mogą docenić. A ludzie, którzy nie interesują się Ansible, również mogą na tym skorzystać, ponieważ pozwala to zamienić komputer (i sieć) w optymalne środowisko deweloperskie. W każdym razie jest to wspaniały projekt, o którym powinni wiedzieć deweloperzy!
Udział
Wkład, problemy i prośby o funkcje są mile widziane! Śmiało sprawdź stronę problemów. Jeśli chcesz wziąć udział, zapoznaj się z przewodnikiem dla uczestników.
Wsparcie
Droga Wspaniała Osobie,
Tworzę projekty open source z miłości. Chociaż mam pracę, schronienie i tyle fast foodu, ile mogę zjeść, byłoby miło być docenionym przez społeczność za coś, co kosztowało mnie dużo czasu i pieniędzy. Proszę, rozważ wsparcie mnie! Kto wie? Może będę mógł rzucić pracę i publikować projekty open source pełnoetatowo.
Z wyrazami szacunku,
Brian Zalewski
Partnerzy
Poniżej znajdziesz listę usług, z których korzystamy, które oferują specjalne zachęty za rejestrację w ich usługach za pośrednictwem naszych linków:

Licencja
Copyright © 2020-2021 Megabyte LLC. Projekt licencjonowany na mocy MIT.
Installs Java on almost any platform
ansible-galaxy install professormanhattan.java