fernandrone.ansible_sdkman
Ansible Role: fernandrone.ansible_sdkman
This Ansible role does the following:
- Installs SDKMAN
- Installs or uninstalls software managed by SDKMAN
- Sets default versions for SDKs
- Manages the SDKMAN configuration file located at:
/path/to/sdkman/etc/config
- Clears the SDKMAN caches
Note: Oracle has made it hard to install their JDKs, which affects installation through SDKMAN. It's better to use OpenJDK or manage Oracle JDK in other ways.
Requirements
None.
Role Variables
Check the defaults for details on each variable you can customize.
Dependencies
None.
Example Playbook
Here's a simple example:
- 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 }
# If you want SDKMAN to recognize packages installed outside of it, like Oracle JDKs
- { 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
Additional Notes
You can skip steps requiring elevated privileges (like sudo
) because this role tags those tasks with sdkman_privilege
. Use the --skip-tags
flag in the command line with this tag to bypass tasks already done by your system administrator (e.g., installing system packages).
Testing this role on Alpine Linux has been challenging. Newer JDK versions (greater than 11) from SDKMAN are not supported on Alpine. It's recommended to install a JDK/JRE through the apk
package repository. Be aware that SDKMAN packages may not run well on Alpine; results can vary. You've been warned.
License
Author Information
An Ansible role that installs/manages SDKMAN
ansible-galaxy install fernandrone.ansible_sdkman