fernandrone.ansible_sdkman
Ansible 角色: fernandrone.ansible_sdkman
这是一个 Ansible 角色,执行以下功能:
- 安装 SDKMAN
- 安装/卸载 SDKMAN 管理的软件 候选项
- 设置 SDK 版本默认值
- 管理 SDKMAN 配置文件:
/path/to/sdkman/etc/config
- 刷新 SDKMAN 缓存
警告:Oracle 已逐步增加安装其 JDK 的难度,这影响了通过 SDKMAN 安装它们的能力。建议使用 OpenJDK,或者通过其他方式安装/管理 Oracle JDK。
要求
无。
角色变量
有关每个可重写变量的描述,请查看 defaults。
依赖关系
无。
示例剧本
这是一个示例!
- hosts: servers
roles:
- role: fernandrone.ansible_sdkman
sdkman_user: vagrant
sdkman_group: vagrant
sdkman_auto_answer: true
sdkman_update: true
sdkman_uninstall_packages:
- { candidate: groovy, version: 1.8.9 }
sdkman_install_packages:
- { candidate: java, version: 8.0.202-zulu }
- { candidate: gradle, version: '3.5' }
- { candidate: gradle, version: 2.14.1 }
- { candidate: maven, version: 3.5.0 }
- { candidate: maven, version: 3.3.9 }
# 如果希望 SDKMAN 知道通过 *不使用* SDKMAN 安装的包,使用此语法,例如 Oracle JDK
- { candidate: java, version: 1.8.0-oracle, localpath: /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk }
sdkman_defaults:
gradle: '3.5'
maven: 3.3.9
java: 8.0.202-zulu
sdkman_flush_caches_before:
- temp
sdkman_flush_caches_after:
- archives
- broadcast
- candidates
- temp
sdkman_offline_mode: false
sdkman_update_alternatives:
- candidate: java
name: java
link: /usr/bin/java
- candidate: java
name: javac
link: /usr/bin/javac
sdkman_fix_permissions: false
附加说明
如果要跳过任何需要提升权限的步骤(即 sudo
命令),该角色已将这些任务标记为 sdkman_privilege
。在命令行上传递 --skip-tags
标志和此标签,以跳过您系统管理员可能已经完成的任何步骤(例如安装系统包)。
在 Alpine Linux 上测试此角色是一个艰难的过程。通过 SDKMAN 提供的较新 JDK 构建(>-11)与 Alpine 不兼容。建议通过 apk
包存储库安装 JDK/JRE。虽然如此,我目前不确定 SDKMAN 包在 Alpine 上的运行情况。结果可能会有所不同。_请您注意_。