--- - ansible.builtin.include_vars: file: go.yml name: _go - name: check go version ansible.builtin.command: cmd: "go version" register: r_go_version ignore_errors: true - name: install/update go when: "'{{ _go.version }}' not in r_go_version.stdout" block: - name: set go arch ansible.builtin.set_fact: arch: "{{ _go.archmap[ansible_architecture] }}" - name: set go archive filename ansible.builtin.set_fact: go_archive: "go{{ _go.version }}.{{ ansible_system | lower }}-{{ arch }}.{{ _go.extmap[ansible_system] }}" tags: - dev - go - debug - name: create temp path ansible.builtin.tempfile: state: directory prefix: go_dl. register: d_go_dl_tmp - name: download go archive become: true ansible.builtin.get_url: dest: "{{ d_go_dl_tmp.path }}/{{ go_archive }}" url: "https://go.dev/dl/{{ go_archive }}" checksum: "{{ _go[_go.version][ansible_system][arch] }}" decompress: false tags: - dev - go - name: ensure go install dir exists become: true ansible.builtin.file: path: "{{ _go.install_path }}" state: directory - name: extract go package ansible.builtin.unarchive: dest: "{{ _go.install_path }}" src: "{{ d_go_dl_tmp.path }}/{{ go_archive }}" remote_src: true when: ansible_system == 'Linux' become: true - name: install go macOS use pkg file ansible.builtin.command: cmd: "installer -pkg {{ d_go_dl_tmp.path }}/{{ go_archive }} -target /" when: ansible_system == 'Darwin' become: true tags: - dev - go