0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL 24.04 Ansible 2.18.1 JDK 21

【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 で実施する方が使い勝手良いかも。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?