arolfes.graalvm
Ansible Rolle: GraalVM
Rolle zur Installation von GraalVM CE.
Anforderungen
Ansible >= 5 (Ansible Core >= 2.12)
Linux Distribution
Debian Familie
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Debian
- Buster (10)
- Bullseye (11)
- Bookworm (12)
RedHat Familie
Fedora
- 37
- 38
SUSE Familie
openSUSE
- 15.0
- 15.1
- 15.2
- 15.3
- 15.4
- 15.5
Hinweis: Andere Versionen könnten funktionieren, wurden aber nicht getestet.
Rollenvariablen
Die folgenden Variablen ändern das Verhalten dieser Rolle (Standardwerte sind unten aufgeführt):
# Geben Sie die zugrunde liegende Community JDK-Version an
# 17.0.7, 17.0.8, 20.0.1, 20.0.2, 21.0.0 oder 21.0.2
graalvm_java_version: '21.0.2'
# Basisinstallationsverzeichnis für jede GraalVM-Distribution
graalvm_install_dir: '/opt/graalvm'
# Verzeichnis zum Speichern von Dateien, die für die GraalVM-Installation auf der Remote-Box heruntergeladen wurden
graalvm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Wenn dies die Standardinstallation ist, werden Profilscripte geschrieben, um
# die Umgebungsvariable GRAALVM_HOME festzulegen
graalvm_is_default_installation: true
# Ob das Bin-Verzeichnis von GraalVM zur PATH-Umgebungsvariable hinzugefügt werden soll
# Die Wirkung tritt nur ein, wenn dies auch die Standardinstallation ist
graalvm_add_to_path: true
# Standort, wo die GraalVM Installationspakete auf der lokalen Box gefunden werden können
# Lokale Pakete werden bevorzugt, um neue Pakete herunterzuladen.
graalvm_local_archive_dir: '{{ playbook_dir }}/files'
# Ob lokale Archive (wenn verfügbar) verwendet werden sollen
graalvm_use_local_archive: true
# Der SHA-256 für das GraalVM Redistributable
graalvm_redis_sha256sum:
# Ort für den GraalVM-Download (z. B. https://example.com/provisioning/files)
# Nur angeben, wenn nicht direkt von GitHub heruntergeladen wird.
graalvm_redis_mirror:
# Dateiname für die Installationsdatei des GraalVM-Redistributable
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"
# Name der Gruppe von Ansible-Fakten, die mit dieser GraalVM-Installation zusammenhängen.
#
# Überschreiben Sie dies, wenn Sie diese Rolle mehr als einmal verwenden möchten,
# um mehrere Versionen von GraalVM zu installieren.
#
# z.B. graalvm_fact_group_name: graalvm_20_0_2
# würde die GraalVM Home-Funktion wie folgt ändern:
# ansible_local.graalvm_20_0_2.general.home
graalvm_fact_group_name: graalvm
# Timeout für die GraalVM-Download-Antwort in Sekunden
graalvm_download_timeout_seconds: 600
# Wählen Sie die zugrunde liegende Architektur, x64 (bedeutet amd64) oder aarch64
graalvm_architecture: 'x64'
Unterstützte GraalVM-Versionen
Die folgenden Versionen von GraalVM Community JDK werden ohne zusätzliche Konfiguration unterstützt
- 17.0.7
- 17.0.8
- 20.0.1
- 20.0.2
- 21.0.0
- 21.0.2
Unterstützte Architekturen
- x64 (bedeutet amd64)
- aarch64
Beispiel Playbooks
Standardmäßig installiert diese Rolle die neueste getestete GraalVM CE:
- hosts: servers
roles:
- role: arolfes.graalvm
# Ergebnisse:
# neue Datei /etc/profile.d/graalvm.sh
# Inhalt:
# GRAALVM_HOME=/opt/graalvm/jdk-21.0.2
# PATH=${GRAALVM_HOME}/bin:${PATH}
Ältere Version installieren
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
Wenn Sie nicht möchten, dass GraalVM in Ihrer Path-Variable steht, setzen Sie graalvm_add_to_path
auf false
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_add_to_path: false
Wenn Sie keine /etc/profile.d/graalvm.sh
-Datei möchten
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_is_default_installation: false
Sie können mehrere Versionen von GraalVM installieren, indem Sie diese Rolle mehrmals verwenden:
- hosts: servers
roles:
# Die erste Rolle installiert graalvm-community-jdk-17.0.7
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
graalvm_is_default_installation: false
graalvm_fact_group_name: 'graalvm_java_17_0_7'
# Die zweite Rolle installiert graalvm-community-jdk-21.0.2 und wird als Standard-GraalVM gesetzt
- role: arolfes.graalvm
Um eine Offline-Installation durchzuführen, müssen Sie etwas mehr Informationen angeben (d.h. graalvm_redis_filename und graalvm_redis_sha256sum). Zum Beispiel um eine Offline-Installation von graalvm-19.3.2-java11 durchzuführen:
# Bevor Sie die Offline-Installation durchführen, laden Sie
# `graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz` herunter auf
# `{{ playbook_dir }}/files/` auf der lokalen Maschine.
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '21.0.2'
graalvm_use_local_archive: true
graalvm_redis_filename: 'graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz'
graalvm_redis_sha256sum: 'b048069aaa3a99b84f5b957b162cc181a32a4330cbc35402766363c5be76ae48'
Rollenfakten
Diese Rolle exportiert die folgenden Ansible-Fakten zur Verwendung durch andere Rollen:
ansible_local.graalvm.general.java_version
- z.B.
21.0.2
- z.B.
ansible_local.graalvm.general.home
- z.B.
/opt/graalvm/jdk-21.0.2
- z.B.
Das Überschreiben von graalvm_fact_group_name
ändert die Namen der Fakten, z.B.:
graalvm_fact_group_name: graalvm_java_21_0_0
Ändert den Namen der Fakten in:
ansible_local.graalvm_java_21_0_0.general.version
ansible_local.graalvm_java_21_0_0.general.java_version
ansible_local.graalvm_java_21_0_0.general.home
Entwicklung & Testing
Dieses Projekt verwendet Molecule zur Unterstützung bei der Entwicklung und dem Testen; die Rolle wird mit Testinfra und pytest getestet.
Für Entwicklungs- oder Testzwecke müssen Sie Folgendes installiert haben:
Da die obigen Installationen schwierig sein können, enthält dieses Projekt Molecule Wrapper. Molecule Wrapper ist ein Shell-Skript, das Molecule und dessen Abhängigkeiten (außer Linux) installiert und anschließend Molecule mit dem Befehl ausführt, den Sie ihm übergeben.
Um diese Rolle mit Molecule Wrapper zu testen, führen Sie den folgenden Befehl im Projektverzeichnis aus:
./moleculew test
Hinweis: Einige der Abhängigkeiten benötigen sudo
-Berechtigungen zur Installation.
Lizenz
MIT
Danksagungen
Vielen Dank an John von Gantsign für das Bereitstellen des Molecule Wrapper-Skripts und der großartigen Ansible-Rollen, die über Ansible Galaxy verfügbar sind.
Autoreninformationen
Alexander Rolfes
ansible-galaxy install arolfes.graalvm