[PATCH 4/5] install-go-deps: Add generic Go toolchain role

Luis Chamberlain <[email protected]> Fri, 17 Oct 2025 19:32:16 -0700
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
Add reusable install-go-deps role that provides consistent Go toolchain
installation across all distributions:

- Debian/Ubuntu: golang-go
- Fedora/RHEL: golang
- SUSE: go

This modular role can be included by any workflow or role needing Go
support, following kdevops patterns for dependency management. Similar
to install-rust-deps, this provides a generic building block for
workflows that need Go tooling.

Generated-by: Claude AI
Signed-off-by: Luis Chamberlain <[email protected]>
---
 .../tasks/install-deps/debian/main.yml        | 10 +++++++++
 .../tasks/install-deps/fedora/main.yml        |  9 ++++++++
 .../tasks/install-deps/main.yml               | 21 +++++++++++++++++++
 .../tasks/install-deps/redhat/main.yml        |  9 ++++++++
 .../tasks/install-deps/suse/main.yml          |  9 ++++++++
 .../roles/install-go-deps/tasks/main.yml      | 15 +++++++++++++
 6 files changed, 73 insertions(+)
 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml
 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml
 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/main.yml
 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml
 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml
 create mode 100644 playbooks/roles/install-go-deps/tasks/main.yml

diff --git a/playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml b/playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml
new file mode 100644
index 00000000..79d21564
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml
@@ -0,0 +1,10 @@
+---
+- name: Install Go build dependencies
+  become: true
+  become_method: sudo
+  ansible.builtin.apt:
+    name:
+      - golang-go
+    state: present
+    update_cache: false
+  tags: ["go", "deps"]
diff --git a/playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml b/playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml
new file mode 100644
index 00000000..6926ce2f
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml
@@ -0,0 +1,9 @@
+---
+- name: Install Go build dependencies
+  become: true
+  become_method: sudo
+  ansible.builtin.dnf:
+    name:
+      - golang
+    state: present
+  tags: ["go", "deps"]
diff --git a/playbooks/roles/install-go-deps/tasks/install-deps/main.yml b/playbooks/roles/install-go-deps/tasks/install-deps/main.yml
new file mode 100644
index 00000000..23cda58e
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/install-deps/main.yml
@@ -0,0 +1,21 @@
+---
+- name: Import optional distribution specific variables
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
+  with_first_found:
+    - files:
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
+      skip: true
+  tags: vars
+
+- name: Distribution specific setup
+  ansible.builtin.import_tasks: debian/main.yml
+  when: ansible_facts['os_family']|lower == 'debian'
+- ansible.builtin.import_tasks: suse/main.yml
+  when: ansible_facts['os_family']|lower == 'suse'
+- ansible.builtin.import_tasks: redhat/main.yml
+  when:
+    - ansible_facts['os_family']|lower == 'redhat'
+    - ansible_facts['distribution']|lower != "fedora"
+- ansible.builtin.import_tasks: fedora/main.yml
+  when: ansible_facts['distribution']|lower == "fedora"
diff --git a/playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml b/playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml
new file mode 100644
index 00000000..6926ce2f
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml
@@ -0,0 +1,9 @@
+---
+- name: Install Go build dependencies
+  become: true
+  become_method: sudo
+  ansible.builtin.dnf:
+    name:
+      - golang
+    state: present
+  tags: ["go", "deps"]
diff --git a/playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml b/playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml
new file mode 100644
index 00000000..3898b572
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml
@@ -0,0 +1,9 @@
+---
+- name: Install Go build dependencies
+  become: true
+  become_method: sudo
+  community.general.zypper:
+    name:
+      - go
+    state: present
+  tags: ["go", "deps"]
diff --git a/playbooks/roles/install-go-deps/tasks/main.yml b/playbooks/roles/install-go-deps/tasks/main.yml
new file mode 100644
index 00000000..b248ccf8
--- /dev/null
+++ b/playbooks/roles/install-go-deps/tasks/main.yml
@@ -0,0 +1,15 @@
+---
+- name: Import optional extra_args file
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
+  with_first_found:
+    - files:
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
+      skip: true
+  tags: vars
+
+# Install Go build dependencies
+- name: Install Go build dependencies
+  ansible.builtin.include_tasks: install-deps/main.yml
-- 
2.51.0