Sample to install Java with Ansible
defaults/main.yml
---
#Temporary directory
temp_dir: /var/tmp
#Java distribution
java_distributions:
  '11':
    url: https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz
#Java installation directory
java_install_dir: /usr/lib/jvm
# Java Home
java_home: "{{ java_install_dir }}/jdk-{{ java_version }}"
tasks/main.yml
---
- import_tasks: setup.yml
tasks/setup.yml
---
- name: Find installed Java.
  find:
    paths: "{{ java_install_dir }}"
    file_type: directory
    patterns: "jdk-{{ java_version }}*"
  register: installed_java
- name: Delete installed Java.
  file:
    path: "{{ item.path }}"
    state: absent
  with_items:
    - "{{ installed_java.files }}"
- name: Download Java distribution file.
  get_url:
    url: "{{ java_distributions[ java_version ].url }}"
    dest: "{{ temp_dir }}"
  register: distribution_file
- name: Unarchive Java distribution file.
  unarchive:
    src: "{{ distribution_file.dest }}"
    dest: "{{ java_install_dir }}"
    remote_src: yes
    list_files: yes
    owner: root
    group: root
    mode: u=rwX,go=rX
  register: contents
- name: Create symbolic link.
  file:
    src: "{{ java_install_dir }}/{{ contents.files[ 0 ] | regex_replace( '.*/(.+)/$', '\\1' ) }}"
    dest: "{{ java_home }}"
    state: link
- name: Make alternatives.
  alternatives:
    name: "{{ item }}"
    link: "/usr/bin/{{ item }}"
    path: "{{ java_home }}/bin/{{ item }}"
  with_items:
    - java
    - javac
- name: Delete Java distribution file.
  file:
    path: "{{ distribution_file.dest }}"
    state: absent
        Recommended Posts