From 5c8af619d3199726c8259ec68531a563aedacc81 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Sat, 18 Jul 2026 00:08:02 +0200 Subject: [PATCH] Add docker role and playbook for Docker installation --- playbooks/docker.yml | 18 ++++++++++++ roles/docker/defaults/main.yml | 8 ++++++ roles/docker/handlers/main.yml | 17 +++++++++++ roles/docker/tasks/install-docker.yml | 40 ++++++++++++++++++++++++++ roles/docker/tasks/main.yml | 2 ++ roles/docker/templates/sources.list.j2 | 7 +++++ 6 files changed, 92 insertions(+) create mode 100644 playbooks/docker.yml create mode 100644 roles/docker/defaults/main.yml create mode 100644 roles/docker/handlers/main.yml create mode 100644 roles/docker/tasks/install-docker.yml create mode 100644 roles/docker/tasks/main.yml create mode 100644 roles/docker/templates/sources.list.j2 diff --git a/playbooks/docker.yml b/playbooks/docker.yml new file mode 100644 index 0000000..9b567a9 --- /dev/null +++ b/playbooks/docker.yml @@ -0,0 +1,18 @@ +- hosts: all + user: admin + become: true + tasks: + - name: Verify if system is Debian + debug: + msg: "This playbook is running on a Debian system." + when: ansible_facts['os_family'] == "Debian" + + - name: Stop playbook if system is not Debian + fail: + msg: "This playbook only supports Debian." + when: ansible_facts['os_family'] != "Debian" + + - name: Include Docker setup role + import_role: + name: docker + when: ansible_facts['os_family'] == "Debian" \ No newline at end of file diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml new file mode 100644 index 0000000..f0493f3 --- /dev/null +++ b/roles/docker/defaults/main.yml @@ -0,0 +1,8 @@ +docker_mirror: https://download.docker.com/linux/debian +os_version_codename: "{{ ansible_lsb.codename }}" +docker_packages: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin \ No newline at end of file diff --git a/roles/docker/handlers/main.yml b/roles/docker/handlers/main.yml new file mode 100644 index 0000000..d093e27 --- /dev/null +++ b/roles/docker/handlers/main.yml @@ -0,0 +1,17 @@ +--- +- name: Restart Docker + ansible.builtin.systemd: + name: docker + state: restarted + daemon_reload: yes + +- name: Reload Docker + ansible.builtin.systemd: + name: docker + state: reloaded + +- name: Start Docker + ansible.builtin.systemd: + name: docker + state: started + enabled: yes diff --git a/roles/docker/tasks/install-docker.yml b/roles/docker/tasks/install-docker.yml new file mode 100644 index 0000000..e725cc4 --- /dev/null +++ b/roles/docker/tasks/install-docker.yml @@ -0,0 +1,40 @@ +--- +- name: Update apt cache + ansible.builtin.apt: + update_cache: yes + cache_valid_time: 3600 + +- name: Install required packages + ansible.builtin.apt: + name: + - ca-certificates + - curl + state: present + +- name: Create keyrings directory + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: '0755' + +- name: Download Docker GPG key + ansible.builtin.get_url: + url: "{{ docker_mirror }}/gpg" + dest: /etc/apt/keyrings/docker.asc + mode: '0644' + +- name: Add Docker repository + ansible.builtin.template: + src: sources.list.j2 + dest: /etc/apt/sources.list.d/docker.sources + mode: '0644' + +- name: Update apt cache after adding repository + ansible.builtin.apt: + update_cache: yes + +- name: Install Docker packages + ansible.builtin.apt: + name: "{{ docker_packages }}" + state: present + notify: Start Docker \ No newline at end of file diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml new file mode 100644 index 0000000..14303d2 --- /dev/null +++ b/roles/docker/tasks/main.yml @@ -0,0 +1,2 @@ +- name: Include Docker installation tasks + ansible.builtin.include_tasks: install-docker.yml diff --git a/roles/docker/templates/sources.list.j2 b/roles/docker/templates/sources.list.j2 new file mode 100644 index 0000000..68b1ab4 --- /dev/null +++ b/roles/docker/templates/sources.list.j2 @@ -0,0 +1,7 @@ +# {{ ansible_managed }} +# Package sources for Docker for Codename {{ os_version_codename }}. This file is generated by Ansible using the docker role. +Types: deb +URIs: {{ docker_mirror }} +Suites: {{ os_version_codename }} +Components: stable +Signed-By: /etc/apt/keyrings/docker.asc \ No newline at end of file