srsp.oracle-java
srsp.oracle-java 用于 Ansible Galaxy
概述
Ansible Galaxy中的角色名称: srsp.oracle-java
这个 Ansible 角色与 Oracle JDK 相关的功能包括:
- 安装版本 8 到 13 的 Oracle JDK。
- 安装可选的 Java 加密扩展 (JCE)。 仅适用于任何 JDK 版本 <= 8u152。
- 支持 CentOS、Debian/Ubuntu、SUSE 和 macOS 操作系统。
这个角色基于 williamyeh.oracle-java,但我希望支持更近期的 Java 版本,因此决定放弃对旧版本的支持。
如果你更喜欢 OpenJDK,可以试试 geerlingguy.java。
从 Oracle 自动下载
注意: 在以前,这个角色会直接从 Oracle 网站下载所有 JDK。Oracle 逐步削减了这一可能性。现在,下载任何版本的 JDK 8 需要Oracle的登录。JDK 11 只能下载一个较旧的版本。而 JDK 13 目前可以下载。
由于每次 Oracle 发布新 Java 版本时这种情况都可能变化,所以你不应该依赖它。我建议手动下载 JDK,然后通过这个角色安装。
角色变量
基本用法
这将尝试从 Oracle 下载 JDK 并安装。
- hosts: all
roles:
- srsp.oracle-java
vars:
# 你应该设置这个:
- java_version: 13
# 你可以省略这个(角色会使用它知道的最新版本):
- java_subversion: 0.2
示例
安装手动下载的 JDK
将下载的 JDK 文件放入 files
目录,并将 java_download_from
设置为 local
:
- hosts: all
roles:
- srsp.oracle-java
vars:
- java_version: 8
- java_subversion: 201
- java_download_from: local
从你的镜像安装
- hosts: all
roles:
- srsp.oracle-java
vars:
- java_version: 8
- java_subversion: 172
- java_download_from: mirror
- java_mirror: "http://some.url/in/your/network/jdk-8u172-macosx-x64.dmg"
将 JDK 下载到本地机器(预取)
如果你只想在本地机器上获取 JDK(例如用于分子测试或上传到公司内网镜像),可以使用这个角色中的 prefetch.yml
剧本:
ansible-playbook prefetch.yml
根据你的需要更改剧本。
如果从命令行运行
ansible-playbook --ask-become-pass playbook.yml
可选变量
用户可配置的默认值:
# Java 版本
java_version: 8
# Java 子版本
java_subversion: 201
# 是否直接从 Oracle 下载 Java
# - oracle: 从 Oracle 网站动态下载。
# - mirror: 从在 'java_mirror' 定义的 URL 下载。
# - local: 从控制机器上的角色或剧本的 `files` 目录复制。
java_download_from: oracle
# 根据 'java_download_from' 的值会发生不同的事情:
# - oracle: 你不需要设置。它会预填充值为 Oracle 下载镜像。
# - mirror: 你需要设置要下载的镜像。必须设置完整的 URL,包括文件,如下例所示。如果你还要 JCE,需要同时设置 'jce_zip_url'。
# - local: 不使用 'java_mirror',因此该值被忽略。
#java_mirror: "https://private-repo.com/java/jdk-8u172-macosx-x64.dmg"
java_mirror: "http://download.oracle.com/otn-pub/java"
# 是否删除暂时下载的文件?
java_remove_download: true
# 是否设置 $JAVA_HOME?
java_set_java_home: true
# 安装 JCE?
java_install_jce: false
关于其他可配置选项,可以阅读 tasks/set-role-variables.yml
文件;例如,查看支持的 java_version
/java_subversion
组合。
我想安装一个你还不支持的 JDK!
没问题!你只需在变量 java_build
和 jdk_tarball_hash
中指定相应的 Java 构建号,以及 java_version
和 java_subversion
,例如:
# 文件: playbook.yml
- hosts: all
roles:
- srsp.oracle-java
vars:
- java_version: 8
- java_subversion: 141
- java_build: 15
- jdk_tarball_hash: 336fa29ff2bb4ef291e347e091f7f4a7
许可证
根据 Apache 许可证 V2.0 进行许可。详细信息见 LICENSE 文件。
开发
测试
测试使用 molecule
。由于这个角色需要 Oracle 的 JDK,分子测试容器将挂载 /tmp/java
,因此 JDK 保留在本地机器上,并在测试容器销毁后仍可用。你还可以预取安装文件并将其放入 /tmp/java
。
这将针对默认场景执行完整的测试周期:
molecule test
如果你想在某个特定的发行版上工作,可以使用如下命令:
molecule converge --scenario-name opensuse15
如果你想测试所有内容,可以输入:
molecule test --all
这会花费一些时间。