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.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.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.
ansible.builtin.find:
paths: "{{ java_install_dir }}"
file_type: directory
patterns: "jdk-{{ java_version }}*"
register: installed_java
- name: Delete installed Java.
ansible.builtin.file:
path: "{{ item.path }}"
state: absent
with_items:
- "{{ installed_java.files }}"
- name: Download Java distribution file.
ansible.builtin.get_url:
url: "{{ java_distributions[java_version].url }}"
dest: "{{ temp_dir }}"
register: distribution_file
- name: Unarchive Java distribution file.
ansible.builtin.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.
ansible.builtin.file:
src: "{{ java_install_dir }}/{{ contents.files[0] | regex_replace('.*/(.+)/$', '\\1') }}"
dest: "{{ java_home }}"
state: link
- name: Make alternatives.
community.general.alternatives:
name: "{{ item }}"
link: "/usr/bin/{{ item }}"
path: "{{ java_home }}/bin/{{ item }}"
with_items:
- java
- javac
- name: Delete Java distribution file.
ansible.builtin.file:
path: "{{ distribution_file.dest }}"
state: absent