mirror of
https://github.com/geerlingguy/ansible-role-docker.git
synced 2025-03-06 00:16:38 +01:00
101 lines
3.6 KiB
YAML
101 lines
3.6 KiB
YAML
---
|
|
- name: Check if the distribution is Ubuntu 24.04 or later and save it as a fact
|
|
ansible.builtin.set_fact:
|
|
is_ubuntu2404_or_greater: >-
|
|
{{ ansible_distribution == "Ubuntu" and ansible_distribution_version is version('24.04', '>=') }}
|
|
|
|
- name: Ensure apt key is not present in trusted.gpg.d
|
|
ansible.builtin.file:
|
|
path: /etc/apt/trusted.gpg.d/docker.asc
|
|
state: absent
|
|
|
|
- name: Ensure old apt source list files are not present in /etc/apt/sources.list.d
|
|
vars:
|
|
old_apt_source_list_files:
|
|
- /etc/apt/sources.list.d/download_docker_com_linux_{{ docker_apt_ansible_distribution }}.list
|
|
- "{{ is_ubuntu2404_or_greater | ansible.builtin.ternary('/etc/apt/sources.list.d/docker.list', '') }}"
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: absent
|
|
loop: "{{ old_apt_source_list_files | select }}"
|
|
|
|
- name: Ensure the repo referencing the previous trusted.gpg.d key is not present
|
|
apt_repository:
|
|
repo: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/trusted.gpg.d/docker.asc] {{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
|
|
state: absent
|
|
filename: "{{ docker_apt_filename }}"
|
|
update_cache: true
|
|
when: docker_add_repo | bool
|
|
|
|
- # See https://docs.docker.com/engine/install/debian/#uninstall-old-versions
|
|
name: Ensure old versions of Docker are not installed.
|
|
package:
|
|
name: "{{ docker_obsolete_packages }}"
|
|
state: absent
|
|
|
|
- name: Ensure dependencies are installed.
|
|
vars:
|
|
dependencies:
|
|
- apt-transport-https
|
|
- ca-certificates
|
|
- "{{ is_ubuntu2404_or_greater | ansible.builtin.ternary('python3-debian', '') }}"
|
|
apt:
|
|
name: "{{ dependencies | select }}"
|
|
state: present
|
|
when: docker_add_repo | bool
|
|
|
|
- name: Ensure directory exists for /etc/apt/keyrings
|
|
file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Add Docker apt key.
|
|
ansible.builtin.get_url:
|
|
url: "{{ docker_apt_gpg_key }}"
|
|
dest: /etc/apt/keyrings/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: Ensure curl is present (on older systems without SNI).
|
|
package: name=curl state=present
|
|
when: add_repository_key is failed and docker_add_repo | bool
|
|
|
|
- name: Add Docker apt key (alternative for older systems without SNI).
|
|
shell: >
|
|
curl -sSL {{ docker_apt_gpg_key }} | apt-key add -
|
|
when: add_repository_key is failed and docker_add_repo | bool
|
|
|
|
- name: Add Docker repository.
|
|
apt_repository:
|
|
repo: "{{ docker_apt_repository }}"
|
|
state: present
|
|
filename: "{{ docker_apt_filename }}"
|
|
update_cache: true
|
|
when:
|
|
- docker_add_repo | bool
|
|
- ansible_distribution != "Ubuntu" or (ansible_distribution == "Ubuntu" and ansible_distribution_version is version('24.04', '<'))
|
|
|
|
- name: Manage the deb822 format
|
|
when:
|
|
- docker_add_repo | bool
|
|
- is_ubuntu2404_or_greater
|
|
block:
|
|
- name: Add Docker repository with deb822 format.
|
|
ansible.builtin.deb822_repository:
|
|
name: "{{ docker_apt_filename }}"
|
|
types: deb
|
|
uris: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}"
|
|
suites: "{{ ansible_distribution_release }}"
|
|
components: "{{ docker_apt_release_channel }}"
|
|
signed_by: /etc/apt/keyrings/docker.asc
|
|
architectures: "{{ docker_apt_arch }}"
|
|
notify: Update apt cache
|
|
|
|
- name: Ensure handlers are notified immediately to update the apt cache.
|
|
ansible.builtin.meta: flush_handlers
|