diff --git a/roles/maven/defaults/main.yml b/roles/maven/defaults/main.yml new file mode 100644 index 0000000..0010058 --- /dev/null +++ b/roles/maven/defaults/main.yml @@ -0,0 +1,6 @@ +--- + +mvn_version: 3.6.3 +mvn_archive_url: https://miroir.univ-lorraine.fr/apache/maven/maven-3/{{ mvn_version }}/binaries/apache-maven-{{ mvn_version }}-bin.tar.gz +mvn_archive_sha1: cc836dc7e64b113472df31996caaedf132969009 +mvn_root_dir: /opt/maven diff --git a/roles/maven/tasks/cleanup.yml b/roles/maven/tasks/cleanup.yml new file mode 100644 index 0000000..0bb09d5 --- /dev/null +++ b/roles/maven/tasks/cleanup.yml @@ -0,0 +1,8 @@ +--- + +- name: Remove temp files + file: path={{ item }} state=absent + loop: + - "{{ mvn_root_dir }}/tmp/apache-maven-{{ mvn_version }}-bin.tar.gz" + - "{{ mvn_root_dir }}/tmp/apache-maven-{{ mvn_version }}" + tags: mvn diff --git a/roles/maven/tasks/directories.yml b/roles/maven/tasks/directories.yml new file mode 100644 index 0000000..fdecad0 --- /dev/null +++ b/roles/maven/tasks/directories.yml @@ -0,0 +1,12 @@ +--- + +- name: Create needed directories + file: path={{ item.dir }} state=directory owner={{ item.owner | default(omit) }} group={{ item.group | default(omit) }} mode={{ item.mode | default(omit) }} + loop: + - dir: "{{ mvn_root_dir }}" + - dir: "{{ mvn_root_dir }}/meta" + mode: 700 + - dir: "{{ mvn_root_dir }}/tmp" + mode: 700 + - dir : "{{ mvn_root_dir }}/apache-maven" + tags: mvn diff --git a/roles/maven/tasks/facts.yml b/roles/maven/tasks/facts.yml new file mode 100644 index 0000000..12a73c4 --- /dev/null +++ b/roles/maven/tasks/facts.yml @@ -0,0 +1,30 @@ +--- + +- name: Set install mode + set_fact: mvn_install_mode='none' + tags: mvn + +- name: Check if version file exists + stat: path={{ mvn_root_dir }}/meta/ansible_version + register: mvn_version_file + tags: mvn + +- name: Detect installed version + block: + - slurp: src={{ mvn_root_dir }}/meta/ansible_version + register: mvn_current_version + - set_fact: mvn_current_version={{ mvn_current_version.content | b64decode | trim }} + when: mvn_version_file.stat.exists + tags: mvn + +- name: Set install mode + set_fact: mvn_install_mode='install' + when: not mvn_version_file.stat.exists + tags: mvn + +- name: Set upgrade mode + set_fact: mvn_install_mode='upgrade' + when: + - mvn_version_file.stat.exists + - mvn_current_version != mvn_version + tags: mvn diff --git a/roles/maven/tasks/install.yml b/roles/maven/tasks/install.yml new file mode 100644 index 0000000..744f606 --- /dev/null +++ b/roles/maven/tasks/install.yml @@ -0,0 +1,40 @@ +--- + +- name: Install java + yum: + name: + - java-1.8.0-openjdk + tags: mvn + +- name: Install or update maven + block: + - name: Download maven + get_url: + url: "{{ mvn_archive_url }}" + dest: "{{ mvn_root_dir }}/tmp/" + checksum: sha1:{{ mvn_archive_sha1 }} + + - name: Extract maven archive + unarchive: + src: "{{ mvn_root_dir }}/tmp/apache-maven-{{ mvn_version }}-bin.tar.gz" + dest: "{{ mvn_root_dir }}/tmp/" + remote_src: True + + - name: Move maven to its final location + synchronize: + src: "{{ mvn_root_dir }}/tmp/apache-maven-{{ mvn_version }}/" + dest: "{{ mvn_root_dir }}/apache-maven/" + recursive: True + delete: True + delegate_to: "{{ inventory_hostname }}" + + when: mvn_install_mode != 'none' + tags: mvn + +- name: Write installed version + copy: content={{ mvn_version }} dest={{ mvn_root_dir }}/meta/ansible_version + tags: mvn + +- name: Deploy profile script + template: src=profile.sh.j2 dest=/etc/profile.d/maven.sh mode=755 + tags: mvn diff --git a/roles/maven/tasks/main.yml b/roles/maven/tasks/main.yml new file mode 100644 index 0000000..4973954 --- /dev/null +++ b/roles/maven/tasks/main.yml @@ -0,0 +1,6 @@ +--- + +- include: directories.yml +- include: facts.yml +- include: install.yml +- include: cleanup.yml diff --git a/roles/maven/templates/profile.sh.j2 b/roles/maven/templates/profile.sh.j2 new file mode 100644 index 0000000..da598fc --- /dev/null +++ b/roles/maven/templates/profile.sh.j2 @@ -0,0 +1,6 @@ +#!/bin/sh + +export JAVA_HOME=/usr/lib/jvm/jre-openjdk +export M2_HOME={{ mvn_root_dir }}/apache-maven +export MAVEN_HOME={{ mvn_root_dir }}/apache-maven +export PATH=${M2_HOME}/bin:${PATH}