ansible/roles/go/tasks/main.yaml

64 lines
1.7 KiB
YAML

---
- 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