diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4b9a0afc07f995393df6d38becca4df547f3b1af..2e5e558e7931e1a372ae450e9e1cd9837f3369f4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,7 +11,7 @@ repos: # https://github.com/adrienverge/yamllint/tags - repo: https://github.com/adrienverge/yamllint.git - rev: v1.33.0 + rev: v1.34.0 hooks: - id: yamllint name: YAML Lint @@ -34,7 +34,7 @@ repos: - README.md # https://github.com/ansible/ansible-lint/releases - repo: https://github.com/ansible/ansible-lint.git - rev: v6.22.2 + rev: v24.2.0 hooks: - id: ansible-lint name: Ansible Lint diff --git a/defaults/main.yml b/defaults/main.yml index 33d3886668eed35971e9a505a305ee11f8d0e709..577a367eabc149a96691a53993831d708e26f8c0 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -9,7 +9,7 @@ # You should have received a copy of the GNU General Public License along with the Webarchitects Docker Ansible role. If not, see <https://www.gnu.org/licenses/>. --- docker: false -# docker_compose_v1: false +docker_compose_v1: false docker_compose_version_v1: "1.29.2" docker_daemon: storage-driver: overlay2 @@ -21,4 +21,5 @@ docker_pkg: - docker-ce-rootless-extras - docker-compose-plugin # - docker-scan-plugin +docker_verify: true ... diff --git a/handlers/main.yml b/handlers/main.yml index 94bad47e2e7eec6b81e5a3e402cbfc55370b0f18..7f8ee52cbff6e9a3c9c1efe8a0117d39bd1349a5 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -13,4 +13,6 @@ name: docker state: restarted listen: Restart docker + tags: + - docker ... diff --git a/meta/argument_specs.yml b/meta/argument_specs.yml index 2b78e224d00fbfae6ff2d4d2dbcc1b4b0a4e3652..c2dd7ba2c20591ad4ba06ae9c003b980507ca823 100644 --- a/meta/argument_specs.yml +++ b/meta/argument_specs.yml @@ -21,17 +21,38 @@ argument_specs: docker_daemon: type: dict required: true - description: Docker daemon configuration, YAML that will converted to JSON and written to `/etc/docker/daemon.json`. + description: Docker daemon configuration, YAML that will converted to JSON and written to /etc/docker/daemon.json. docker_compose_v1: type: bool required: false - description: Set to `false` for Docker Composer version 1 to be removed and set to `true` for `docker-compose` version 1 and `docker-compose-switch` to be installed. + description: Set to false for Docker Composer version 1 to be removed and set to true for docker-compose version 1 and docker-compose-switch to be installed. docker_compose_version_v1: type: str required: true - description: The version number of `docker-compose` version 1 to be installed when `docker_compose_v1` is defined and `true`. + description: The version number of docker-compose version 1 to be installed when docker_compose_v1 is defined and true. + docker_gpg_checksum: + type: str + required: true + description: The SHA256 checksum of the Docker GPG public key. + docker_gpg_fingerprints: + type: list + elements: str + required: true + description: A list of the Docker GPG public fingerprints. + docker_gpg_url: + type: str + required: true + description: URL for the Docker apt repo GPG public key. docker_pkg: type: list required: true description: Packages to be installed from the Docker apt repo. + docker_repo_pkg: + type: list + elements: str + description: A list of packages available from the Docker repo for apt pinning. + docker_verify: + type: bool + required: true + description: Check all variables that start with docker_ against the argument spec. ... diff --git a/tasks/apt.yml b/tasks/apt.yml index 5edcf1426eb52dceab44cee569064f77ae203d42..6749bea63947089f97bc03d6360b146167a5daa5 100644 --- a/tasks/apt.yml +++ b/tasks/apt.yml @@ -44,7 +44,7 @@ ansible.builtin.file: path: /etc/apt/keyrings state: directory - mode: 0755 + mode: "0755" owner: root group: root @@ -53,7 +53,7 @@ url: "{{ docker_gpg_url }}" checksum: "{{ docker_gpg_checksum }}" dest: /root/docker.asc - mode: 0644 + mode: "0644" owner: root group: root register: docker_tmp_asc_file @@ -123,7 +123,7 @@ ansible.builtin.template: src: docker.sources.j2 dest: /etc/apt/sources.list.d/docker.sources - mode: 0644 + mode: "0644" owner: root group: root register: docker_sources @@ -132,7 +132,7 @@ ansible.builtin.template: src: docker.pref.j2 dest: /etc/apt/preferences.d/docker.pref - mode: 0644 + mode: "0644" owner: root group: root register: docker_preferences diff --git a/tasks/compose_v1.yml b/tasks/compose_v1.yml index ccafdeaf38a83f91ea9bccee50baaa8665c20fdf..3979c5238edc55a850a4ccb5977c481673fc8cc9 100644 --- a/tasks/compose_v1.yml +++ b/tasks/compose_v1.yml @@ -101,7 +101,7 @@ dest: "{{ docker_compose_v1_download_dir.path }}/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}.sha256" owner: root group: root - mode: 0644 + mode: "0644" - name: Docker Compose Version 1 base64 encoded version sha256 checksum slurped ansible.builtin.slurp: @@ -123,7 +123,7 @@ force: true owner: root group: root - mode: 0755 + mode: "0755" checksum: "{{ docker_compose_v1_sha256 }}" - name: Check docker-compose version 1 @@ -140,7 +140,7 @@ force: true owner: root group: root - mode: 0644 + mode: "0644" when: - not ansible_check_mode | bool @@ -175,7 +175,7 @@ force: true owner: root group: root - mode: 0755 + mode: "0755" - name: Check docker-compose alternatives ansible.builtin.command: update-alternatives --display docker-compose diff --git a/tasks/install.yml b/tasks/install.yml index 27b4253febe1ec78c95568e1bd89958ca404bbed..bf5646dbcaba5a2eaea457139126274c40958474 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -42,12 +42,14 @@ autoclean: true autoremove: true state: absent + notify: Restart docker - name: Docker packages present ansible.builtin.apt: pkg: "{{ docker_pkg }}" state: present update_cache: true + notify: Restart docker - name: Directory for Docker config present ansible.builtin.file: @@ -55,16 +57,18 @@ state: directory owner: root group: root - mode: 0755 + mode: "0755" - - name: Docker configuration present + - name: Docker daemon configuration present ansible.builtin.template: src: templates/daemon.json.j2 dest: /etc/docker/daemon.json owner: root group: root - mode: 0644 - when: ( docker_nameservers is defined ) and ( docker_nameservers != [] ) + mode: "0644" + when: + - docker_daemon is defined + - docker_daemon | length > 0 notify: Restart docker - name: Docker started diff --git a/vars/main.yml b/vars/main.yml index 672266dd726c71f8f73608ebb9eae94d05e4296b..5615637f4da86e36f73ad5f0691709bc1674b24a 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -8,6 +8,10 @@ # # You should have received a copy of the GNU General Public License along with the Webarchitects Docker Ansible role. If not, see <https://www.gnu.org/licenses/>. --- +# https://docs.ansible.com/ansible/latest/playbook_guide/complex_data_manipulation.html +dockervarnames: "{{ q('varnames', '^docker_') | sort }}" +dockerhostvars: "{{ dict(dockervarnames | list | zip(q('vars', *dockervarnames))) }}" + # ASCII armored GPG public key URL linked from # https://docs.docker.com/engine/install/debian/ docker_gpg_url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" @@ -29,6 +33,7 @@ docker_gpg_fingerprints: # grep Package /var/lib/apt/lists/download.docker.com_*_Packages | sed 's/^Package: //' | uniq | sort | sed 's/^/ - /' docker_repo_pkg: - containerd.io + - docker-buildx-plugin - docker-ce - docker-ce-cli - docker-ce-rootless-extras