gantsign.java
Ansible-Rolle: Java
Rolle zur Installation des Java JDK.
Anforderungen
Ansible Core >= 2.12
Linux-Distribution
Debian-Familie
Debian
- Buster (10)
- Bullseye (11)
Ubuntu
- Bionic (18.04)
- Focal (20.04)
- Jammy (22.04)
RedHat-Familie
Rocky Linux
- 8
Fedora
- 35
SUSE-Familie
openSUSE
- 15.4
Hinweis: Andere Versionen funktionieren wahrscheinlich, wurden jedoch nicht getestet.
Rollenvariablen
Die folgenden Variablen ändern das Verhalten dieser Rolle (Standardeinstellungen sind unten gezeigt):
# Java Versionsnummer
# Geben Sie '8', '11', '17' oder '21' an, um die neueste Patch-Version dieser
# Version zu erhalten.
java_version: '21.0.2+13'
# Basisinstallationsverzeichnis für jede Java-Distribution
java_install_dir: '/opt/java'
# Verzeichnis zum Speichern von Dateien, die für die Java-Installation auf der
# Remote-Maschine heruntergeladen werden
java_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Speicherort, an dem Java-Installationspakete auf der lokalen Maschine zu finden sind
# Lokale Pakete werden bevorzugt, um neue Pakete herunterzuladen.
java_local_archive_dir: '{{ playbook_dir }}/files'
# Ob die Installationspakete im lokalen Archiv verwendet werden sollen (sofern verfügbar)
java_use_local_archive: true
# Wenn dies die Standardinstallation ist, werden Profilskripte geschrieben, um die
# Umgebungsvariable JAVA_HOME zu setzen und das bin-Verzeichnis zum PATH
# hinzuzufügen.
java_is_default_installation: true
# Name der Gruppe von Ansible-Fakten, die mit dieser Java-Installation zu tun haben.
#
# Überschreiben, wenn Sie diese Rolle mehr als einmal verwenden möchten, um mehrere Versionen
# von Java zu installieren.
#
# z.B. java_fact_group_name: java_8
# würde das Java Home-Fact ändern zu:
# ansible_local.java_8.general.home
java_fact_group_name: java
# Der SHA-256 für das JDK-Redistributable
java_redis_sha256sum:
# Spiegel-Standort für den JDK-Download (z.B. https://example.com/provisioning/files)
java_redis_mirror:
# Dateiname für die Installationsdatei des JDK-Redistributable
java_redis_filename:
# Timeout für die JDK-Download-Antwort in Sekunden
java_download_timeout_seconds: 600
# Das Timeout für die Adoptium API
java_api_timeout_seconds: 30
Beispiel-Playbooks
Standardmäßig installiert diese Rolle die neueste LTS-JDK-Version, die von Adoptium bereitgestellt wird und die getestet wurde und mit dieser Rolle bekannt ist:
- hosts: servers
roles:
- role: gantsign.java
Sie können eine spezifische Version des JDK installieren, indem Sie die java_version
angeben.
- hosts: servers
roles:
- role: gantsign.java
java_version: '8.0.402+6'
Hinweis: Mit curl und jq können Sie die verfügbaren Versionen anzeigen, indem Sie folgenden Befehl ausführen:
for i in 21 17 11 8; do (curl --silent http \
"https://api.adoptium.net/v3/info/release_names?version=%5B$i,$(($i + 1)))\
&release_type=ga" | jq --raw-output '.releases[]' | sed -E 's/^jdk\-?//'); done
Sie können mehrere Versionen des JDK installieren, indem Sie diese Rolle mehr als einmal verwenden:
- hosts: servers
roles:
- role: ansible-role-java
java_version: '8'
java_is_default_installation: false
java_fact_group_name: java_8
- role: ansible-role-java
java_version: '11'
java_is_default_installation: true
java_fact_group_name: java
Um eine Offline-Installation durchzuführen, müssen Sie etwas mehr Informationen angeben (d.h. java_major_version
, java_release_name
, java_redis_filename
und
java_redis_sha256sum
). Zum Beispiel, um eine Offline-Installation von 11.0.22+7
durchzuführen:
# Vor der Durchführung der Offline-Installation, laden Sie
# `OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz` nach
# `{{ playbook_dir }}/files/` auf der lokalen Maschine herunter.
- hosts: servers
roles:
- role: gantsign.java
java_major_version: '11'
java_version: '11.0.22+7'
java_release_name: 'jdk-11.0.22+7'
java_redis_filename: 'OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz'
java_redis_sha256sum: '25cf602cac350ef36067560a4e8042919f3be973d419eac4d839e2e0000b2cc8'
Rollen-Fakten
Diese Rolle exportiert die folgenden Ansible-Fakten zur Verwendung durch andere Rollen:
ansible_local.java.general.version
- z.B.
8u402
- z.B.
ansible_local.java.general.home
- z.B.
/opt/java/jdk8u402
- z.B.
Durch das Überschreiben von java_fact_group_name
ändern sich die Namen der Fakten, z.B.:
java_fact_group_name: java_8
Ändert den Namen der Fakten zu:
ansible_local.java_8.general.version
ansible_local.java_8.general.home
Weitere Rollen von GantSign
Sie finden weitere Rollen von GantSign auf Ansible Galaxy.
Entwicklung & Tests
Dieses Projekt verwendet die folgenden Werkzeuge:
- Molecule zur Orchestrierung von Test-Szenarien
- Testinfra zum Testen der Änderungen auf der Remote-Maschine
- pytest das Testframework
- Tox verwaltet Python-virtuelle Umgebungen für Linting und Tests
- pip-tools zur Verwaltung von Abhängigkeiten
Ein Visual Studio Code Dev Container wird bereitgestellt, um diese Rolle zu entwickeln und zu testen.
Lizenz
MIT
Autoreninformation
John Freeman
GantSign Ltd. Firmennummer: 06109112 (eingetragen in England)
Role for installing the Java JDK.
ansible-galaxy install gantsign.java