【Java環境構築】WSL+SDKMAN!+VSCode で開発環境を構築する のスピンオフ記事です。
その記事では、 SDKMAN! で JDK と Maven をインストールしましたが、 Ansible で playbook.yaml を書いておけば、いちいちコマンド実行して環境を構築する必要がないので、その方法で構築し直してみました。
Ansible のインストール
WSL の Ubuntu にて Ansible をインストールします。インストール手順は公式ドキュメントの通りです。
sudo apt update
sudo apt install -y pipx
pipx ensurepath
sudo pipx ensurepath
pipx install ansible-core
# ansible-playbook コマンドを実行するため、シェルの再起動 or 新しいシェルの起動が必要
bash
which ansible-playbook
#=> /home/nimzo6689/.local/bin/ansible-playbook
JDK 21 と Maven をインストール
JDK は今回も Eclipse Temurin JDK 21 とします。
それぞれ、 PATH を通して JAVA_HOME を環境変数として追加します。
playbook.yaml
---
- name: Install Java Development Environment (Root tasks)
hosts: localhost
become: yes
vars:
java_version: 21
java_home: "/usr/lib/jvm/temurin-{{ java_version }}-jdk-amd64"
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install initial required packages
apt:
name:
- wget
- gpg
state: present
- name: Create keyrings directory
file:
path: /etc/apt/keyrings
state: directory
mode: '0755'
- name: Add Adoptium repository key
ansible.builtin.get_url:
url: https://packages.adoptium.net/artifactory/api/gpg/key/public
dest: /etc/apt/keyrings/adoptium.asc
mode: '0644'
- name: Add Adoptium repository
apt_repository:
repo: "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb {{ ansible_distribution_release }} main"
state: present
update_cache: yes
- name: Install Java and Maven
apt:
name:
- "temurin-{{ java_version }}-jdk"
- maven
state: present
update_cache: yes
- name: Configure User Environment
hosts: localhost
become: no
vars:
java_version: 21
java_home: "/usr/lib/jvm/temurin-{{ java_version }}-jdk-amd64"
tasks:
- name: Set JAVA_HOME in .bashrc
blockinfile:
path: "~/.bashrc"
block: |
export JAVA_HOME={{ java_home }}
export PATH=$JAVA_HOME/bin:$PATH
marker: "# {mark} JAVA ENVIRONMENT VARIABLES"
create: yes
playbook.yaml を作成して、 Ansible で適用していきます。
ansible-playbook -K playbook.yaml
問題なく構築できているか確認します。
java --version
#=> openjdk 21.0.5 2024-10-15 LTS
#=> OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
#=> OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)
mvn --version
#=> Apache Maven 3.8.7
#=> Maven home: /usr/share/maven
#=> Java version: 21.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm/temurin-21-jdk-amd64
#=> Default locale: en, platform encoding: UTF-8
#=> OS name: "linux", version: "5.15.167.4-microsoft-standard-wsl2", arch: "amd64", family: "unix"
# シェルの再起動、または、新しいシェルの起動
bash
echo $JAVA_HOME
#=> /usr/lib/jvm/temurin-21-jdk-amd64
JDK のバージョンを切り替える
JDK のバージョンを切り替えたい場合は、以下のコマンドでできます。
ansible-playbook -K playbook.yaml -e "java_version=17"
# シェルの再起動、または、新しいシェルの起動
bash
java --version
#=> openjdk 17.0.13 2024-10-15
#=> ...
echo $JAVA_HOME
#=> /usr/lib/jvm/temurin-17-jdk-amd64
WSL は作り直しが簡単にできるので、コマンドで構築手順を作るよりも Ansible などの IaC で実施する方が使い勝手良いかも。