gantsign.java

Ansibleロール: Java

テスト Ansible Galaxy ライセンス

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'

注意: curljq を使用すると、次のコマンドを実行することで利用可能なバージョンを表示できます:

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_versionjava_release_namejava_redis_filenamejava_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(イングランドに登録)

プロジェクトについて

Role for installing the Java JDK.

インストール
ansible-galaxy install gantsign.java
ライセンス
mit
ダウンロード
149.3k
所有者