From 29faea7843ffa00ebd1b9618ac57e3f949775caf Mon Sep 17 00:00:00 2001
From: clyhtsuriva <aimeric@adjutor.xyz>
Date: Fri, 7 Mar 2025 21:02:34 +0100
Subject: ansible: Add tasks to clone docker subfolder in docker role

---
 .../roles/docker/tasks/clone_docker_subfolder.yml  | 43 +++++++++++++++++++++
 ansible/roles/docker/tasks/install_docker.yml      | 44 +++++++++++++++++++++
 ansible/roles/docker/tasks/main.yml                | 45 ++--------------------
 3 files changed, 91 insertions(+), 41 deletions(-)
 create mode 100644 ansible/roles/docker/tasks/clone_docker_subfolder.yml
 create mode 100644 ansible/roles/docker/tasks/install_docker.yml

(limited to 'ansible')

diff --git a/ansible/roles/docker/tasks/clone_docker_subfolder.yml b/ansible/roles/docker/tasks/clone_docker_subfolder.yml
new file mode 100644
index 0000000..772e551
--- /dev/null
+++ b/ansible/roles/docker/tasks/clone_docker_subfolder.yml
@@ -0,0 +1,43 @@
+---
+- name: Ensure Git is installed
+  ansible.builtin.package:
+    name: git
+    state: present
+
+- name: Ensure repository is cloned
+  ansible.builtin.git:
+    # Using the mirror, as git.adjutor.xyz is a dumb http
+    repo: "https://github.com/clyhtsuriva/homelab-iac__mirror.git"
+    dest: "/opt/homelab-iac"
+    version: master
+    depth: 1
+    clone: true
+    update: false
+    bare: false
+
+- name: Check if sparse checkout is already enabled
+  ansible.builtin.command:
+    cmd: git config core.sparseCheckout
+    chdir: "/opt/homelab-iac"
+  register: sparse_checkout_status
+  ignore_errors: true
+  changed_when: false
+
+- name: Enable sparse checkout (cone mode) if not already enabled
+  ansible.builtin.command:
+    cmd: git sparse-checkout init --cone
+    chdir: "/opt/homelab-iac"
+  when: sparse_checkout_status.rc != 0
+
+- name: Check if the sparse checkout directory is already set
+  ansible.builtin.command:
+    cmd: git sparse-checkout list
+    chdir: "/opt/homelab-iac"
+  register: sparse_checkout_list
+  changed_when: false
+
+- name: Set the sparse checkout path if not already set
+  ansible.builtin.command:
+    cmd: git sparse-checkout set docker
+    chdir: "/opt/homelab-iac"
+  when: "'docker' not in sparse_checkout_list.stdout"
diff --git a/ansible/roles/docker/tasks/install_docker.yml b/ansible/roles/docker/tasks/install_docker.yml
new file mode 100644
index 0000000..37d9b4d
--- /dev/null
+++ b/ansible/roles/docker/tasks/install_docker.yml
@@ -0,0 +1,44 @@
+---
+- name: Set Docker repository variables based on OS
+  ansible.builtin.set_fact:
+    docker_repo: "{{ docker_repos[ansible_distribution] }}"
+    docker_gpg_key_url: "{{ docker_gpg_keys[ansible_distribution] }}"
+
+- name: Install required dependencies
+  ansible.builtin.apt:
+    name: "{{ docker_dependencies }}"
+    state: present
+    update_cache: true
+
+- name: Ensure /etc/apt/keyrings directory exists
+  ansible.builtin.file:
+    path: /etc/apt/keyrings
+    state: directory
+    mode: '0755'
+
+- name: Download and add Docker GPG key
+  ansible.builtin.get_url:
+    url: "{{ docker_gpg_key_url }}"
+    dest: /etc/apt/keyrings/docker.asc
+    mode: '0644'
+
+- name: Add Docker repository
+  ansible.builtin.apt_repository:
+    repo: >-
+     deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc]
+      {{ docker_repo }} {{ ansible_distribution_release }} stable
+    state: present
+    filename: docker
+
+- name: Install Docker packages
+  ansible.builtin.apt:
+    name: "{{ docker_packages }}"
+    state: present
+    update_cache: true
+
+- name: Ensure Docker service is started and enabled
+  ansible.builtin.systemd:
+    name: docker
+    state: started
+    enabled: true
+...
diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml
index 37d9b4d..6f14f98 100644
--- a/ansible/roles/docker/tasks/main.yml
+++ b/ansible/roles/docker/tasks/main.yml
@@ -1,44 +1,7 @@
 ---
-- name: Set Docker repository variables based on OS
-  ansible.builtin.set_fact:
-    docker_repo: "{{ docker_repos[ansible_distribution] }}"
-    docker_gpg_key_url: "{{ docker_gpg_keys[ansible_distribution] }}"
+- name: Install Docker
+  ansible.builtin.include_tasks: install_docker.yml
 
-- name: Install required dependencies
-  ansible.builtin.apt:
-    name: "{{ docker_dependencies }}"
-    state: present
-    update_cache: true
-
-- name: Ensure /etc/apt/keyrings directory exists
-  ansible.builtin.file:
-    path: /etc/apt/keyrings
-    state: directory
-    mode: '0755'
-
-- name: Download and add Docker GPG key
-  ansible.builtin.get_url:
-    url: "{{ docker_gpg_key_url }}"
-    dest: /etc/apt/keyrings/docker.asc
-    mode: '0644'
-
-- name: Add Docker repository
-  ansible.builtin.apt_repository:
-    repo: >-
-     deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc]
-      {{ docker_repo }} {{ ansible_distribution_release }} stable
-    state: present
-    filename: docker
-
-- name: Install Docker packages
-  ansible.builtin.apt:
-    name: "{{ docker_packages }}"
-    state: present
-    update_cache: true
-
-- name: Ensure Docker service is started and enabled
-  ansible.builtin.systemd:
-    name: docker
-    state: started
-    enabled: true
+- name: Clone the Docker subfolder
+  ansible.builtin.include_tasks: clone_docker_subfolder.yml
 ...
-- 
cgit v1.2.3