From 38a9cb4a1c08c56de0fc53915e66f47bf8445b78 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Thu, 12 May 2016 11:01:43 -0400 Subject: [PATCH] Add EPEL mirror Like the centos mirror, we'll be using rsync for the EPEL mirror. This will be used by centos-7 nodes. Change-Id: Ifb9f539b20558ef4464616d56259cf1355eff901 Signed-off-by: Paul Belanger --- manifests/site.pp | 1 + .../files/mirror/epel-mirror-update.sh | 43 +++++++++++++++++++ modules/openstack_project/manifests/mirror.pp | 11 +++++ .../manifests/mirror_update.pp | 30 +++++++++++++ 4 files changed, 85 insertions(+) create mode 100755 modules/openstack_project/files/mirror/epel-mirror-update.sh diff --git a/manifests/site.pp b/manifests/site.pp index 06b2788311..b83b680058 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -565,6 +565,7 @@ node 'mirror-update.openstack.org' { reprepro_keytab => hiera('reprepro_keytab'), npm_keytab => hiera('npm_keytab'), centos_keytab => hiera('centos_keytab'), + epel_keytab => hiera('epel_keytab'), sysadmins => hiera('sysadmins', []), } } diff --git a/modules/openstack_project/files/mirror/epel-mirror-update.sh b/modules/openstack_project/files/mirror/epel-mirror-update.sh new file mode 100755 index 0000000000..a97d74fc16 --- /dev/null +++ b/modules/openstack_project/files/mirror/epel-mirror-update.sh @@ -0,0 +1,43 @@ +#!/bin/bash -xe +# Copyright 2016 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/epel" +MIRROR="rsync://mirror.math.princeton.edu/pub" +K5START="k5start -t -f /etc/epel.keytab service/epel-mirror -- timeout -k 2m 30m" + +REPO=7 +if ! [ -f $BASE/$REPO ]; then + $K5START mkdir -p $BASE/$REPO +fi + +echo "Running rsync..." +$K5START rsync -rlptDvz \ + --delete \ + --delete-excluded \ + --exclude="SRPMS" \ + --exclude="ppc64" \ + --exclude="ppc64le" \ + --exclude="x86_64/debug" \ + --exclude="x86_64/repoview" \ + $MIRROR/epel/$REPO/ $BASE/$REPO/ + +# TODO(pabelanger): Validate rsync process + +echo "rsyc completed successfully, running vos release." +k5start -t -f /etc/afsadmin.keytab service/afsadmin -- vos release -v $MIRROR_VOLUME + +echo "Done." diff --git a/modules/openstack_project/manifests/mirror.pp b/modules/openstack_project/manifests/mirror.pp index 565266fcab..2faad6204b 100644 --- a/modules/openstack_project/manifests/mirror.pp +++ b/modules/openstack_project/manifests/mirror.pp @@ -63,6 +63,17 @@ class openstack_project::mirror ( ] } + # Create the symlink to epel + file { "${www_root}/epel": + ensure => link, + target => "${mirror_root}/epel", + 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 c88093b121..568e44037a 100644 --- a/modules/openstack_project/manifests/mirror_update.pp +++ b/modules/openstack_project/manifests/mirror_update.pp @@ -7,6 +7,7 @@ class openstack_project::mirror_update ( $admin_keytab = '', $npm_keytab = '', $centos_keytab = '', + $epel_keytab = '', ) { class { 'openstack_project::server': @@ -223,4 +224,33 @@ class openstack_project::mirror_update ( File['/etc/centos.keytab'], ] } + + ### EPEL mirror ### + file { '/etc/epel.keytab': + owner => 'root', + group => 'root', + mode => '0400', + content => $epel_keytab, + } + + file { '/usr/local/bin/epel-mirror-update': + ensure => present, + owner => 'root', + group => 'root', + mode => '0755', + source => 'puppet:///modules/openstack_project/mirror/epel-mirror-update.sh', + } + + cron { 'epel mirror': + user => $user, + minute => '0', + hour => '*/2', + command => 'flock -n /var/run/epel-mirror.lock epel-mirror-update mirror.epel >>/var/log/epel-mirror.log 2>&1', + environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', + require => [ + File['/usr/local/bin/epel-mirror-update'], + File['/etc/afsadmin.keytab'], + File['/etc/epel.keytab'], + ] + } }