summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-10-19 23:01:00 +0200
committerAhmed Abdelhalim <[email protected]>2025-10-20 00:39:02 +0200
commitcf400c3e738f9660cc76e9fad82c4654acca2583 (patch)
treeae41e8c24a6b7604f0d3570e58cc2291449f1124
parent54d644bab1ef9cd8663d3366b1b3c94f57f5b945 (diff)
Refactor go role to install 1 version and remove homebrew dependency
-rw-r--r--roles/go/defaults/main.yml2
-rw-r--r--roles/go/meta/argument_specs.yml13
-rw-r--r--roles/go/meta/main.yml1
-rw-r--r--roles/go/tasks/main.yml55
4 files changed, 36 insertions, 35 deletions
diff --git a/roles/go/defaults/main.yml b/roles/go/defaults/main.yml
index 0e0a3176..16cbca2d 100644
--- a/roles/go/defaults/main.yml
+++ b/roles/go/defaults/main.yml
@@ -1,2 +1,2 @@
---
-go_versions: []
+go_version: "1.25.3"
diff --git a/roles/go/meta/argument_specs.yml b/roles/go/meta/argument_specs.yml
index 03ef8608..9943134f 100644
--- a/roles/go/meta/argument_specs.yml
+++ b/roles/go/meta/argument_specs.yml
@@ -1,11 +1,10 @@
---
argument_specs:
main:
- short_description: "Install Go (versions) on Linux distributions"
- description: "Install Go (versions) on Linux distributions"
+ short_description: "Install Go on Linux distributions"
+ description: "Install Go on Linux distributions"
options:
- go_versions:
- type: "list"
- description: "The extra go versions to install (latest is used as version manager)"
- elements: "str"
- default: []
+ go_version:
+ type: "str"
+ description: "Default go version to install"
+ default: "1.25.3"
diff --git a/roles/go/meta/main.yml b/roles/go/meta/main.yml
index 28741fea..7e692148 100644
--- a/roles/go/meta/main.yml
+++ b/roles/go/meta/main.yml
@@ -1,6 +1,5 @@
---
dependencies:
- - role: "homebrew"
- role: "bash"
galaxy_info:
author: "a14m"
diff --git a/roles/go/tasks/main.yml b/roles/go/tasks/main.yml
index 6c4f08c8..69c552bf 100644
--- a/roles/go/tasks/main.yml
+++ b/roles/go/tasks/main.yml
@@ -1,8 +1,31 @@
---
-- name: "Install latest Go via Homebrew"
- community.general.homebrew:
- name: "go"
- state: "present"
+- name: "Check installed go versions"
+ ansible.builtin.command:
+ cmd: "go version"
+ register: go_installed_version
+ changed_when: false
+ failed_when: false
+
+- name: "Install go"
+ when: go_version not in go_installed_version.stdout
+ block:
+ - name: "Set go facts"
+ ansible.builtin.set_fact:
+ go_arch: "{{ 'amd64' if ansible_architecture == 'x86_64' else 'arm64' }}"
+ go_platform: "{{ ansible_system | lower }}"
+
+ - name: "Download Go"
+ ansible.builtin.get_url:
+ url: "https://dl.google.com/go/go{{ go_version }}.{{ go_platform }}-{{ go_arch }}.tar.gz"
+ dest: "/tmp/go.tar.gz"
+ mode: "0644"
+
+ - name: "Unarchive Go"
+ become: true
+ ansible.builtin.unarchive:
+ src: "/tmp/go.tar.gz"
+ dest: "/usr/local"
+ remote_src: true
- name: "Add Go to shell profile"
ansible.builtin.blockinfile:
@@ -13,26 +36,6 @@
marker: "# ==== {mark} ANSIBLE GO CONFIG"
block: |
if command -v go 1>/dev/null 2>&1; then
- export PATH="$HOME/go/bin:$PATH"
- export PATH="$HOME/sdk/*/bin:$PATH"
+ export PATH="$PATH:/usr/local/go/bin"
+ export PATH="$HOME/go/bin:$PATH"
fi
-
-- name: "Install Go version managers"
- ansible.builtin.command:
- cmd: "go install golang.org/dl/go{{ item }}@latest"
- args:
- creates: "{{ ansible_env.HOME }}/go/bin/go{{ item }}"
- environment:
- PATH: "/home/linuxbrew/.linuxbrew/bin:{{ ansible_env.PATH }}"
- loop: "{{ go_versions }}"
- when: go_versions | length > 0
-
-- name: "Download and install Go versions"
- ansible.builtin.command:
- cmd: "{{ ansible_env.HOME }}/go/bin/go{{ item }} download"
- args:
- creates: "{{ ansible_env.HOME }}/sdk/go{{ item }}/bin/go"
- environment:
- PATH: "/home/linuxbrew/.linuxbrew/bin:{{ ansible_env.PATH }}"
- loop: "{{ go_versions }}"
- when: go_versions | length > 0