frieder.oraclejdk
ansible-role-oraclejdk
An Ansible role to install Oracle JDK.
Supported Platforms
- Ubuntu
- Debian
- Red Hat
- CentOS
- Fedora
- SUSE
- openSUSE
JDK Versions
- Oracle JDK 8
- Oracle JDK 9
Summary
This Ansible role installs Oracle JDK along with the optional Java Cryptography Extension (JCE) on the selected host. Please note that OpenJDK is not supported. It has been tested with Oracle JDK versions 8u144, 8u151 and 9u181, 9.0.1 across various Linux distributions:
- Ubuntu 16.04
- Debian 9
- RHEL 7.4
- CentOS 7.3
- Fedora 26
- SLE 12 SP2
- openSUSE 42.2
Dependencies
- Ansible version 2.x or higher (tested with 2.3.2.0 and 2.4.0.0)
- Required packages:
tar
: Needed to extract the JDK archive.unzip
: Required only if installing JCE for JDK8.
Installation
To use this role, download it from Ansible Galaxy by running the following command on your Ansible control machine:
ansible-galaxy install frieder.oraclejdk
Alternatively, you can download the role from GitHub and specify a version by creating a requirements.yml
file with this content:
---
- name: frieder.oraclejdk
src: https://github.com/frieder/ansible-role-oraclejdk
version: 2.0.0
Then run:
ansible-galaxy install -r ./requirements.yml --ignore-errors
This command will install all dependencies listed, ignoring any errors from already downloaded files.
Role Variables
All variables for this role are stored in defaults/main.yml
. You can override these values in your playbook (examples below).
Variable | Default | Description |
---|---|---|
oraclejdk_license_accept | false | Must be true to install JDK, not required for removal. |
oraclejdk_state | present | Set to add or remove a JDK; options are [present, absent] . |
oraclejdk_cleanup | true | Remove temporary files after installation. Set to true to mark changes. |
oraclejdk_dl_dir | /tmp/oraclejdk | Directory for downloading the archives. |
oraclejdk_home | Path for JAVA_HOME, varies based on state. | |
oraclejdk_profile_file | /etc/profile.d/java.sh | File for setting JAVA_HOME and PATH. |
oraclejdk_cookie | Cookie:oraclelicense=accept-securebackup-cookie | Required for automated downloads. |
oraclejdk_url | URL for the JDK archive, can be from oracle.com or an internal source. | |
oraclejdk_url_user | Provide username if HTTP auth is needed. | |
oraclejdk_url_pass | Provide password if HTTP auth is needed. | |
oraclejdk_checksum | SHA256 checksum for verifying the download. | |
oraclejdk_sethome | true | Update JAVA_HOME and PATH variable to the JDK directory. |
oraclejdk_alternative_upd | true | Set the current JDK as the default alternative. |
oraclejdk_alternative_prio | 1 | Priority for the update-alternatives command. |
oraclejdk_alternative_items |
|
Items to configure for the JDK alternatives. |
oraclejdk_jce_install | false | Set to true to install the latest JCE with JDK8. |
oraclejdk_jce_name | UnlimitedJCEPolicyJDK8 | Folder name in the JCE archive for JDK8 only. |
oraclejdk_jce_url | JCE archive URL for JDK8 only. | |
oraclejdk_jce_checksum | JCE archive checksum for JDK8 only. |
Example Playbooks
Here are some examples of how to use this role in Ansible playbooks.
Installing JDK8 and JDK9 with different priorities
- hosts: jdk
pre_tasks:
- name: Install required packages (127.0.0.1)
delegate_to: 127.0.0.1
run_once: true
package:
name: '{{ item }}'
state: present
with_items:
- tar
- unzip
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk9.0.1
oraclejdk_sethome: false
oraclejdk_alternative_prio: 100
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz'
oraclejdk_checksum: 'sha256:2cdaf0ff92d0829b510edd883a4ac8322c02f2fc1beae95d048b6716076bc014'
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk8u151
oraclejdk_alternative_prio: 200
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz'
oraclejdk_checksum: 'sha256:c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f'
oraclejdk_jce_install: true
oraclejdk_jce_url: 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip'
oraclejdk_jce_checksum: 'sha256:f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59'
Installing JDK8 with minimal settings
- hosts: jdk8
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk8_151
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz'
oraclejdk_checksum: 'sha256:c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f'
Installing JDK8 with JCE
- hosts: jdk8
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/java-8-151
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz'
oraclejdk_checksum: 'sha256:c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f'
oraclejdk_jce_install: true
oraclejdk_jce_url: 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip'
oraclejdk_jce_checksum: 'sha256:f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59'
Full configuration for JDK8
- hosts: jdk8
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_cleanup: true
oraclejdk_dl_dir: /tmp/java_download
oraclejdk_home: /opt/java/java-8-151
oraclejdk_sethome: true
oraclejdk_alternative_upd: true
oraclejdk_alternative_prio: 123
oraclejdk_alternative_items:
- jar
- java
- javac
- jcmd
- jconsole
- jmap
- jps
- jstack
- jstat
- jstatd
oraclejdk_profile_file: /etc/profile.d/java.sh
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz'
oraclejdk_checksum: 'sha256:c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f'
oraclejdk_jce_install: true
oraclejdk_jce_url: 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip'
oraclejdk_jce_checksum: 'sha256:f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59'
Installing JDK9
- hosts: jdk9
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk9.0.1
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz'
oraclejdk_checksum: 'sha256:2cdaf0ff92d0829b510edd883a4ac8322c02f2fc1beae95d048b6716076bc014'
Installing JDK9 without checksum validation
- hosts: jdk9
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk9.0.1
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz'
oraclejdk_checksum: ''
Adding new JDK9 and removing old JDKs
- hosts: jdk9
roles:
- role: frieder.oraclejdk
oraclejdk_license_accept: true
oraclejdk_home: /opt/java/jdk9.0.1
oraclejdk_url: 'http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz'
oraclejdk_checksum: ''
- role: frieder.oraclejdk
oraclejdk_state: absent
oraclejdk_home:
- /opt/java/jdk9.0.1
- /opt/java/java-8-151
ansible-galaxy install frieder.oraclejdk