arolfes.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
# 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_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'
# 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役割を提供してくださったことに。
著者情報
アレクサンダー・ロルフェス