ansible-role-lego/tasks/main.yml

55 lines
1.6 KiB
YAML

---
- name: Install lego
tags:
- lego
block:
- name: Check if lego is already installed
stat:
path: /usr/local/bin/lego
register: lego
check_mode: no
- name: Check local version installed
shell: set -o pipefail && /usr/local/bin/lego --version | sed 's|lego version \([^ ,+]*\).*|\1|'
register: lego_locver
changed_when: false
check_mode: no
when:
- lego.stat.exists
- name: Check online version
# shell: set -o pipefail && curl -si {{ lego_base_url }}/releases/latest | grep -oP location:\ \\K.\* | sed 's|.*/tag/v\(.*\)|\1|'
shell: set -o pipefail && curl -w "%{redirect_url}" -o /dev/null -s {{ lego_base_url }}/releases/latest | sed 's|.*/tag/v\(.*\)|\1|'
register: lego_ver
changed_when: false
check_mode: no
- name: Download lego
block:
- name: Make lego temporary directory
file:
path: /tmp/lego_install
state: directory
- name: Retreive lego archive file and extract it to temporary directory
ansible.builtin.unarchive:
src: "{{ lego_dl_url }}/v{{ lego_ver.stdout }}/{{ lego_file }}"
dest: /tmp/lego_install
remote_src: yes
- name: Install lego binary from temporary directory
ansible.builtin.copy:
src: /tmp/lego_install/lego
dest: /usr/local/bin/lego
owner: root
group: root
mode: u=rwx,g=rx,o=rx
remote_src: yes
- name: Remove lego temporary directory
file:
path: /tmp/lego_install
state: absent
when:
- not lego.stat.exists or ( lego_locver.stdout != lego_ver.stdout )