From 5435ae69e8b33467145f17df4d6107c7433c104c Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 22 Feb 2017 20:43:49 +0100 Subject: [PATCH] Mirror openSUSE Leap 42.2 repositories Change-Id: Id3fad9ab92ac913f0f31a71873c8f85e14828796 --- manifests/site.pp | 1 + .../files/mirror/opensuse-mirror-update.sh | 54 +++++++++++++++++++ modules/openstack_project/manifests/mirror.pp | 11 ++++ .../manifests/mirror_update.pp | 30 +++++++++++ 4 files changed, 96 insertions(+) create mode 100644 modules/openstack_project/files/mirror/opensuse-mirror-update.sh diff --git a/manifests/site.pp b/manifests/site.pp index bc2e9f526b..dfc50c5417 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -630,6 +630,7 @@ node 'mirror-update.openstack.org' { bandersnatch_keytab => hiera('bandersnatch_keytab'), admin_keytab => hiera('afsadmin_keytab'), fedora_keytab => hiera('fedora_keytab'), + opensuse_keytab => hiera('opensuse_keytab'), reprepro_keytab => hiera('reprepro_keytab'), gem_keytab => hiera('gem_keytab'), npm_keytab => hiera('npm_keytab'), diff --git a/modules/openstack_project/files/mirror/opensuse-mirror-update.sh b/modules/openstack_project/files/mirror/opensuse-mirror-update.sh new file mode 100644 index 0000000000..ca20c3485b --- /dev/null +++ b/modules/openstack_project/files/mirror/opensuse-mirror-update.sh @@ -0,0 +1,54 @@ +#!/bin/bash -xe +# Copyright 2017 SUSE Linux GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +MIRROR_VOLUME=$1 + +BASE="/afs/.openstack.org/mirror/opensuse" +MIRROR="rsync://mirrors.kernel.org" +K5START="k5start -t -f /etc/opensuse.keytab service/opensuse-mirror -- timeout -k 2m 30m" + +REPO=leap/42.2 +if ! [ -f $BASE/$REPO ]; then + $K5START mkdir -p $BASE/$REPO +fi + +date --iso-8601=ns +echo "Running rsync releases..." +$K5START rsync -rlptDvz \ + --delete \ + --delete-excluded \ + --exclude="iso" \ + $MIRROR/opensuse/distribution/$REPO/ $BASE/$REPO/ + +REPO=update/leap/42.2 +if ! [ -f $BASE/$REPO ]; then + $K5START mkdir -p $BASE/$REPO +fi + +date --iso-8601=ns +echo "Running rsync updates..." +$K5START rsync -rlptDvz \ + --delete \ + --delete-excluded \ + --exclude="src/" \ + --exclude="nosrc/" \ + $MIRROR/opensuse/update/$REPO/ $BASE/$REPO/ + +date --iso-8601=ns | $K5START tee $BASE/timestamp.txt +echo "rsync completed successfully, running vos release." +k5start -t -f /etc/afsadmin.keytab service/afsadmin -- vos release -v $MIRROR_VOLUME + +date --iso-8601=ns +echo "Done." diff --git a/modules/openstack_project/manifests/mirror.pp b/modules/openstack_project/manifests/mirror.pp index b8356c8653..bb49aa2c6c 100644 --- a/modules/openstack_project/manifests/mirror.pp +++ b/modules/openstack_project/manifests/mirror.pp @@ -109,6 +109,17 @@ class openstack_project::mirror ( ] } + # Create the symlink to openSUSE + file { "${www_root}/opensuse": + ensure => link, + target => "${mirror_root}/opensuse", + owner => root, + group => root, + require => [ + File["${www_root}"], + ] + } + # Create the symlink to apt. file { "${www_root}/ubuntu": ensure => link, diff --git a/modules/openstack_project/manifests/mirror_update.pp b/modules/openstack_project/manifests/mirror_update.pp index 3517d2ccbf..c0ef2a2c82 100644 --- a/modules/openstack_project/manifests/mirror_update.pp +++ b/modules/openstack_project/manifests/mirror_update.pp @@ -10,6 +10,7 @@ class openstack_project::mirror_update ( $centos_keytab = '', $epel_keytab = '', $fedora_keytab = '', + $opensuse_keytab = '', ) { include ::gnupg include ::openstack_project::reprepro_mirror @@ -336,6 +337,35 @@ class openstack_project::mirror_update ( ] } + ### openSUSE mirror ### + file { '/etc/opensuse.keytab': + owner => 'root', + group => 'root', + mode => '0400', + content => $opensuse_keytab, + } + + file { '/usr/local/bin/opensuse-mirror-update': + ensure => present, + owner => 'root', + group => 'root', + mode => '0755', + source => 'puppet:///modules/openstack_project/mirror/opensuse-mirror-update.sh', + } + + cron { 'opensuse mirror': + user => $user, + minute => '0', + hour => '*/6', + command => 'flock -n /var/run/opensuse-mirror.lock opensuse-mirror-update mirror.opensuse >>/var/log/opensuse-mirror.log 2>&1', + environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', + require => [ + File['/usr/local/bin/opensuse-mirror-update'], + File['/etc/afsadmin.keytab'], + File['/etc/opensuse.keytab'], + ] + } + ### Ubuntu Cloud Archive Mirror ### ::openstack_project::reprepro { 'ubuntu-cloud-archive-reprepro-mirror': confdir => '/etc/reprepro/ubuntu-cloud-archive',