From b22c86758eaaeb54128144e5aa7d6503a7af8d4f Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 21 Jan 2024 22:05:58 +0100
Subject: [PATCH] :truck: Migrate docker_host role to external project

We used a similar local role here, in the Freifunk Magdeburg project,
and in personal playbooks.  That was moved to an external project,
unified, and reworked, so the external role can act as replacement for
the distributed, redundant copies.

Link: https://github.com/netz39/ansible-role-host-docker
---
 group-docker_host.yml                       |  2 +-
 host-krypton.yml                            |  2 +-
 host-pottwal.yml                            |  2 +-
 host-radon.yml                              |  2 +-
 host-tau.yml                                |  2 +-
 host-unicorn.yml                            |  2 +-
 host-wittgenstein.yml                       |  2 +-
 requirements.yml                            |  3 +
 roles/docker_setup/defaults/main.yml        |  5 --
 roles/docker_setup/handlers/main.yml        |  6 --
 roles/docker_setup/tasks/main.yml           | 91 ---------------------
 roles/docker_setup/templates/daemon.json.j2 |  9 --
 roles/docker_setup/templates/docker.list.j2 |  2 -
 13 files changed, 10 insertions(+), 120 deletions(-)
 delete mode 100644 roles/docker_setup/defaults/main.yml
 delete mode 100644 roles/docker_setup/handlers/main.yml
 delete mode 100644 roles/docker_setup/tasks/main.yml
 delete mode 100644 roles/docker_setup/templates/daemon.json.j2
 delete mode 100644 roles/docker_setup/templates/docker.list.j2

diff --git a/group-docker_host.yml b/group-docker_host.yml
index 15c2ed9..08cfb2c 100644
--- a/group-docker_host.yml
+++ b/group-docker_host.yml
@@ -3,7 +3,7 @@
   become: true
 
   roles:
-    - role: docker_setup
+    - role: netz39.host_docker
 
 - hosts: docker_host:&location_space
   become: true
diff --git a/host-krypton.yml b/host-krypton.yml
index 2623afa..e9119ca 100644
--- a/host-krypton.yml
+++ b/host-krypton.yml
@@ -19,7 +19,7 @@
 
 
   roles:
-    # role 'docker_setup' applied through group 'docker_host'
+    # role 'netz39.host_docker' applied through group 'docker_host'
     - role: apache
     - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: 24367dfa.dehydrated
diff --git a/host-pottwal.yml b/host-pottwal.yml
index 9df71c4..ed32054 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -3,7 +3,7 @@
   become: true
 
   roles:
-    # role 'docker_setup' applied through group 'docker_host'
+    # role 'netz39.host_docker' applied through group 'docker_host'
     - role: apache
     - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: 24367dfa.dehydrated
diff --git a/host-radon.yml b/host-radon.yml
index f82edc9..93916ef 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -21,7 +21,7 @@
     brotherql_host_port: 9004
 
   roles:
-    # role 'docker_setup' applied through group 'docker_host'
+    # role 'netz39.host_docker' applied through group 'docker_host'
     - role: apache
     - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: 24367dfa.dehydrated
diff --git a/host-tau.yml b/host-tau.yml
index 665f926..ee5e2a4 100644
--- a/host-tau.yml
+++ b/host-tau.yml
@@ -19,7 +19,7 @@
     discord_invite_domain: discord.netz39.de
 
   roles:
-    # role 'docker_setup' applied through group 'docker_host'
+    # role 'netz39.host_docker' applied through group 'docker_host'
     - role: apache
     - role: penguineer.dehydrated_cron
 
diff --git a/host-unicorn.yml b/host-unicorn.yml
index 2ccca3a..a6fe8d5 100644
--- a/host-unicorn.yml
+++ b/host-unicorn.yml
@@ -7,7 +7,7 @@
     data_dir: "/srv/data"
 
   roles:
-    # role 'docker_setup' applied through group 'docker_host'
+    # role 'netz39.host_docker' applied through group 'docker_host'
 
   tasks:
     - name: Setup the docker container for unifi-controller
diff --git a/host-wittgenstein.yml b/host-wittgenstein.yml
index c7a6869..5557893 100644
--- a/host-wittgenstein.yml
+++ b/host-wittgenstein.yml
@@ -3,7 +3,7 @@
   become: true
 
   roles:
-    - role: docker_setup
+    - role: netz39.host_docker
       vars:
         docker_data_root: "/srv/docker"
     - role: apache
diff --git a/requirements.yml b/requirements.yml
index 975ae64..65bdec0 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -16,6 +16,9 @@ roles:
     version: v1.1.0
   - src: lespocky.telegraf_docker_in_docker
     version: v0.2.1
+  - name: netz39.host_docker
+    src: git+https://github.com/netz39/ansible-role-host-docker.git
+    version: v0.3.0
 
 collections:
   - name: community.grafana
diff --git a/roles/docker_setup/defaults/main.yml b/roles/docker_setup/defaults/main.yml
deleted file mode 100644
index f1d15e3..0000000
--- a/roles/docker_setup/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-docker_compose_version: "1.25.4"
-docker_compose_path: /usr/local/bin/docker-compose
-docker_data_root: "/var/lib/docker"
-docker_storage_driver: "overlay2"
diff --git a/roles/docker_setup/handlers/main.yml b/roles/docker_setup/handlers/main.yml
deleted file mode 100644
index 4e8c5a0..0000000
--- a/roles/docker_setup/handlers/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: restart docker
-  service:
-    name: docker
-    state: restarted
-    enabled: yes
diff --git a/roles/docker_setup/tasks/main.yml b/roles/docker_setup/tasks/main.yml
deleted file mode 100644
index 5a42436..0000000
--- a/roles/docker_setup/tasks/main.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is a mash-up of:
-#   https://github.com/geerlingguy/ansible-role-docker/blob/master/tasks/docker-compose.yml
-#   https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-debian-9
-#   and our own stuff …
----
-- name: Gather package facts
-  package_facts:
-    manager: "auto"
-
-- name: Exit if docker.io is installed
-  fail:
-    msg: "Please remove docker.io (Debian vanilla docker package) first!"
-  when: "'docker.io' in ansible_facts.packages"
-
-- name: Install Docker APT deps
-  package:
-    name: "{{ packages }}"
-    state: present
-  vars:
-    packages:
-      - apt-transport-https
-      - ca-certificates
-      - gnupg2
-      - software-properties-common
-
-- name: add Docker apt-key
-  apt_key:
-    url: https://download.docker.com/linux/debian/gpg
-    state: present
-
-- name: add Docker's APT repository
-  ansible.builtin.template:
-    src: templates/docker.list.j2
-    dest: /etc/apt/sources.list.d/docker.list
-  register: apt_repo
-
-- name: Update package cache  # noqa: no-handler
-  ansible.builtin.apt:
-    update_cache: true
-  when: apt_repo.changed
-
-- name: install Docker
-  package:
-    name: "{{ packages }}"
-    state: present
-  vars:
-    packages:
-      - docker-ce
-      - python3-docker
-
-- name: Set docker configuration
-  template:
-    src: templates/daemon.json.j2
-    dest: /etc/docker/daemon.json
-    mode: "0644"
-  notify: restart docker
-
-- name: Check current docker-compose version.
-  command: docker-compose --version
-  register: docker_compose_current_version
-  changed_when: false
-  failed_when: false
-
-- name: Delete existing docker-compose version if it's different.
-  file:
-    path: "{{ docker_compose_path }}"
-    state: absent
-  when: >
-    docker_compose_current_version.stdout is defined
-    and docker_compose_version not in docker_compose_current_version.stdout
-
-- name: Install Docker Compose (if configured).
-  get_url:
-    url: https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64
-    dest: "{{ docker_compose_path }}"
-    mode: "0755"
-
-- name: Place admin users in docker group
-  user:
-    name: "{{ item.logname }}"
-    groups: [docker]
-    append: yes
-  when: item.docker
-  with_items: "{{ users }}"
-
-- name: Ensure that docker image prune cron job is present.
-  ansible.builtin.cron:
-    name: docker image prune
-    special_time: weekly
-    user: root
-    job: "docker image prune --all --force"
diff --git a/roles/docker_setup/templates/daemon.json.j2 b/roles/docker_setup/templates/daemon.json.j2
deleted file mode 100644
index ee43392..0000000
--- a/roles/docker_setup/templates/daemon.json.j2
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "exec-opts": ["native.cgroupdriver=systemd"],
-    "log-driver": "json-file",
-        "log-opts": {
-            "max-size": "100m"
-        },
-    "data-root": "{{ docker_data_root }}",
-    "storage-driver": "{{ docker_storage_driver }}"
-}
diff --git a/roles/docker_setup/templates/docker.list.j2 b/roles/docker_setup/templates/docker.list.j2
deleted file mode 100644
index 7795847..0000000
--- a/roles/docker_setup/templates/docker.list.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-deb https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable
-