--- - name: go tags: go,go_install block: - name: Remove Debian Go package apt: name: golang autoremove: yes state: absent - name: Install dependencies apt: name: curl state: present - name: Fetch Go latest version shell: "curl --silent --location https://go.dev/doc/devel/release | grep -Eo 'go[0-9]+(\\.[0-9]+)+' | sort -V | uniq | tail -1 | sed s/^go//" args: warn: false changed_when: false register: go_latest_version_shell - name: Format Go latest version variable set_fact: go_latest_version: "{{ go_latest_version_shell.stdout }}" - name: Detect installed Go version shell: "go version | grep -Po '\\d\\.\\d+(\\.\\d+)?' || echo none" register: go_installed_version_shell ignore_errors: true changed_when: false - name: Format Go version variable set_fact: go_installed_version: "{{ go_installed_version_shell.stdout }}" - name: Remove installed go file: state: absent path: /usr/local/go when: go_installed_version != go_latest_version - name: Install Go unarchive: src: https://go.dev/dl/go{{ go_latest_version }}.linux-{{ go_arch }}.tar.gz dest: /usr/local remote_src: yes owner: root group: root when: go_installed_version != go_latest_version - name: Configure Go environment template: src: go.profile dest: /etc/profile.d/go.sh owner: root group: root mode: 0644 - name: Link go binary file: state: link src: /usr/local/go/bin/go dest: /usr/local/bin/go