From fbefef43d7d17bc77ba9a0d59dd2f2d04b1c5781 Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Wed, 31 Jan 2024 14:57:02 +0100 Subject: [PATCH] Deprecate devicemapper due to removal in Docker Docker Engine 25.0 drops support for the devicemapper storage driver after a long deprecation period. Since devicemapper is used in some CI jobs, pin docker-ce package to the latest available 24.x release. The master branch will remove devicemapper support in another patch [1]. Add a deprecation notice indicating to the operator that they must install a compatible version of Docker Engine to keep using devicemapper. Note: this backport is amended to set packages via kolla/globals.yml instead of zzz-overrides.yml. This is required for Zed and earlier releases, which still use kolla bootstrap-servers to install Docker. [1] https://review.opendev.org/c/openstack/kayobe/+/906386 Change-Id: I6f62081d71232091e26269d4d7877203236c459d (cherry picked from commit bd16d2931d79d6df86f9e400e5387d924d99df30) --- ansible/docker-devicemapper.yml | 12 ++++++++++++ .../globals.yml.j2 | 4 ++++ .../kayobe-overcloud-host-configure-base/pre.yml | 5 +++++ ...precate-docker-devicemapper-234447328a24094f.yaml | 8 ++++++++ 4 files changed, 29 insertions(+) create mode 100644 playbooks/kayobe-overcloud-host-configure-base/globals.yml.j2 create mode 100644 releasenotes/notes/deprecate-docker-devicemapper-234447328a24094f.yaml diff --git a/ansible/docker-devicemapper.yml b/ansible/docker-devicemapper.yml index 70ead14a4..2a7b30275 100644 --- a/ansible/docker-devicemapper.yml +++ b/ansible/docker-devicemapper.yml @@ -5,6 +5,18 @@ - docker - docker-devicemapper tasks: + - name: Warn about deprecation of devicemapper Docker storage driver + fail: + msg: > + Support for using the devicemapper Docker storage driver is + deprecated in Kayobe and will be removed in the Caracal 16.0.0 + release. To keep using devicemapper in the current release, ensure + that the version of Docker Engine installed is below 25.0.0. + # NOTE(priteau): We want this to print a nice big red warning and not to + # fail the run. + ignore_errors: yes + when: docker_storage_driver == 'devicemapper' + - name: Check for existing Docker configuration using devicemapper block: - name: Query Docker daemon for storage driver diff --git a/playbooks/kayobe-overcloud-host-configure-base/globals.yml.j2 b/playbooks/kayobe-overcloud-host-configure-base/globals.yml.j2 new file mode 100644 index 000000000..6b71a29d5 --- /dev/null +++ b/playbooks/kayobe-overcloud-host-configure-base/globals.yml.j2 @@ -0,0 +1,4 @@ +--- +# Pin Docker package to latest 24.x release before devicemapper was removed +docker_apt_package: "docker-ce=5:24.0.8-1~ubuntu.22.04~jammy" +docker_yum_package: "docker-ce-24*" diff --git a/playbooks/kayobe-overcloud-host-configure-base/pre.yml b/playbooks/kayobe-overcloud-host-configure-base/pre.yml index 0c521e90a..e02dc598e 100644 --- a/playbooks/kayobe-overcloud-host-configure-base/pre.yml +++ b/playbooks/kayobe-overcloud-host-configure-base/pre.yml @@ -25,6 +25,11 @@ src: overrides.yml.j2 dest: "{{ kayobe_config_src_dir }}/etc/kayobe/zzz-overrides.yml" + - name: Ensure kolla-ansible globals.yml override config file exists + template: + src: globals.yml.j2 + dest: "{{ kayobe_config_src_dir }}/etc/kayobe/kolla/globals.yml" + # NOTE(mgoddard): Create two loopback devices backed by files. These will # be added to a software RAID volume, then added to an LVM volume group. - name: Ensure a docker storage backing file exists diff --git a/releasenotes/notes/deprecate-docker-devicemapper-234447328a24094f.yaml b/releasenotes/notes/deprecate-docker-devicemapper-234447328a24094f.yaml new file mode 100644 index 000000000..fa8ca3ea4 --- /dev/null +++ b/releasenotes/notes/deprecate-docker-devicemapper-234447328a24094f.yaml @@ -0,0 +1,8 @@ +--- +deprecations: + - | + Support for the ``devicemapper`` Docker storage driver is deprecated + following its removal from Docker Engine 25.0. Support will be fully + removed in the Caracal 16.0.0 release. Operators using ``devicemapper`` + should ensure that a compatible version of Docker Engine is installed (i.e. + release 24.x or below).