# code: language=ansible - name: Get latest release of technitium from GitHub API ansible.builtin.uri: url: https://api.github.com/repos/TechnitiumSoftware/DnsServer/releases/latest register: technitium_version_response - name: Parse version from GitHub API response ansible.builtin.set_fact: technitium_version: "{{ technitium_version_response.json.tag_name }}" technitium_version_numeric: "{{ technitium_version_response.json.tag_name | regex_replace('^v', '') }}" - name: Debug technitium version ansible.builtin.debug: msg: | Latest Technitium release version is {{ technitium_version }} ({{ technitium_version_numeric }}) - name: Get release hash ansible.builtin.uri: return_content: true url: https://download.technitium.com/dns/archive/{{ technitium_version_numeric }}/DnsServerPortable.tar.gz.sha256 register: technitium_hash_response - name: Debug release hash ansible.builtin.debug: var: technitium_hash_response.content - name: Download release ansible.builtin.get_url: checksum: "sha256:{{ technitium_hash_response.content }}" decompress: true dest: /tmp/technitium_{{ technitium_version }}.tar mode: '0644' url: https://download.technitium.com/dns/archive/{{ technitium_version_numeric }}/DnsServerPortable.tar.gz - name: Ensure target directory exists ansible.builtin.file: path: /opt/technitium/{{ technitium_version }} group: root mode: '0755' owner: root state: directory - name: Extract release ansible.builtin.unarchive: dest: /opt/technitium/{{ technitium_version }} group: root mode: '0755' owner: root remote_src: true src: /tmp/technitium_{{ technitium_version }}.tar - name: Create symlink to latest release ansible.builtin.file: path: /opt/technitium/latest src: /opt/technitium/{{ technitium_version }} state: link