diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..833f690 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,12 @@ +--- +kind: pipeline +type: kubernetes +name: default + +steps: + - name: lint + image: quay.io/adrilinux/ansible:latest + commands: + - ansible-lint ./ +# - "find . -maxdepth 1 -name '*.yml' | sort | grep -v '.drone.yml' | xargs ansible-playbook --syntax-check --list-tasks" +# - "find . -maxdepth 1 -name '*.yml' | sort | grep -v '.drone.yml' | xargs ansible-lint" diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..e520223 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,4 @@ +--- +lego_base_url: "https://github.com/go-acme/lego" +lego_dl_url: "{{ lego_base_url }}/releases/download" +lego_file: "lego_v{{ lego_ver.stdout }}_{{ ansible_system | lower }}_{{ ansible_machine | regex_replace('x86_64','amd64') }}.tar.gz" \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..0b96a3a --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,16 @@ +galaxy_info: + author: Adrien Reslinger + description: Install Lego + company: Personnal + min_ansible_version: 2.9 + galaxy_tags: [] + license: GPL2 + platforms: + - name: CentOS + version: + - 7 + - 8 + - name: RedHat + version: + - 7 + - 8 diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..b0f36f4 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,54 @@ +--- +- 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 )