arolfes.graalvm
Rol de Ansible: GraalVM
Rol para instalar GraalVM CE.
Requisitos
Ansible >= 5 (Ansible Core >= 2.12)
Distribución de Linux
Familia Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Debian
- Buster (10)
- Bullseye (11)
- Bookworm (12)
Familia RedHat
Fedora
- 37
- 38
Familia SUSE
openSUSE
- 15.0
- 15.1
- 15.2
- 15.3
- 15.4
- 15.5
Nota: otras versiones pueden funcionar, pero no han sido probadas.
Variables del Rol
Las siguientes variables cambiarán el comportamiento de este rol (los valores por defecto se muestran a continuación):
# especificar la versión de jdk comunitario subyacente
# 17.0.7, 17.0.8, 20.0.1, 20.0.2, 21.0.0 o 21.0.2
graalvm_java_version: '21.0.2'
# Directorio base de instalación para cualquier distribución de GraalVM
graalvm_install_dir: '/opt/graalvm'
# Directorio para almacenar archivos descargados para la instalación de GraalVM en el servidor remoto
graalvm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Si esta es la instalación por defecto, se escribirán scripts de perfil para establecer
# la variable de entorno GRAALVM_HOME
graalvm_is_default_installation: true
# Si se debe añadir el directorio bin de graalvm a la variable de entorno PATH
# El efecto es solo cuando esto también es la instalación por defecto
graalvm_add_to_path: true
# Ubicación de los paquetes de instalación de GraalVM que se pueden encontrar en el servidor local
# los paquetes locales se usarán en preferencia a descargar nuevos paquetes.
graalvm_local_archive_dir: '{{ playbook_dir }}/files'
# Si utilizar paquetes de instalación en el archivo local (si están disponibles)
graalvm_use_local_archive: true
# La SHA-256 para el redistribuible de GraalVM
graalvm_redis_sha256sum:
# ubicación para la descarga de GraalVM (e.j. https://example.com/provisioning/files)
# especificar solo cuando NO se descarga directamente de github
graalvm_redis_mirror:
# Nombre del archivo de instalación del redistribuible de GraalVM
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"
# Nombre del grupo de hechos de Ansible relacionados con esta instalación de GraalVM.
#
# Sobrescribir si deseas usar este rol más de una vez para instalar múltiples versiones
# de GraalVM.
#
# e.j. graalvm_fact_group_name: graalvm_20_0_2
# cambiaría el hecho de GraalVM home a:
# ansible_local.graalvm_20_0_2.general.home
graalvm_fact_group_name: graalvm
# Tiempo de espera para la respuesta de descarga de GraalVM en segundos
graalvm_download_timeout_seconds: 600
# elegir la arquitectura subyacente, x64 (significa amd64) o arch64
graalvm_architecture: 'x64'
Versiones de GraalVM Soportadas
Las siguientes versiones de jdk comunitario de graalvm son soportadas sin ninguna configuración adicional:
- 17.0.7
- 17.0.8
- 20.0.1
- 20.0.2
- 21.0.0
- 21.0.2
Arquitecturas soportadas
- x64 (significa amd64)
- aarch64
Ejemplos de Playbooks
Por defecto, este rol instalará la última versión de GraalVM CE que ha sido probada y se sabe que funciona con este rol:
- hosts: servers
roles:
- role: arolfes.graalvm
# resultados:
# nuevo archivo /etc/profile.d/graalvm.sh
# contenido:
# GRAALVM_HOME=/opt/graalvm/jdk-21.0.2
# PATH=${GRAALVM_HOME}/bin:${PATH}
instalar una versión más antigua
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
Si no deseas GraalVM en tu variable Path, establece graalvm_add_to_path
a false
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_add_to_path: false
si no deseas un archivo /etc/profile.d/graalvm.sh
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_is_default_installation: false
Puedes instalar múltiples versiones de GraalVM usando este rol más de una vez:
- hosts: servers
roles:
# el primer rol instala 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'
# el segundo rol instala graalvm-community-jdk-21.0.2 y se establece como GraalVM por defecto
- role: arolfes.graalvm
Para realizar una instalación fuera de línea, necesitas especificar un poco más de información (es decir, graalvm_redis_filename y graalvm_redis_sha256sum). Por ejemplo, para realizar una instalación fuera de línea de graalvm-19.3.2-java11:
# Antes de realizar la instalación fuera de línea, descarga
# `graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz` a
# `{{ playbook_dir }}/files/` en la máquina local.
- 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'
Hechos del Rol
Este rol exporta los siguientes hechos de Ansible para su uso en otros roles:
ansible_local.graalvm.general.java_version
- e.j.
21.0.2
- e.j.
ansible_local.graalvm.general.home
- e.j.
/opt/graalvm/jdk-21.0.2
- e.j.
Sobrescribir graalvm_fact_group_name
cambiará los nombres de los hechos e.j.:
graalvm_fact_group_name: graalvm_java_21_0_0
Cambiaría el nombre de los hechos a:
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
Desarrollo y Pruebas
Este proyecto utiliza Molecule para ayudar en el desarrollo y las pruebas; el rol es probado unitariamente utilizando Testinfra y pytest.
Para desarrollar o probar, necesitas tener instalados los siguientes:
Debido a que lo anterior puede ser complicado de instalar, este proyecto incluye Molecule Wrapper. Molecule Wrapper es un script de shell que instala Molecule y sus dependencias (salvo Linux) y luego ejecuta Molecule con el comando que le pases.
Para probar este rol usando Molecule Wrapper, ejecuta el siguiente comando desde la raíz del proyecto:
./moleculew test
Nota: algunas de las dependencias necesitan permiso sudo
para instalarse.
Licencia
MIT
Créditos
Muchas Gracias a John de Gantsign por proporcionar el script de envoltura de molecule y los increíbles roles de ansible que están disponibles en ansible-galaxy.
Información del Autor
Alexander Rolfes
ansible-galaxy install arolfes.graalvm