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
示例剧本
默认情况下,此角色将安装最新的 LTS JDK 版本,该版本由 Adoptium 提供,并经过测试已知可以正常工作:
- 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 的更多角色
你可以在 Ansible Galaxy 找到更多 GantSign 的角色。
开发与测试
该项目使用以下工具:
提供了一个 Visual Studio Code 的 开发容器 用于开发和测试此角色。
许可证
MIT
作者信息
约翰·弗里曼
GantSign 有限公司。 公司编号:06109112(在英格兰注册)