graalvm
Ansible Роль: GraalVM
Роль для установки GraalVM CE.
Требования
Ansible >= 5 (Ansible Core >= 2.12)
Дистрибутив Linux
Семейство Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Debian
- Buster (10)
- Bullseye (11)
- Bookworm (12)
Семейство RedHat
Fedora
- 37
- 38
Семейство SUSE
openSUSE
- 15.0
- 15.1
- 15.2
- 15.3
- 15.4
- 15.5
Примечание: другие версии, вероятно, тоже будут работать, но не были протестированы.
Переменные роли
Следующие переменные изменят поведение этой роли (по умолчанию указаны значения ниже):
# укажите версию jdk сообщества
# 17.0.7, 17.0.8, 20.0.1, 20.0.2, 21.0.0 или 21.0.2
graalvm_java_version: '21.0.2'
# Базовый каталог установки для любого дистрибутива GraalVM
graalvm_install_dir: '/opt/graalvm'
# Каталог для хранения файлов, загруженных для установки GraalVM на удаленном сервере
graalvm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Если это установка по умолчанию, то скрипты профиля будут записаны для установки
# переменной окружения GRAALVM_HOME
graalvm_is_default_installation: true
# Если каталог bin GraalVM должен быть добавлен в переменную окружения PATH
# Эффект имеет место только когда это также установка по умолчанию
graalvm_add_to_path: true
# Место, где пакеты установки GraalVM могут быть найдены на локальной машине
# локальные пакеты будут использоваться в предпочтение новым загрузкам.
graalvm_local_archive_dir: '{{ playbook_dir }}/files'
# Использовать ли пакеты установки из локального архива (если доступны)
graalvm_use_local_archive: true
# SHA-256 для redistributable GraalVM
graalvm_redis_sha256sum:
# место для загрузки GraalVM (например, https://example.com/provisioning/files)
# указывайте только если не загружаете напрямую с github
graalvm_redis_mirror:
# Имя файла для файла установки redistributable GraalVM
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"
# Имя группы фактов Ansible, относящихся к этой установке GraalVM.
#
# Переопределите, если хотите использовать эту роль более одного раза для установки нескольких версий
# GraalVM.
#
# например, graalvm_fact_group_name: graalvm_20_0_2
# изменит домен GraalVM на:
# ansible_local.graalvm_20_0_2.general.home
graalvm_fact_group_name: graalvm
# Тайм-аут для ответа на загрузку GraalVM в секундах
graalvm_download_timeout_seconds: 600
# выберите архитектуру, x64 (означает amd64) или aarch64
graalvm_architecture: 'x64'
Поддерживаемые версии GraalVM
Следующие версии jdk сообщества graalvm поддерживаются без дополнительной настройки
- 17.0.7
- 17.0.8
- 20.0.1
- 20.0.2
- 21.0.0
- 21.0.2
Поддерживаемые архитектуры
- x64 (означает amd64)
- aarch64
Примеры плейбуков
По умолчанию эта роль установит последнюю версию GraalVM CE, которая была протестирована и известна как работающая с этой ролью:
- hosts: servers
roles:
- role: arolfes.graalvm
# результаты:
# новый файл /etc/profile.d/graalvm.sh
# содержимое:
# GRAALVM_HOME=/opt/graalvm/jdk-21.0.2
# PATH=${GRAALVM_HOME}/bin:${PATH}
Для установки более старой версии
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
Если вы не хотите, чтобы GraalVM была в вашей переменной Path, установите graalvm_add_to_path
в false
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_add_to_path: false
Если вы не хотите файл /etc/profile.d/graalvm.sh
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_is_default_installation: false
Вы можете установить несколько версий GraalVM, используя эту роль более одного раза:
- hosts: servers
roles:
# первая роль установит 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'
# вторая роль установит graalvm-community-jdk-21.0.2 и будет установлена как версия по умолчанию
- role: arolfes.graalvm
Для выполнения оффлайн установки вам нужно указать немного больше информации (т.е. graalvm_redis_filename и graalvm_redis_sha256sum). Например, для выполнения оффлайн установки graalvm-19.3.2-java11:
# Перед выполнением оффлайн установки, загрузите
# `graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz` в
# `{{ playbook_dir }}/files/` на локальной машине.
- 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'
Факты роли
Эта роль экспортирует следующие факты Ansible для использования другими ролями:
ansible_local.graalvm.general.java_version
- например,
21.0.2
- например,
ansible_local.graalvm.general.home
- например,
/opt/graalvm/jdk-21.0.2
- например,
Переопределение graalvm_fact_group_name
изменит названия фактов, например:
graalvm_fact_group_name: graalvm_java_21_0_0
Изменит название фактов на:
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
Разработка и тестирование
Этот проект использует Molecule для помощи в разработке и тестировании; роль проходит модульное тестирование с использованием Testinfra и pytest.
Чтобы разрабатывать или тестировать, вам нужно установить следующее:
Поскольку установка вышеперечисленного может быть сложной, этот проект включает Molecule Wrapper. Molecule Wrapper — это shell-скрипт, который устанавливает Molecule и его зависимости (кроме Linux), а затем выполняет Molecule с переданной командой.
Чтобы протестировать эту роль, используя Molecule Wrapper, выполните следующую команду из корневого каталога проекта:
./moleculew test
Примечание: некоторые зависимости требуют разрешения sudo
для установки.
Лицензия
MIT
Благодарности
Большое спасибо Джону из Gantsign за предоставление скрипта обертки Molecule и замечательных ролей Ansible, которые доступны в ansible-galaxy.
Информация об авторе
Александр Рольфес
ansible-galaxy install arolfes/ansible-role-graalvm