fernandrone.ansible_sdkman

Ansible Role: fernandrone.ansible_sdkman

Role on Galaxy Downloads License Build Status

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

Apache 2.0

Author Information

Informazioni sul progetto

An Ansible role that installs/manages SDKMAN

Installa
ansible-galaxy install fernandrone.ansible_sdkman
Licenza
apache-2.0
Download
75
Proprietario
YAML Engineer. Likes Go.