diff options
author | clyhtsuriva <aimeric@adjutor.xyz> | 2025-03-07 21:02:34 +0100 |
---|---|---|
committer | clyhtsuriva <aimeric@adjutor.xyz> | 2025-03-07 21:02:34 +0100 |
commit | 29faea7843ffa00ebd1b9618ac57e3f949775caf (patch) | |
tree | 4013cabb32529d3a1884e8a2a27f6ea28e549d32 | |
parent | 885aa73ca70a9fc5b8f3b77b5cf4476554d1415a (diff) |
ansible: Add tasks to clone docker subfolder in docker role
-rw-r--r-- | ansible/roles/docker/tasks/clone_docker_subfolder.yml | 43 | ||||
-rw-r--r-- | ansible/roles/docker/tasks/install_docker.yml | 44 | ||||
-rw-r--r-- | ansible/roles/docker/tasks/main.yml | 45 |
3 files changed, 91 insertions, 41 deletions
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 ... |