- name: check if golang is installed stat: path: /usr/local/go/bin/go register: golang_installed - name: download and extract golang when: not golang_installed.stat.exists block: - name: get latest golang version shell: | curl -sSL https://golang.org/dl/ | awk -F '"' '/dl\/.*linux-amd64.*tar.gz/{print $(NF-1)}' | awk -F '/' '{print $3}' | head -1 register: latest_golang changed_when: false - name: download golang get_url: url: "https://golang.org/dl/{{ latest_golang.stdout }}" dest: /tmp/golang.tar.gz - name: extract golang to /usr/local unarchive: src: /tmp/golang.tar.gz dest: /usr/local remote_src: yes - name: remove tarball file: path: /tmp/golang.tar.gz state: absent - name: add golang to PATH lineinfile: path: "{{ ansible_env.HOME }}/.bashrc" line: "{{ item }}" create: yes loop: - "GOPATH={{ ansible_env.HOME }}/go" - "PATH=$PATH:/usr/local/go/bin:{{ ansible_env.HOME }}/go:{{ ansible_env.HOME }}/go/bin"