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_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を意味する)またはarch64
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_pathfalseに設定します。

- 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'

    # 2番目の役割は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を使用しています。この役割は、TestinfraおよびTestを使用してユニットテストされています。

開発やテストを実施するには、以下のものをインストールする必要があります:

これらをインストールするのが難しい場合があるため、このプロジェクトにはMolecule Wrapperが含まれています。Molecule Wrapperは、Moleculeとその依存関係をインストールしてから、渡したコマンドでMoleculeを実行するシェルスクリプトです。

Molecule Wrapperを使用してこの役割をテストするには、プロジェクトのルートから次のコマンドを実行します:

./moleculew test

注意: 一部の依存関係にはインストールにsudo権限が必要です。

ライセンス

MIT

クレジット

感謝をJohn氏に、Molecule Wrapperスクリプトと、Ansible Galaxyで利用可能な素晴らしいAnsible役割を提供してくださったことに。

著者情報

アレクサンダー・ロルフェス

プロジェクトについて

Role for installing the graalvm community jdk.

インストール
ansible-galaxy install arolfes.graalvm
ライセンス
mit
ダウンロード
663
所有者