gantsign.java
Ansibleロール: Java
JavaのJDKをインストールするためのロールです。
要件
Ansible Core >= 2.12
Linuxディストリビューション
Debian系
Debian
- Buster (10)
- Bullseye (11)
Ubuntu
- Bionic (18.04)
- Focal (20.04)
- Jammy (22.04)
RedHat系
Rocky Linux
- 8
Fedora
- 35
SUSE系
openSUSE
- 15.4
注意: 他のバージョンも動作する可能性がありますが、テストは行われていません。
ロール変数
次の変数を変更することでこのロールの動作が変わります(デフォルト値は以下に表示):
# Javaのバージョン番号
# '8', '11', '17'または'21'を指定すると、そのリリースの最新パッチバージョンがインストールされます。
java_version: '21.0.2+13'
# Javaディストリビューションの基本インストールディレクトリ
java_install_dir: '/opt/java'
# リモートボックス上でのJavaインストールのためにダウンロードしたファイルを保存するディレクトリ
java_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# ローカルボックス上でJavaインストールパッケージを見つけることができる場所
# ローカルパッケージは新しいパッケージをダウンロードするよりも優先されます。
java_local_archive_dir: '{{ playbook_dir }}/files'
# ローカルアーカイブ内のインストールパッケージを使用するかどうか(使用可能な場合)
java_use_local_archive: true
# これがデフォルトのインストールである場合、JAVA_HOME環境変数を設定し、binディレクトリをPATH環境変数に追加するためのプロファイルスクリプトが作成されます。
java_is_default_installation: true
# このJavaインストールに関連するAnsibleファクトのグループ名です。
#
# 複数のJavaバージョンをインストールするためにこのロールを一度以上使用する場合は上書きしてください。
#
# 例: java_fact_group_name: java_8
# これによりJava homeファクトは次のようになります:
# ansible_local.java_8.general.home
java_fact_group_name: java
# JDK再配布用のSHA-256
java_redis_sha256sum:
# JDKダウンロード用のミラーの場所(例: https://example.com/provisioning/files)
java_redis_mirror:
# JDK再配布用のインストールファイル名
java_redis_filename:
# JDKダウンロード応答のタイムアウト秒数
java_download_timeout_seconds: 600
# Adoptium APIのタイムアウト
java_api_timeout_seconds: 30
サンプルプレイブック
デフォルトでは、このロールはAdoptiumが提供する最新のLTS JDKバージョンをインストールします。このバージョンはテストされていて、このロールでの動作が確認されています:
- hosts: servers
roles:
- role: gantsign.java
java_version
を指定することで、特定のJDKバージョンをインストールできます。
- hosts: servers
roles:
- role: gantsign.java
java_version: '8.0.402+6'
注意: curl と jq を使用すると、次のコマンドを実行することで利用可能なバージョンを表示できます:
for i in 21 17 11 8; do (curl --silent http \
"https://api.adoptium.net/v3/info/release_names?version=%5B$i,$(($i + 1)))\
&release_type=ga" | jq --raw-output '.releases[]' | sed -E 's/^jdk\-?//'); done
このロールを複数回使用することで、複数のJDKバージョンをインストールできます:
- hosts: servers
roles:
- role: ansible-role-java
java_version: '8'
java_is_default_installation: false
java_fact_group_name: java_8
- role: ansible-role-java
java_version: '11'
java_is_default_installation: true
java_fact_group_name: java
オフラインインストールを行うには、もう少し情報を指定する必要があります(すなわち、java_major_version
、java_release_name
、java_redis_filename
、java_redis_sha256sum
)。例えば、11.0.22+7
のオフラインインストールを行うには:
# オフラインインストールを行う前に
# `OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz`を
# `{{ playbook_dir }}/files/`にダウンロードしてください。
- hosts: servers
roles:
- role: gantsign.java
java_major_version: '11'
java_version: '11.0.22+7'
java_release_name: 'jdk-11.0.22+7'
java_redis_filename: 'OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz'
java_redis_sha256sum: '25cf602cac350ef36067560a4e8042919f3be973d419eac4d839e2e0000b2cc8'
ロールファクト
このロールは他のロールで使用するために次のAnsibleファクトをエクスポートします:
ansible_local.java.general.version
- 例:
8u402
- 例:
ansible_local.java.general.home
- 例:
/opt/java/jdk8u402
- 例:
java_fact_group_name
を上書きするとファクトの名前が変わります。例えば:
java_fact_group_name: java_8
これによりファクトの名前は次のように変更されます:
ansible_local.java_8.general.version
ansible_local.java_8.general.home
GantSignの他のロール
GantSignの他のロールはAnsible Galaxyで見つけることができます。
開発とテスト
このプロジェクトは次のツールを使用しています:
- Molecule テストシナリオの調整に使用
- Testinfra リモートの変更をテストするために使用
- pytest テストフレームワーク
- Tox リンティングとテストのためのPython仮想環境を管理
- pip-tools 依存関係の管理
Visual Studio CodeのDev Containerが用意されており、このロールの開発とテストに使用できます。
ライセンス
MIT
著者情報
John Freeman
GantSign Ltd. 会社番号: 06109112(イングランドに登録)