arolfes.graalvm
Rôle Ansible : GraalVM
Rôle pour installer GraalVM CE.
Exigences
Ansible >= 5 (Ansible Core >= 2.12)
Distribution Linux
Famille Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Debian
- Buster (10)
- Bullseye (11)
- Bookworm (12)
Famille RedHat
Fedora
- 37
- 38
Famille SUSE
openSUSE
- 15.0
- 15.1
- 15.2
- 15.3
- 15.4
- 15.5
Note : d'autres versions peuvent fonctionner mais n'ont pas été testées.
Variables du rôle
Les variables suivantes modifieront le comportement de ce rôle (les valeurs par défaut sont montrées ci-dessous) :
# spécifier la version jdk communautaire sous-jacente
# 17.0.7, 17.0.8, 20.0.1, 20.0.2, 21.0.0 ou 21.0.2
graalvm_java_version: '21.0.2'
# Répertoire d'installation de base pour toute distribution GraalVM
graalvm_install_dir: '/opt/graalvm'
# Répertoire pour stocker les fichiers téléchargés pour l'installation de GraalVM sur la machine distante
graalvm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Si c'est l'installation par défaut, des scripts de profil seront écrits pour définir
# la variable d'environnement GRAALVM_HOME
graalvm_is_default_installation: true
# Si le répertoire bin de GraalVM doit être ajouté à la variable d'environnement PATH
# L'effet ne se produit que si c'est aussi l'installation par défaut
graalvm_add_to_path: true
# Emplacement où les paquets d'installation de GraalVM peuvent être trouvés sur la machine locale
# les paquets locaux seront utilisés de préférence au téléchargement de nouveaux paquets.
graalvm_local_archive_dir: '{{ playbook_dir }}/files'
# Si utiliser les paquets d'installation dans l'archive locale (si disponibles)
graalvm_use_local_archive: true
# Le SHA-256 pour le redistribuable de GraalVM
graalvm_redis_sha256sum:
# Emplacement pour le téléchargement de GraalVM (par exemple, https://example.com/provisioning/files)
# spécifier uniquement lorsque vous ne téléchargez pas directement depuis github
graalvm_redis_mirror:
# Nom de fichier pour le fichier d'installation redistributable de GraalVM
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"
# Nom du groupe de faits Ansible concernant cette installation de GraalVM.
#
# Remplacer si vous souhaitez utiliser ce rôle plusieurs fois pour installer plusieurs versions
# de GraalVM.
#
# e.g. graalvm_fact_group_name: graalvm_20_0_2
# changerait le fait d'accueil de GraalVM à :
# ansible_local.graalvm_20_0_2.general.home
graalvm_fact_group_name: graalvm
# Délai d'attente pour la réponse de téléchargement de GraalVM en secondes
graalvm_download_timeout_seconds: 600
# choisir l'architecture sous-jacente, x64 (signifie amd64) ou aarch64
graalvm_architecture: 'x64'
Versions de GraalVM prises en charge
Les versions suivantes de GraalVM Community JDK sont prises en charge sans configuration supplémentaire
- 17.0.7
- 17.0.8
- 20.0.1
- 20.0.2
- 21.0.0
- 21.0.2
Architectures prises en charge
- x64 (signifie amd64)
- aarch64
Exemples de Playbooks
Par défaut, ce rôle va installer la dernière version de GraalVM CE qui a été testée et qui est connue pour fonctionner avec ce rôle :
- hosts: servers
roles:
- role: arolfes.graalvm
# résultats :
# nouveau fichier /etc/profile.d/graalvm.sh
# contenu :
# GRAALVM_HOME=/opt/graalvm/jdk-21.0.2
# PATH=${GRAALVM_HOME}/bin:${PATH}
Installer une version plus ancienne
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
Si vous ne souhaitez pas que GraalVM soit dans votre variable PATH, définissez graalvm_add_to_path
sur false
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_add_to_path: false
Si vous ne souhaitez pas qu'un fichier /etc/profile.d/graalvm.sh
soit créé
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_is_default_installation: false
Vous pouvez installer plusieurs versions de GraalVM en utilisant ce rôle plusieurs fois :
- hosts: servers
roles:
# Le premier rôle installe 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'
# Le deuxième rôle installe graalvm-community-jdk-21.0.2 et est mis par défaut comme GraalVM
- role: arolfes.graalvm
Pour effectuer une installation hors ligne, vous devez spécifier un peu plus d'informations (c'est-à-dire graalvm_redis_filename et graalvm_redis_sha256sum). Par exemple, pour effectuer une installation hors ligne de graalvm-19.3.2-java11 :
# Avant de procéder à l'installation hors ligne, téléchargez
# `graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz` dans
# `{{ playbook_dir }}/files/` sur la machine locale.
- 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'
Faits du rôle
Ce rôle exporte les faits Ansible suivants pour être utilisés par d'autres rôles :
ansible_local.graalvm.general.java_version
- par ex.
21.0.2
- par ex.
ansible_local.graalvm.general.home
- par ex.
/opt/graalvm/jdk-21.0.2
- par ex.
Modifier graalvm_fact_group_name
changera les noms des faits par exemple :
graalvm_fact_group_name: graalvm_java_21_0_0
Changerait le nom des faits à :
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
Développement et Tests
Ce projet utilise Molecule pour aider au développement et aux tests ; le rôle est testé unitairement à l'aide de Testinfra et pytest.
Pour développer ou tester, vous devez avoir installé les éléments suivants :
Parce que l'installation de ces éléments peut être délicate, ce projet inclut Molecule Wrapper. Molecule Wrapper est un script shell qui installe Molecule et ses dépendances (sauf Linux) puis exécute Molecule avec la commande que vous lui passez.
Pour tester ce rôle en utilisant Molecule Wrapper, exécutez la commande suivante à partir de la racine du projet :
./moleculew test
Note : certaines des dépendances nécessitent des autorisations sudo
pour être installées.
Licence
MIT
Crédits
Un grand merci à John de Gantsign pour avoir fourni le script moleculaire wrapper et des rôles Ansible formidables accessibles sur ansible-galaxy.
Informations sur l'auteur
Alexander Rolfes
ansible-galaxy install arolfes.graalvm