diff --git a/README.md b/README.md index 28c092bcf55a581d422e7ab40ac50d57d5205471..08867fc1800b29fa69a45784de7fcf4027d264ae 100644 --- a/README.md +++ b/README.md @@ -8,56 +8,6 @@ This role can also optionally install the last version of `docker-compose` versi See the [defaults/main.yml](defaults/main.yml) for the default settings and [vars/main.yml](vars/main.yml) for the `gpg` and `apt` variables. -<table> - <thead> - <tr> - <th>Variable name</th> - <th>Default value</th> - <th>Comment</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>docker</code></td> - <td><code>true</code></td> - <td>Set to <code>false</code> for the tasks in this role to be skipped</td> - </tr> - <tr> - <td><code>docker_compose_v1</code></td> - <td>UNDEFINED</td> - <td>Set to <code>false</code> for Docker Composer version 1 to be removed and set to <code>true</code> for <code>docker-compose</code> version 1 and <code>docker-compose-switch</code> to be installed</td> - </tr> - <tr> - <td><code>docker_compose_version_v1</code></td> - <td><code>1.29.2</code></td> - <td>The version number of <code>docker-compose</code> version 1 to be installed when <code>docker_compose_v1</code> is defined and <code>true</code></td> - </tr> - <tr> - <td><code>docker_daemon</code></td> - <td> -<pre> - storage-driver: overlay2 - log-driver: syslog -</pre> - </td> - <td>Docker daemon configuration, YAML that will converted to JSON and written to <code>/etc/docker/daemon.json</code></td> - </tr> - <tr> - <td><code>docker_pkg</code></td> - <td> -<pre> - - containerd.io - - docker-ce - - docker-ce-cli - - docker-ce-rootless-extras - - docker-compose-plugin -</pre> - </td> - <td>Packages to be installed from the Docker apt repo</td> - </tr> - </tbody> -</table> - See the [documentation for the Docker daemon config file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) for all the options available and convert these to YAML for use by this role, for example: ```yml diff --git a/tasks/apt.yml b/tasks/apt.yml index 6749bea63947089f97bc03d6360b146167a5daa5..cb5b8a4488233e238980445c611598b585ffd817 100644 --- a/tasks/apt.yml +++ b/tasks/apt.yml @@ -86,36 +86,45 @@ path: /etc/apt/keyrings/docker.gpg register: docker_gpg_file - - name: Docker gpg key check command - ansible.builtin.command: > - gpg --with-colons - {% if ansible_local.gpg.version is version('2.2.12', '<') %} - --with-fingerprint --with-subkey-fingerprint - {% else %} - --show-keys - {% endif %} - /etc/apt/keyrings/docker.gpg + - name: Check GPG keys + block: + + - name: Docker gpg key check command + ansible.builtin.command: > + gpg --with-colons + {% if ansible_local.gpg.version is version('2.2.12', '<') %} + --with-fingerprint --with-subkey-fingerprint + {% else %} + --show-keys + {% endif %} + /etc/apt/keyrings/docker.gpg + check_mode: false + changed_when: false + register: docker_gpg + + - name: Set a fact for the GPG fingerprints + ansible.builtin.set_fact: + docker_gpg_fingerprints_found: "{{ docker_gpg.stdout | string | community.general.jc('gpg') | community.general.json_query('[?type==`fpr`].user_id') | list }}" + when: docker_gpg is defined + + - name: Docker gpg key check first fingerprint for GPG versions less that 2.2.12 + ansible.builtin.assert: + that: + - docker_gpg_fingerprints_found[0] == docker_gpg_fingerprints[0] + when: + - docker_gpg_fingerprints_found is defined + - ansible_local.gpg.version is version('2.2.12', '<') + + - name: Docker gpg key check all fingerprints + ansible.builtin.assert: + that: + - docker_gpg_fingerprints_found | difference(docker_gpg_fingerprints) | length == 0 + - docker_gpg_fingerprints | difference(docker_gpg_fingerprints_found) | length == 0 + when: + - docker_gpg_fingerprints_found is defined + - ansible_local.gpg.version is version('2.2.12', '>=') + when: docker_gpg_file.stat.exists | bool - check_mode: false - changed_when: false - register: docker_gpg - - - name: Set a fact for the GPG fingerprints - ansible.builtin.set_fact: - docker_gpg_fingerprints_found: "{{ docker_gpg.stdout | community.general.jc('gpg') | community.general.json_query('[?type==`fpr`].user_id') | list }}" - - - name: Docker gpg key check first fingerprint for GPG versions less that 2.2.12 - ansible.builtin.assert: - that: - - docker_gpg_fingerprints_found[0] == docker_gpg_fingerprints[0] - when: ansible_local.gpg.version is version('2.2.12', '<') - - - name: Docker gpg key check all fingerprints - ansible.builtin.assert: - that: - - docker_gpg_fingerprints_found | difference(docker_gpg_fingerprints) | length == 0 - - docker_gpg_fingerprints | difference(docker_gpg_fingerprints_found) | length == 0 - when: ansible_local.gpg.version is version('2.2.12', '>=') when: docker_asc_file.stat.exists | bool diff --git a/tasks/install.yml b/tasks/install.yml index bf5646dbcaba5a2eaea457139126274c40958474..b28c9e6b772f646e1ed63fe4f43c6ad5049a4e95 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -44,11 +44,17 @@ state: absent notify: Restart docker + - name: Check that /etc/apt/sources.list.d/docker.sources is present + ansible.builtin.stat: + path: /etc/apt/sources.list.d/docker.sources + register: docker_apt_sources + - name: Docker packages present ansible.builtin.apt: pkg: "{{ docker_pkg }}" state: present update_cache: true + when: docker_apt_sources.stat.exists | bool notify: Restart docker - name: Directory for Docker config present @@ -76,6 +82,7 @@ name: docker enabled: true state: started + when: docker_apt_sources.stat.exists | bool tags: - docker