arolfes.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

# 如果应该将graalvm的bin目录添加到PATH环境变量
# 仅在此也是默认安装时生效
graalvm_add_to_path: true

# GraalVM安装软件包在本地机器上的位置
# 将优先使用本地软件包,而不是下载新软件包。
graalvm_local_archive_dir: '{{ playbook_dir }}/files'

# 是否使用本地归档中的安装软件包(如果可用)
graalvm_use_local_archive: true

# GraalVM可再分发的SHA-256
graalvm_redis_sha256sum:

# GraalVM下载位置(例如:https://example.com/provisioning/files)
# 仅在不是直接从github下载时指定
graalvm_redis_mirror:

# GraalVM可再分发安装文件的文件名
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"

# 与此GraalVM安装相关的Ansible事实组的名称。
#
# 如果您希望使用此角色多次安装多个版本的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版本

以下版本的GraalVM社区jdk在没有任何额外配置的情况下受支持

  • 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并设置为默认GraalVM
    - 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来帮助开发和测试; 此角色使用Testinfrapytest进行单元测试。

要进行开发或测试,您需要安装以下内容:

由于上述安装可能有些麻烦,此项目包含 Molecule Wrapper。Molecule Wrapper是一个shell脚本,用于安装Molecule及其依赖(除了Linux),然后使用您传递的命令执行Molecule。

要使用Molecule Wrapper测试此角色,请在项目根目录下运行以下命令:

./moleculew test

注意:某些依赖项需要sudo权限才能安装。

许可证

MIT

致谢

感谢 Gantsign的John提供的molecule wrapper脚本和出色的Ansible角色,这些角色可在ansible-galaxy上找到。

作者信息

亚历山大·罗尔费斯

关于项目

Role for installing the graalvm community jdk.

安装
ansible-galaxy install arolfes.graalvm
许可证
mit
下载
663
拥有者