54 lines
1.4 KiB
YAML
54 lines
1.4 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 && 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 -s {{ lego_base_url }}/releases/latest | sed 's|.*tag/v\(.*\)".*|\1|'
|
|
register: lego_ver
|
|
changed_when: false
|
|
check_mode: no
|
|
|
|
- name: Make lego temporary directory
|
|
file:
|
|
path: /tmp/lego_install
|
|
state: directory
|
|
|
|
- name: Download lego
|
|
block:
|
|
- 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 )
|