---
-
  name: "Ensuring old versions of Docker are not installed"
  ansible.builtin.package:
    name:
      - docker
      - docker.io
      - docker-engine
    state: absent

-
  name: "Ensuring dependencies are installed"
  ansible.builtin.apt:
    name:
      - apt-transport-https
      - ca-certificates
    state: present
  when: docker_add_repo | bool

-
  name: "Ensuring additional dependencies are installed (on Ubuntu < 20.04 and any other systems)"
  ansible.builtin.apt:
    name: gnupg2
    state: present
  when: ansible_distribution != 'Ubuntu' or ansible_distribution_version is version('20.04', '<')

-
  name: "Ensuring additional dependencies are installed (on Ubuntu >= 20.04)"
  ansible.builtin.apt:
    name: gnupg
    state: present
  when: ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('20.04', '>=')

-
  name: "Adding Docker apt key"
  ansible.builtin.get_url:
    url: "{{ docker_apt_gpg_key }}"
    dest: /etc/apt/trusted.gpg.d/docker.asc
    mode: '0644'
    force: false
    checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}"
  register: add_repository_key
  ignore_errors: "{{ docker_apt_ignore_key_error }}"
  when: docker_add_repo | bool

-
  name: "Ensuring curl is present (on older systems without SNI)"
  ansible.builtin.package:
    name: curl
    state: present
  when: add_repository_key is failed and docker_add_repo | bool

-
  name: "Adding Docker repository"
  ansible.builtin.apt_repository:
    repo: "{{ docker_apt_repository }}"
    state: present
    filename: "{{ docker_apt_filename }}"
    update_cache: true
  when: docker_add_repo | bool

-
  name: "Ensuring dependencies are installed"
  ansible.builtin.apt:
    name:
      - python3-docker
    state: present