graalvm

Ansible Роль: GraalVM

Статус сборки Ansible Galaxy Лицензия

Роль для установки 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.

Информация об авторе

Александр Рольфес

О проекте

Role for installing the graalvm community jdk.

Установить
ansible-galaxy install arolfes/ansible-role-graalvm
Лицензия
mit
Загрузки
635
Владелец