gantsign.java
Rôle Ansible : Java
Rôle pour installer le JDK Java.
Exigences
Ansible Core >= 2.12
Distribution Linux
Famille Debian
Debian
- Buster (10)
- Bullseye (11)
Ubuntu
- Bionic (18.04)
- Focal (20.04)
- Jammy (22.04)
Famille RedHat
Rocky Linux
- 8
Fedora
- 35
Famille SUSE
openSUSE
- 15.4
Remarque : d'autres versions pourraient 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 indiquées ci-dessous) :
# Numéro de version de Java
# Spécifiez '8', '11', '17' ou '21' pour obtenir la dernière version de correctif de cette version.
java_version: '21.0.2+13'
# Répertoire d'installation de base pour toute distribution Java
java_install_dir: '/opt/java'
# Directory pour stocker les fichiers téléchargés pour l'installation de Java sur la machine distante
java_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Emplacement où les paquets d'installation de Java 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.
java_local_archive_dir: '{{ playbook_dir }}/files'
# S'il faut utiliser les paquets d'installation dans l'archive locale (si disponibles)
java_use_local_archive: true
# Si c'est l'installation par défaut, des scripts de profil seront écrits pour définir
# la variable d'environnement JAVA_HOME et ajouter le répertoire bin au PATH.
java_is_default_installation: true
# Nom du groupe de faits Ansible relatifs à cette installation de Java.
#
# À remplacer si vous souhaitez utiliser ce rôle plusieurs fois pour installer plusieurs versions
# de Java.
#
# Par exemple, java_fact_group_name: java_8
# changerait le fait de la maison Java en :
# ansible_local.java_8.general.home
java_fact_group_name: java
# Le SHA-256 pour le redistributable JDK
java_redis_sha256sum:
# Emplacement miroir pour le téléchargement du JDK (par exemple, https://exemple.com/provisioning/files)
java_redis_mirror:
# Nom du fichier pour le fichier d'installation du redistributable JDK
java_redis_filename:
# Délai d'attente pour la réponse de téléchargement du JDK en secondes
java_download_timeout_seconds: 600
# Le délai d'attente pour l'API Adoptium
java_api_timeout_seconds: 30
Exemples de Playbooks
Par défaut, ce rôle installera la dernière version JDK LTS fournie par Adoptium qui a été testée et qui est connue pour fonctionner avec ce rôle :
- hosts: servers
roles:
- role: gantsign.java
Vous pouvez installer une version spécifique du JDK en spécifiant java_version
.
- hosts: servers
roles:
- role: gantsign.java
java_version: '8.0.402+6'
Remarque : avec curl et jq, vous pouvez voir les versions disponibles en exécutant la commande suivante :
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
Vous pouvez installer plusieurs versions du JDK en utilisant ce rôle plusieurs fois :
- 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
Pour effectuer une installation hors ligne, vous devez spécifier un peu plus d'informations (c'est-à-dire java_major_version
, java_release_name
, java_redis_filename
et java_redis_sha256sum
). Par exemple, pour effectuer une installation hors ligne de 11.0.22+7
:
# Avant d'effectuer l'installation hors ligne, téléchargez
# `OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz` dans
# `{{ playbook_dir }}/files/` sur la machine locale.
- 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'
Faits du Rôle
Ce rôle exporte les faits Ansible suivants pour être utilisés par d'autres rôles :
ansible_local.java.general.version
- par exemple
8u402
- par exemple
ansible_local.java.general.home
- par exemple
/opt/java/jdk8u402
- par exemple
Remplacer java_fact_group_name
changera les noms des faits par exemple :
java_fact_group_name: java_8
Changerait les noms des faits en :
ansible_local.java_8.general.version
ansible_local.java_8.general.home
Autres Rôles de GantSign
Vous pouvez trouver d'autres rôles de GantSign sur Ansible Galaxy.
Développement & Tests
Ce projet utilise les outils suivants :
- Molecule pour orchestrer les scénarios de test
- Testinfra pour tester les modifications sur la machine distante
- pytest le cadre de test
- Tox gère les environnements virtuels Python pour le linting et les tests
- pip-tools pour gérer les dépendances
Un Visual Studio Code Dev Container est fourni pour développer et tester ce rôle.
Licence
MIT
Informations sur l'Auteur
John Freeman
GantSign Ltd. Numéro d'Entreprise 06109112 (enregistré en Angleterre)
Role for installing the Java JDK.
ansible-galaxy install gantsign.java