arolfes.graalvm

Rol de Ansible: GraalVM

Estado de la Construcción Ansible Galaxy Licencia

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
  • ansible_local.graalvm.general.home

    • e.j. /opt/graalvm/jdk-21.0.2

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

Acerca del proyecto

Role for installing the graalvm community jdk.

Instalar
ansible-galaxy install arolfes.graalvm
Licencia
mit
Descargas
663
Propietario