diff --git a/modules/openstack_project/manifests/mirror_update.pp b/modules/openstack_project/manifests/mirror_update.pp index fc2fbefe4c..f60d423269 100644 --- a/modules/openstack_project/manifests/mirror_update.pp +++ b/modules/openstack_project/manifests/mirror_update.pp @@ -329,25 +329,47 @@ class openstack_project::mirror_update ( } ## Docker APT mirror - ::openstack_project::reprepro { 'debian-docker-reprepro-mirror': - confdir => '/etc/reprepro/debian-docker', - basedir => '/afs/.openstack.org/mirror/deb-docker', + + # Unfortunately docker upstream doesn't do the pool model correctly, + # and we have to mirror each distro separately to avoid file + # conflicts (they have the same .deb files) + ::openstack_project::reprepro { 'debian-docker-bionic-reprepro-mirror': + confdir => '/etc/reprepro/debian-docker-bionic', + basedir => '/afs/.openstack.org/mirror/deb-docker/bionic', distributions => 'openstack_project/reprepro/distributions.debian-docker.erb', updates_file => 'puppet:///modules/openstack_project/reprepro/debian-docker-updates', - releases => ['bionic', 'xenial'], + releases => ['bionic'], + } + + ::openstack_project::reprepro { 'debian-docker-xenial-reprepro-mirror': + confdir => '/etc/reprepro/debian-docker-xenial', + basedir => '/afs/.openstack.org/mirror/deb-docker/xenial', + distributions => 'openstack_project/reprepro/distributions.debian-docker.erb', + updates_file => 'puppet:///modules/openstack_project/reprepro/debian-docker-updates', + releases => ['xenial'], + } + + ::openstack_project::reprepro { 'debian-docker-focal-reprepro-mirror': + confdir => '/etc/reprepro/debian-docker-focal', + basedir => '/afs/.openstack.org/mirror/deb-docker/focal', + distributions => 'openstack_project/reprepro/distributions.debian-docker.erb', + updates_file => 'puppet:///modules/openstack_project/reprepro/debian-docker-updates', + releases => ['focal'], } cron { 'reprepro debian docker': user => 'root', hour => '*/2', minute => fqdn_rand(45, 'debian-docker'), - command => 'flock -n /var/run/reprepro/debian-docker.lock reprepro-mirror-update /etc/reprepro/debian-docker mirror.deb-docker >>/var/log/reprepro/debian-docker-mirror.log 2>&1', + command => 'flock -n /var/run/reprepro/debian-docker.lock bash -c "for DISTRO in xenial bionic focal; do reprepro-mirror-update /etc/reprepro/debian-docker-\$DISTRO mirror.deb-docker >>/var/log/reprepro/debian-docker-\$DISTRO-mirror.log; done" 2>&1', environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', require => [ File['/usr/local/bin/reprepro-mirror-update'], File['/etc/afsadmin.keytab'], File['/etc/reprepro.keytab'], - ::Openstack_project::Reprepro['debian-docker-reprepro-mirror'], + ::Openstack_project::Reprepro['debian-docker-xenial-reprepro-mirror'], + ::Openstack_project::Reprepro['debian-docker-bionic-reprepro-mirror'], + ::Openstack_project::Reprepro['debian-docker-focal-reprepro-mirror'], ] }