From 4b1802fe26ec1208e2135546721806d82659b011 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Thu, 30 Mar 2017 16:26:38 -0400 Subject: [PATCH] Mirror rdo centos7 repo to AFS Recently https://trunk.rdoproject.org enabled rsync, which allows us to now mirror them. Start with the centos7 repo before dealing with stable branches. Change-Id: I942ad30b1026554b1a1c8309b1725d76e7870c7f Signed-off-by: Paul Belanger --- .../files/mirror/rdo-mirror-update.sh | 40 +++++++++++++++++++ modules/openstack_project/manifests/mirror.pp | 11 +++++ .../manifests/mirror_update.pp | 30 ++++++++++++++ 3 files changed, 81 insertions(+) create mode 100755 modules/openstack_project/files/mirror/rdo-mirror-update.sh diff --git a/modules/openstack_project/files/mirror/rdo-mirror-update.sh b/modules/openstack_project/files/mirror/rdo-mirror-update.sh new file mode 100755 index 0000000000..c975e13b76 --- /dev/null +++ b/modules/openstack_project/files/mirror/rdo-mirror-update.sh @@ -0,0 +1,40 @@ +#!/bin/bash -xe +# Copyright 2017 Red Hat, Inc. +# +# 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/rdo" +MIRROR="rsync://trunk.rdoproject.org" +K5START="k5start -t -f /etc/rdo.keytab service/rdo-mirror -- timeout -k 2m 30m" + +REPO=centos7 +if ! [ -f $BASE/$REPO ]; then + $K5START mkdir -p $BASE/$REPO +fi + +date --iso-8601=ns +echo "Running rsync..." +$K5START rsync -rlptDvz \ + --delete \ + $MIRROR/$REPO/ $BASE/$REPO/ + +# TODO(pabelanger): Validate rsync process + +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 4b8e3b56cd..1124dd2537 100644 --- a/modules/openstack_project/manifests/mirror.pp +++ b/modules/openstack_project/manifests/mirror.pp @@ -87,6 +87,17 @@ class openstack_project::mirror ( ] } + # Create the symlink to rdo + file { "${www_root}/rdo": + ensure => link, + target => "${mirror_root}/rdo", + owner => root, + group => root, + require => [ + File["${www_root}"], + ] + } + # Create the symlink to epel file { "${www_root}/epel": ensure => link, diff --git a/modules/openstack_project/manifests/mirror_update.pp b/modules/openstack_project/manifests/mirror_update.pp index a626674649..fc315932de 100644 --- a/modules/openstack_project/manifests/mirror_update.pp +++ b/modules/openstack_project/manifests/mirror_update.pp @@ -11,6 +11,7 @@ class openstack_project::mirror_update ( $epel_keytab = '', $fedora_keytab = '', $opensuse_keytab = '', + $rdo_keytab = '', ) { include ::gnupg include ::openstack_project::reprepro_mirror @@ -286,6 +287,35 @@ class openstack_project::mirror_update ( ] } + ### RDO mirror ### + file { '/etc/rdo.keytab': + owner => 'root', + group => 'root', + mode => '0400', + content => $rdo_keytab, + } + + file { '/usr/local/bin/rdo-mirror-update': + ensure => present, + owner => 'root', + group => 'root', + mode => '0755', + source => 'puppet:///modules/openstack_project/mirror/rdo-mirror-update.sh', + } + + cron { 'rdo mirror': + user => $user, + minute => '0', + hour => '*/2', + command => 'flock -n /var/run/rdo-mirror.lock rdo-mirror-update mirror.rdo >>/var/log/rdo-mirror.log 2>&1', + environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', + require => [ + File['/usr/local/bin/rdo-mirror-update'], + File['/etc/afsadmin.keytab'], + File['/etc/rdo.keytab'], + ] + } + ### EPEL mirror ### file { '/etc/epel.keytab': owner => 'root',