gantsign.java
Rol de Ansible: Java
Rol para instalar el JDK de Java.
Requisitos
Ansible Core >= 2.12
Distribución de Linux
Familia Debian
Debian
- Buster (10)
- Bullseye (11)
Ubuntu
- Bionic (18.04)
- Focal (20.04)
- Jammy (22.04)
Familia RedHat
Rocky Linux
- 8
Fedora
- 35
Familia SUSE
openSUSE
- 15.4
Nota: otras versiones pueden funcionar, pero no han sido probadas.
Variables de la Rol
Las siguientes variables cambiarán el comportamiento de esta rol (los valores por defecto se muestran a continuación):
# Número de versión de Java
# Especificar '8', '11', '17' o '21' para obtener la última versión corregida de esa
# versión.
java_version: '21.0.2+13'
# Directorio base de instalación para cualquier distribución de Java
java_install_dir: '/opt/java'
# Directorio para almacenar archivos descargados para la instalación de Java en la máquina remota
java_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Ubicación donde se pueden encontrar los paquetes de instalación de Java en la máquina local
# se usarán paquetes locales en lugar de descargar nuevos paquetes.
java_local_archive_dir: '{{ playbook_dir }}/files'
# Si usar paquetes de instalación en el archivo local (si están disponibles)
java_use_local_archive: true
# Si esta es la instalación por defecto, se escribirán scripts de perfil para establecer
# la variable de entorno JAVA_HOME y agregar el directorio bin a la variable de entorno PATH.
java_is_default_installation: true
# Nombre del grupo de hechos de Ansible relacionados con esta instalación de Java.
#
# Sobrescribir si desea usar esta rol más de una vez para instalar múltiples versiones
# de Java.
#
# e.g. java_fact_group_name: java_8
# cambiaría el hecho del hogar de Java a:
# ansible_local.java_8.general.home
java_fact_group_name: java
# El SHA-256 para el redistribuible de JDK
java_redis_sha256sum:
# Ubicación espejo para la descarga de JDK (por ejemplo, https://example.com/provisioning/files)
java_redis_mirror:
# Nombre del archivo para el archivo de instalación redistribuible de JDK
java_redis_filename:
# Tiempo de espera para la respuesta de descarga de JDK en segundos
java_download_timeout_seconds: 600
# El tiempo de espera para la API de Adoptium
java_api_timeout_seconds: 30
Ejemplos de Playbooks
Por defecto, esta rol instalará la última versión LTS del JDK proporcionado por Adoptium que ha sido probado y se sabe que funciona con esta rol:
- hosts: servers
roles:
- role: gantsign.java
Puedes instalar una versión específica del JDK especificando el java_version
.
- hosts: servers
roles:
- role: gantsign.java
java_version: '8.0.402+6'
Nota: con curl y jq puedes ver las versiones disponibles ejecutando el siguiente comando:
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
Puedes instalar múltiples versiones del JDK usando esta rol más de una vez:
- 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
Para realizar una instalación offline, necesitas especificar un poco más de información (es decir,
java_major_version
, java_release_name
, java_redis_filename
y
java_redis_sha256sum
). Por ejemplo, para realizar una instalación offline de 11.0.22+7
:
# Antes de realizar la instalación offline, descarga
# `OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz` a
# `{{ playbook_dir }}/files/` en la máquina local.
- 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'
Hechos de la Rol
Esta rol exporta los siguientes hechos de Ansible para ser usados por otras roles:
ansible_local.java.general.version
- por ejemplo,
8u402
- por ejemplo,
ansible_local.java.general.home
- por ejemplo,
/opt/java/jdk8u402
- por ejemplo,
Sobrescribir java_fact_group_name
cambiará los nombres de los hechos, por ejemplo:
java_fact_group_name: java_8
Cambiaría el nombre de los hechos a:
ansible_local.java_8.general.version
ansible_local.java_8.general.home
Más Roles de GantSign
Puedes encontrar más roles de GantSign en Ansible Galaxy.
Desarrollo y Pruebas
Este proyecto utiliza las siguientes herramientas:
- Molecule para orquestar escenarios de prueba
- Testinfra para probar los cambios en la remota
- pytest el marco de pruebas
- Tox gestiona entornos virtuales de Python para análisis y pruebas
- pip-tools para gestionar dependencias
Se proporciona un Contenedor de Desarrollo de Visual Studio Code para desarrollar y probar esta rol.
Licencia
MIT
Información del Autor
John Freeman
GantSign Ltd. Compañía No. 06109112 (registrada en Inglaterra)
Role for installing the Java JDK.
ansible-galaxy install gantsign.java