From 1c2a883ec41776f0de3851e0ca5c3f1ee412bc74 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Sun, 30 Jan 2022 11:00:05 +0100 Subject: [PATCH] Update to 2022-01-30 11:00 --- roles/clojure/defaults/main.yml | 9 +++++ roles/clojure/tasks/cleanup.yml | 8 +++++ roles/clojure/tasks/facts.yml | 37 ++++++++++++++++++++ roles/clojure/tasks/install.yml | 60 +++++++++++++++++++++++++++++++++ roles/clojure/tasks/main.yml | 5 +++ roles/clojure/vars/RedHat-7.yml | 4 +++ roles/clojure/vars/RedHat-8.yml | 4 +++ 7 files changed, 127 insertions(+) create mode 100644 roles/clojure/defaults/main.yml create mode 100644 roles/clojure/tasks/cleanup.yml create mode 100644 roles/clojure/tasks/facts.yml create mode 100644 roles/clojure/tasks/install.yml create mode 100644 roles/clojure/tasks/main.yml create mode 100644 roles/clojure/vars/RedHat-7.yml create mode 100644 roles/clojure/vars/RedHat-8.yml diff --git a/roles/clojure/defaults/main.yml b/roles/clojure/defaults/main.yml new file mode 100644 index 0000000..4cc0d57 --- /dev/null +++ b/roles/clojure/defaults/main.yml @@ -0,0 +1,9 @@ +--- + +# Version to deploy +clojure_version: 1.10.3.1069 +# URL of the archive +clojure_archive_url: https://download.clojure.org/install/clojure-tools-{{ clojure_version }}.tar.gz +# Expected sha256 of the archive +clojure_archive_sha256: 83c26131943d655cb4fee0737e4b799386c9b800a28629258bc46ad6104bf6dd + diff --git a/roles/clojure/tasks/cleanup.yml b/roles/clojure/tasks/cleanup.yml new file mode 100644 index 0000000..fd3e2c6 --- /dev/null +++ b/roles/clojure/tasks/cleanup.yml @@ -0,0 +1,8 @@ +--- + +- name: Remove tmp files + file: path={{ item }} state=absent + loop: + - /tmp/clojure-tools-{{ clojure_version }}.tar.gz + - /tmp/clojure-tools + tags: clojure diff --git a/roles/clojure/tasks/facts.yml b/roles/clojure/tasks/facts.yml new file mode 100644 index 0000000..808c582 --- /dev/null +++ b/roles/clojure/tasks/facts.yml @@ -0,0 +1,37 @@ +--- + +# Load distribution specific variables +- include_vars: "{{ item }}" + with_first_found: + - "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" + - "{{ role_path }}/vars/{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml" + - "{{ role_path }}/vars/{{ ansible_distribution }}.yml" + - "{{ role_path }}/vars/{{ ansible_os_family }}.yml" + tags: clojure + +- name: Set default install mode + set_fact: clojure_install_mode='none' + tags: clojure + +- name: Check if clojure is installed + stat: path=/usr/local/bin/clojure + register: clojure_bin + changed_when: False + tags: clojure + +- name: Set install mode to install + set_fact: clojure_install_mode='install' + when: not clojure_bin.stat.exists + tags: clojure + +- name: Detect installed version + block: + - shell: clojure --version | perl -ne 'm/version\s(\d+(\.\d+)*)/ && print "$1"' + register: clojure_current_version + - set_fact: clojure_current_version={{ clojure_current_version.stdout }} + tags: clojure + +- name: Set install mode to upgrade + set_fact: clojure_install_mode='upgrade' + when: clojure_current_version != clojure_version + tags: clojure diff --git a/roles/clojure/tasks/install.yml b/roles/clojure/tasks/install.yml new file mode 100644 index 0000000..32c2426 --- /dev/null +++ b/roles/clojure/tasks/install.yml @@ -0,0 +1,60 @@ +--- + +- name: Install system dependencies + package: name={{ clojure_packages }} + tags: clojure + +- when: clojure_install_mode != 'none' + block: + + - name: Download clojure + get_url: + url: "{{ clojure_archive_url }}" + dest: /tmp/ + checksum: sha256:{{ clojure_archive_sha256 }} + + - name: Extract clojure archive + unarchive: + src: /tmp/clojure-tools-{{ clojure_version }}.tar.gz + dest: /tmp/ + remote_src: True + + - name: Create lib dir + file: path=/usr/local/lib/clojure/libexec state=directory + + - name: Install clojure + copy: src=/tmp/clojure-tools/{{ item.src }} dest={{ item.dest }} mode={{ (item.dest is search('/bin/?')) | ternary(755, omit) }} remote_src=True + loop: + - src: deps.edn + dest: /usr/local/lib/clojure/ + - src: example-deps.edn + dest: /use/local/lib/clojure/ + - src: tools.edn + dest: /usr/local/lib/clojure/ + - src: exec.jar + dest: /usr/local/lib/clojure/libexec/ + - src: clojure-tools-{{ clojure_version }}.jar + dest: /usr/local/lib/clojure/libexec/ + - src: clojure + dest: /usr/local/bin/ + - src: clj + dest: /usr/local/bin/ + - src: clojure.1 + dest: /usr/local/share/man/man1/ + - src: clj.1 + dest: /usr/local/share/man/man1/ + + - name: Set libdir + replace: + path: /usr/local/bin/clojure + regexp: PREFIX + replace: /usr/local/lib/clojure + + - name: Set bindir + replace: + path: /usr/local/bin/clj + regexp: BINDIR + replace: /usr/local/bin + + tags: clojure + diff --git a/roles/clojure/tasks/main.yml b/roles/clojure/tasks/main.yml new file mode 100644 index 0000000..fcd5af4 --- /dev/null +++ b/roles/clojure/tasks/main.yml @@ -0,0 +1,5 @@ +--- + +- include: facts.yml +- include: install.yml +- include: cleanup.yml diff --git a/roles/clojure/vars/RedHat-7.yml b/roles/clojure/vars/RedHat-7.yml new file mode 100644 index 0000000..46c77fc --- /dev/null +++ b/roles/clojure/vars/RedHat-7.yml @@ -0,0 +1,4 @@ +--- + +clojure_packages: + - java-11-openjdk-headless diff --git a/roles/clojure/vars/RedHat-8.yml b/roles/clojure/vars/RedHat-8.yml new file mode 100644 index 0000000..807c401 --- /dev/null +++ b/roles/clojure/vars/RedHat-8.yml @@ -0,0 +1,4 @@ +--- + +clojure_packages: + - java-17-openjdk-headless