Java
OpenJDK
Ansible

Ansible で Java をインストール

Ansible で Java をインストールするサンプル

※ 変数 "java_version" は --extra-vars で java_version=11 の様に指定


defaults/main.yml

---

# 一時ディレクトリ
temp_dir: /var/tmp

# Java ディストリビューション
java_distributions:
'11':
url: https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11%2B28/OpenJDK11-jdk_x64_linux_hotspot_11_28.tar.gz

# Java インストールディレクトリ
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