java
Ansible Роль: Java
Роль для установки Java JDK.
Требования
Ansible Core >= 2.12
Линейка Linux
Семейство Debian
Debian
- Buster (10)
- Bullseye (11)
Ubuntu
- Bionic (18.04)
- Focal (20.04)
- Jammy (22.04)
Семейство RedHat
Rocky Linux
- 8
Fedora
- 35
Семейство SUSE
openSUSE
- 15.4
Примечание: другие версии могут работать, но не были протестированы.
Переменные роли
Следующие переменные изменят поведение этой роли (значения по умолчанию показаны ниже):
# Версия Java
# Укажите '8', '11', '17' или '21' для получения последней версии патча этой
# версии.
java_version: '21.0.2+13'
# Основной каталог установки для любой дистрибуции Java
java_install_dir: '/opt/java'
# Каталог для хранения файлов, загруженных для установки Java на удаленной машине
java_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Место, где пакеты для установки Java можно найти на локальной машине
# локальные пакеты будут использоваться в предпочтение загрузки новых пакетов.
java_local_archive_dir: '{{ playbook_dir }}/files'
# Нужно ли использовать установочные пакеты из локального архива (если они доступны)
java_use_local_archive: true
# Если это установка по умолчанию, скрипты профиля будут записаны для установки
# переменной окружения JAVA_HOME и добавления каталога bin в переменную окружения PATH.
java_is_default_installation: true
# Имя группы фактов Ansible, относящихся к этой установке Java.
#
# Переопределите, если хотите использовать эту роль более одного раза для установки нескольких версий
# Java.
#
# например, java_fact_group_name: java_8
# изменит факт дома Java на:
# ansible_local.java_8.general.home
java_fact_group_name: java
# SHA-256 для JDK redistributable
java_redis_sha256sum:
# Место зеркала для загрузки JDK (например, https://example.com/provisioning/files)
java_redis_mirror:
# Имя файла для файла установки JDK redistributable
java_redis_filename:
# Тайм-аут для ответа загрузки JDK в секундах
java_download_timeout_seconds: 600
# Тайм-аут для API Adoptium
java_api_timeout_seconds: 30
Пример сценариев
По умолчанию эта роль установит последнюю стабильную версию JDK, предоставленную Adoptium, которая была протестирована и известна как работоспособная с этой ролью:
- hosts: servers
roles:
- role: gantsign.java
Вы можете установить конкретную версию JDK, указав java_version
.
- hosts: servers
roles:
- role: gantsign.java
java_version: '8.0.402+6'
Примечание: с помощью curl и jq вы можете просмотреть доступные версии, запустив следующую команду:
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
Вы можете установить несколько версий JDK, используя эту роль более одного раза:
- 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
Чтобы выполнить оффлайн установку, вам нужно указать немного больше информации (т.е.
java_major_version
, java_release_name
, java_redis_filename
и
java_redis_sha256sum
). Например, для выполнения оффлайн установки 11.0.22+7
:
# Перед выполнением оффлайн установки загрузите
# `OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz` в
# `{{ playbook_dir }}/files/` на локальном компьютере.
- 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'
Факты ролей
Эта роль экспортирует следующие факты Ansible для использования другими ролями:
ansible_local.java.general.version
- напр.
8u402
- напр.
ansible_local.java.general.home
- напр.
/opt/java/jdk8u402
- напр.
Переопределение java_fact_group_name
изменит названия фактов, например:
java_fact_group_name: java_8
изменит названия фактов на:
ansible_local.java_8.general.version
ansible_local.java_8.general.home
Другие роли от GantSign
Вы можете найти больше ролей от GantSign на Ansible Galaxy.
Разработка и тестирование
Этот проект использует следующие инструменты:
- Molecule для организации тестовых сценариев
- Testinfra для тестирования изменений на удаленной машине
- pytest как фреймворк тестирования
- Tox управляет виртуальными окружениями Python для линтинга и тестирования
- pip-tools для управления зависимостями
Предоставлен контейнер для разработки Visual Studio Code для разработки и тестирования этой роли.
Лицензия
MIT
Информация об авторе
Джон Фриман
GantSign Ltd. Номер компании: 06109112 (записана в Англии)
Role for installing the Java JDK.
ansible-galaxy install gantsign/ansible-role-java