Skip to main content

3rd party Reposync - RHN Satellite

We import a number of packages from 3rd party repos (Oracle, EPEL, Nginx) in to our Satellite.


Here is a script I created which manages our 3rd-party-reposync


#!/bin/sh
##

## THIS SCRIPT RELIES ON THE RHNSAT HOST HAVING A YUM REPO DEFINED FOR THE
## VENDOR SUPPLIED REPO
##
## YOU WILL NEED TO ENABLE THE PUBLIC ORACLE REPO FOR
##   el5_latest
##   ol6_latest
## NOTE: You definitely need to include/exclude packages specific to oracleasm

NOTIFICATION=0
CONFIG=/etc/yum.conf.reposync
EMAIL=james.radtke@blah.com
LOGFILE=/tmp/3rd-party-reposync.out
LOCKFILE=/var/run/3rd-party-reposync.lock
DEBUG=0
DOM=`date +%d`
# THE VALUE AFTER THE % SIGN IS THE DIVISOR (i.e. %6 means 6/12/18/24/30)
MOD=$((DOM%7))

PWD=`pwd`

clear
echo "Output is sent to: $LOGFILE"
echo "To view output, run:"
echo "tail -f $LOGFILE"

if [ $NOTIFICATION == 1 ]
then
  exec > $LOGFILE 2>&1
  date
fi

# DETERMINE IF A PREVIOUS REPOSYNC IS STILL RUNNING
lockfile -r 0 ${LOCKFILE} 1>/dev/null 2>&1
status=$?
if [ ${status} -ne 0 ] ;then
    echo "3rd-party-reposync is already running.  Aborting second sync attempt."
    exit 1
fi
trap "rm ${LOCKFILE}" EXIT

# * * * * * * * * * * * * * * * * * * *
# SUBROUTINES
# * * * * * * * * * * * * * * * * * * *
syncrepo() {
  PKGDIR=/var/satellite/repos/$ARCH/$REPOID
  echo
  if [ ! -d $PKGDIR ]
  then
    mkdir -p $PKGDIR
  fi

  echo ""
  echo "# * * * * * * * * * * * * * * * * * * * "
  echo "# Begin  ${REPOID}-${ARCH}"
  echo "# * * * * * * * * * * * * * * * * * * * "

  echo ""
  echo "# NOTE: Syncing - ${REPOID}-${ARCH}"
  echo "reposync -n -a $ARCH --repoid=${REPOID} -p /var/satellite/repos/$ARCH/ -n"
  reposync -c ${CONFIG} -n -a $ARCH --repoid=${REPOID} -p /var/satellite/repos/$ARCH/ -n
  # For some reason, the /etc/yum.repos.d/oracle file will not ignore the shitty xen packages
  #find /var/satellite/repos/$ARCH/${REPOID} -name "*el5xen*" -exec rm {} \;

  echo ""
  echo "cd $PKGDIR"
  cd $PKGDIR

  echo ""
  echo "createrepo $PKGDIR"
  createrepo $PKGDIR

  echo ""
  echo "cd $PWD"
  cd $PWD

  echo ""
  echo "spacewalk-repo-sync --channel $CHANNEL_LABEL --url file://$PKGDIR --type yum > /dev/null"
  spacewalk-repo-sync --channel $CHANNEL_LABEL --url file://$PKGDIR --type yum > /dev/null
}

# * * * * * * * * * * * * * * * * * * *
#                EXAMPLE
# * * * * * * * * * * * * * * * * * * *
#############
# NGINX RHEL5
#############
#CHANNEL_LABEL=nginx_rhel5 -- RETRIEVE FROM SATELLITE SERVER
#ARCH=x86_64 -- THIS SHOULD... BE OBVIOUS
#REPOID=nginx -- THIS IS THE NAME OF THE REPO WHICH YOU WILL RETRIEVE
#                PACKAGES FROM /etc/yum.repos.d/blah.repo
#syncrepo

# * * * * * * * * * * * * * * * * * * *
#               EPEL
# * * * * * * * * * * * * * * * * * * *
#############
# EPEL 6
#############
CHANNEL_LABEL=epel-x86_64-server-6
ARCH=x86_64
REPOID=epel-x86_64-server-6
syncrepo
#############
# EPEL 5
#############
CHANNEL_LABEL=epel-x86_64-server-5
ARCH=x86_64
REPOID=epel-x86_64-server-5
syncrepo


# * * * * * * * * * * * * * * * * * * *
#                ORACLE
# * * * * * * * * * * * * * * * * * * *
#############
# EL5_LATEST
#############
CHANNEL_LABEL=ora_asm
ARCH=x86_64
REPOID=el5_latest
syncrepo

#############
# OL6_LATEST
#############
CHANNEL_LABEL=ol6_asm
ARCH=x86_64
REPOID=ol6_latest
syncrepo

# * * * * * * * * * * * * * * * * * * *
#                NGINX
# * * * * * * * * * * * * * * * * * * *
#############
# NGINX RHEL5
#############
CHANNEL_LABEL=nginx_rhel5
ARCH=x86_64
REPOID=nginx
syncrepo

#############
# NGINX RHEL6
#############
CHANNEL_LABEL=nginx_rhel6
ARCH=x86_64
REPOID=nginx6
syncrepo

# * * * * * * * * * * * * * * * * * * *
#               DELL
# * * * * * * * * * * * * * * * * * * *
#############
# DELL
#############
CHANNEL_LABEL=dell-om-platform_independent-rhel-x86_64-server-6
ARCH=x86_64
REPOID=srvadmin-base6
if [ $MOD == 0 ]
then
  syncrepo
fi

CHANNEL_LABEL=dell-om-platform_independent-rhel-x86_64-server-5
ARCH=x86_64
REPOID=srvadmin-base
if [ $MOD == 0 ]
then
  syncrepo
fi

# * * * * * * * * * * * * * * * * * * *
# SEND NOTIFICATION IF ENABLED
# * * * * * * * * * * * * * * * * * * *
if [ $NOTIFICATION == 1 ]
then
  cat $LOGFILE | mail -s "3rd-party-reposync Report" $EMAIL
fi

exit 0


Comments

Popular posts from this blog

P2V using dd for KVM-QEMU guest

Preface: I have certainly not exhaustively tested this process.  I had a specific need and found a specific solution that worked. Situation:  I was issued a shiny new laptop running Red Hat Enterprise Linux 7 (with Corp VPN, certs, Authentication configuration, etc...)  The image was great, but I needed more flexibility on my bare metal.  So, my goal was to P2V the corporate image so I could just run it as a VM. * Remove corporate drive and install new SSD * install corp drive in external USB-3 case * Install RHEL 7 on new SSD * dd old drive to a disk-image file in a temp location which will be an image which is the same size as your actual drive (unless you have enough space in your destination to contain a temp and converted image) * convert the raw disk-image to a qcow file while pushing it to the final location - this step should reduce the disk size - however, I believe it will only reduce/collapse zero-byte blocks (not just free space - i.e. if you de...

Sun USS 7100 foo

TIP: put ALL of your LUNs into a designated TARGET and INITIATOR group when you create them.  If you leave them in the "default" group, then everything that does an discovery against the array will find them :-( I'm struggling to recognize a reason that a default should even be present on the array. Also - who, exactly, is Sun trying to kid.  The USS is simply a box.. running Solaris .. with IPMP and ZFS.  Great.  If you have ever attempted to "break-in" or "p0wn" your IBM HMC, you know that there are people out there that can harden a box - then.. there's Sun.  After a recent meltdown at the office I had to get quite intimate with my USS 7110 and learned quite a bit.  Namely: there's a shell ;-) My current irritation is how they attempt to "warn you" away from using the shell (my coverage expired a long time ago to worry about that) and then how they try to hide things, poorly. I was curious as to what version of SunOS it ...

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)"

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)" One issue that may cause this to arise is if you managed to break your /etc/fstab We had an engineer add a line with the intended options of "nfsvers=3" but instead added "-onfsvers=3" and it broke the system fairly catastrophically.