add ability to add more ubuntu mirror components

the original update_mirror.sh only allowed for mirroring the main
repository. left out restricted, multiverse, etc. the component is now
an array so it is easy to add additional components if you want to mirror
more than just main
This commit is contained in:
Bryan Hong 2016-02-06 21:53:00 -08:00
parent 0589234782
commit 83c550f8e1
1 changed files with 33 additions and 16 deletions

View File

@ -3,8 +3,16 @@ set -e
# Automate the initial creation and update of an Ubuntu package mirror in aptly # Automate the initial creation and update of an Ubuntu package mirror in aptly
# The variables (as set below) will create a mirror of the Ubuntu Trusty repo
# with just the main component, you can add other components like restricted
# universe etc by adding to the array (separated by spaces).
# For more detail about each of the variables below refer to:
# https://help.ubuntu.com/community/Repositories/CommandLine
UBUNTU_RELEASE=trusty UBUNTU_RELEASE=trusty
UPSTREAM_URL="http://archive.ubuntu.com/ubuntu/" UPSTREAM_URL="http://archive.ubuntu.com/ubuntu/"
COMPONENTS=( main )
REPOS=( ${UBUNTU_RELEASE} ${UBUNTU_RELEASE}-updates ${UBUNTU_RELEASE}-security ) REPOS=( ${UBUNTU_RELEASE} ${UBUNTU_RELEASE}-updates ${UBUNTU_RELEASE}-security )
# Export the GPG Public key # Export the GPG Public key
@ -14,35 +22,44 @@ fi
# Create repository mirrors if they don't exist # Create repository mirrors if they don't exist
set +e set +e
for repo in ${REPOS[@]}; do for component in ${COMPONENTS[@]}; do
aptly mirror list -raw | grep "^${repo}$" for repo in ${REPOS[@]}; do
if [[ $? -ne 0 ]]; then aptly mirror list -raw | grep "^${repo}-${component}$"
echo "Creating mirror of ${repo} repository." if [[ $? -ne 0 ]]; then
aptly mirror create \ echo "Creating mirror of ${repo}-${component} repository."
-architectures=amd64 ${repo} ${UPSTREAM_URL} ${repo} main aptly mirror create \
fi -architectures=amd64 ${repo}-${component} ${UPSTREAM_URL} ${repo} ${component}
fi
done
done done
set -e set -e
# Update all repository mirrors # Update all repository mirrors
for repo in ${REPOS[@]}; do for component in ${COMPONENTS[@]}; do
echo "Updating ${repo} repository mirror.." for repo in ${REPOS[@]}; do
aptly mirror update ${repo} echo "Updating ${repo}-${component} repository mirror.."
aptly mirror update ${repo}-${component}
done
done done
# Create snapshots of updated repositories # Create snapshots of updated repositories
for repo in ${REPOS[@]}; do for component in ${COMPONENTS[@]}; do
echo "Creating snapshot of ${repo} repository mirror.." for repo in ${REPOS[@]}; do
aptly snapshot create ${repo}-`date +%Y%m%d%H` from mirror ${repo} echo "Creating snapshot of ${repo}-${component} repository mirror.."
SNAPSHOTARRAY+="${repo}-${component}-`date +%Y%m%d%H` "
aptly snapshot create ${repo}-${component}-`date +%Y%m%d%H` from mirror ${repo}-${component}
done
done done
echo ${SNAPSHOTARRAY[@]}
#### I STOPPED HERE
# Merge snapshots into a single snapshot with updates applied # Merge snapshots into a single snapshot with updates applied
echo "Merging snapshots into one.." echo "Merging snapshots into one.."
aptly snapshot merge -latest \ aptly snapshot merge -latest \
${UBUNTU_RELEASE}-merged-`date +%Y%m%d%H` \ ${UBUNTU_RELEASE}-merged-`date +%Y%m%d%H` \
${UBUNTU_RELEASE}-`date +%Y%m%d%H` \ ${SNAPSHOTARRAY[@]}
${UBUNTU_RELEASE}-updates-`date +%Y%m%d%H` \
${UBUNTU_RELEASE}-security-`date +%Y%m%d%H`
# Publish the latest merged snapshot # Publish the latest merged snapshot
set +e set +e