From 0f291dc788821cb6b398a7ff603cfdace4882f25 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Wed, 15 Jun 2016 19:45:52 +0100 Subject: [PATCH] OpenStack-CI Apt mirror for Ubuntu Cloud Archive This patch adds a mirror for Ubuntu Cloud Archive. The releases mirrored is selective, only covering the currently supported Ubuntu and OpenStack versions. Having this mirror available aids deployment projects which consume these packages by ensuring that all apt packages needed are available in mirror local to the nodepool cloud provider. Note: I have no real understanding of how puppet/system-config works and don't know how to test this patch. If there's no system-config gate check to validate that this works, please can someone assist by testing and providing feedback. Change-Id: Id658f2f29ce4a42eee2ef1ecdf935ada882da51e --- .../reprepro/ubuntu-cloud-archive-gpg-key.asc | 52 +++++++++++++++++++ .../reprepro/ubuntu-cloud-archive-updates | 7 +++ modules/openstack_project/manifests/mirror.pp | 11 ++++ .../manifests/mirror_update.pp | 32 ++++++++++++ .../distributions.ubuntu-cloud-archive.erb | 14 +++++ 5 files changed, 116 insertions(+) create mode 100644 modules/openstack_project/files/reprepro/ubuntu-cloud-archive-gpg-key.asc create mode 100644 modules/openstack_project/files/reprepro/ubuntu-cloud-archive-updates create mode 100644 modules/openstack_project/templates/reprepro/distributions.ubuntu-cloud-archive.erb diff --git a/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-gpg-key.asc b/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-gpg-key.asc new file mode 100644 index 0000000000..952a8cc328 --- /dev/null +++ b/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-gpg-key.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFAqSlgBEADPKwXUwqbgoDYgR20zFypxSZlSbrttOKVPEMb0HSUx9Wj8VvNC +r+mT4E9wAyq7NTIs5ad2cUhXoyenrjcfGqK6k9R6yRHDbvAxCSWTnJjw7mzsajDN +ocXC6THKVW8BSjrh0aOBLpht6d5QCO2vyWxw65FKM65GOsbX03ZngUPMuOuiOEHQ +Zo97VSH2pSB+L+B3d9B0nw3QnU8qZMne+nVWYLYRXhCIxSv1/h39SXzHRgJoRUFH +vL2aiiVrn88NjqfDW15HFhVJcGOFuACZnRA0/EqTq0qNo3GziQO4mxuZi3bTVL5s +GABiYW9uIlokPqcS7Fa0FRVIU9R+bBdHZompcYnKAeGag+uRvuTqC3MMRcLUS9Oi +/P9I8fPARXUPwzYN3fagCGB8ffYVqMunnFs0L6td08BgvWwer+Buu4fPGsQ5OzMc +lgZ0TJmXyOlIW49lc1UXnORp4sm7HS6okA7P6URbqyGbaplSsNUVTgVbi+vc8/jY +dfExt/3HxVqgrPlq9htqYgwhYvGIbBAxmeFQD8Ak/ShSiWb1FdQ+f7Lty+4mZLfN +8x4zPZ//7fD5d/PETPh9P0msF+lLFlP564+1j75wx+skFO4v1gGlBcDaeipkFzeo +zndAgpegydKSNTF4QK9iTYobTIwsYfGuS8rV21zE2saLM0CE3T90aHYB/wARAQAB +tD1DYW5vbmljYWwgQ2xvdWQgQXJjaGl2ZSBTaWduaW5nIEtleSA8ZnRwbWFzdGVy +QGNhbm9uaWNhbC5jb20+iQI3BBMBCAAhBQJQKkpYAhsDBQsJCAcDBRUKCQgLBRYC +AwEAAh4BAheAAAoJEF7bG2LsSSbqKxkQAIKtgImrk02YCDldg6tLt3b69ZK0kIVI +3Xso/zCBZbrYFmgGQEFHAa58mIgpv5GcgHHxWjpX3n4tu2RM9EneKvFjFBstTTgo +yuCgFr7iblvs/aMW4jFJAiIbmjjXWVc0CVB/JlLqzBJ/MlHdR9OWmojN9ZzoIA+i ++tWlypgUot8iIxkR6JENxit5v9dN8i6anmnWybQ6PXFMuNi6GzQ0JgZIVs37n0ks +2wh0N8hBjAKuUgqu4MPMwvNtz8FxEzyKwLNSMnjLAhzml/oje/Nj1GBB8roj5dmw +7PSul5pAqQ5KTaXzl6gJN5vMEZzO4tEoGtRpA0/GTSXIlcx/SGkUK5+lqdQIMdyS +n8bImU6V6rDSoOaI9YWHZtpv5WeUsNTdf68jZsFCRD+2+NEmIqBVm11yhmUoasC6 +dYw5l9P/PBdwmFm6NBUSEwxb+ROfpL1ICaZk9Jy++6akxhY//+cYEPLin02r43Z3 +o5Piqujrs1R2Hs7kX84gL5SlBzTM4Ed+ob7KVtQHTefpbO35bQllkPNqfBsC8AIC +8xvTP2S8FicYOPATEuiRWs7Kn31TWC2iwswRKEKVRmN0fdpu/UPdMikyoNu9szBZ +RxvkRAezh3WheJ6MW6Fmg9d+uTFJohZt5qHdpxYa4beuN4me8LF0TYzgfEbFT6b9 +D6IyTFoT0LequQINBFAqSlgBEADmL3TEq5ejBYrA+64zo8FYvCF4gziPa5rCIJGZ +/gZXQ7pm5zek/lOe9C80mhxNWeLmrWMkMOWKCeaDMFpMBOQhZZmRdakOnH/xxO5x ++fRdOOhy+5GTRJiwkuGOV6rB9eYJ3UN9caP2hfipCMpJjlg3j/GwktjhuqcBHXhA +HMhzxEOIDE5hmpDqZ051f8LGXld9aSL8RctoYFM8sgafPVmICTCq0Wh03dr5c2JA +gEXy3ushYm/8i2WFmyldo7vbtTfx3DpmJc/EMpGKV+GxcI3/ERqSkde0kWlmfPZb +o/5+hRqSryqfQtRKnFEQgAqAhPIwXwOkjCpPnDNfrkvzVEtl2/BWP/1/SOqzXjk9 +TIb1Q7MHANeFMrTCprzPLX6IdC4zLp+LpV91W2zygQJzPgWqH/Z/WFH4gXcBBqmI +8bFpMPONYc9/67AWUABo2VOCojgtQmjxuFn+uGNw9PvxJAF3yjl781PVLUw3n66d +wHRmYj4hqxNDLywhhnL/CC7KUDtBnUU/CKn/0Xgm9oz3thuxG6i3F3pQgpp7MeMn +tKhLFWRXo9Bie8z/c0NV4K5HcpbGa8QPqoDseB5WaO4yGIBOt+nizM4DLrI+v07y +Xe3Jm7zBSpYSrGarZGK68qamS3XPzMshPdoXXz33bkQrTPpivGYQVRZuzd/R6b+6 +IurV+QARAQABiQIfBBgBCAAJBQJQKkpYAhsMAAoJEF7bG2LsSSbq59EP/1U3815/ +yHV3cf/JeHgh6WS/Oy2kRHp/kJt3ev/l/qIxfMIpyM3u/D6siORPTUXHPm3AaZrb +w0EDWByA3jHQEzlLIbsDGZgrnl+mxFuHwC1yEuW3xrzgjtGZCJureZ/BD6xfRuRc +mvnetAZv/z98VN/oj3rvYhUi71NApqSvMExpNBGrdO6gQlI5azhOu8xGNy4OSke8 +J6pAsMUXIcEwjVEIvewJuqBW/3rj3Hh14tmWjQ7shNnYBuSJwbLeUW2e8bURnfXE +TxrCmXzDmQldD5GQWCcD5WDosk/HVHBmHlqrqy0VO2nE3c73dQlNcI4jVWeC4b4Q +SpYVsFz/6Iqy5ZQkCOpQ57MCf0B6P5nF92c5f3TYPMxHf0x3DrjDbUVZytxDiZZa +XsbZzsejbbc1bSNp4hb+IWhmWoFnq/hNHXzKPHBTapObnQju+9zUlQngV0BlPT62 +hOHOw3Pv7suOuzzfuOO7qpz0uAy8cFKe7kBtLSFVjBwaG5JX89mgttYW+lw9Rmsb +p9Iw4KKFHIBLOwk7s+u0LUhP3d8neBI6NfkOYKZZCm3CuvkiOeQP9/2okFjtj+29 +jEL+9KQwrGNFEVNe85Un5MJfYIjgyqX3nJcwypYxidntnhMhr2VD3HL2R/4CiswB +Oa4g9309p/+af/HU1smBrOfIeRoxb8jQoHu3 +=xg4S +-----END PGP PUBLIC KEY BLOCK----- diff --git a/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-updates b/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-updates new file mode 100644 index 0000000000..d657000859 --- /dev/null +++ b/modules/openstack_project/files/reprepro/ubuntu-cloud-archive-updates @@ -0,0 +1,7 @@ +Name: ubuntu-cloud-archive +Method: http://ubuntu-cloud.archive.canonical.com/ubuntu +Components: main +UDebComponents: main +Architectures: amd64 +GetInRelease: no +VerifyRelease: EC4926EA diff --git a/modules/openstack_project/manifests/mirror.pp b/modules/openstack_project/manifests/mirror.pp index 2faad6204b..334dc72c8f 100644 --- a/modules/openstack_project/manifests/mirror.pp +++ b/modules/openstack_project/manifests/mirror.pp @@ -106,6 +106,17 @@ class openstack_project::mirror ( ] } + # Create the symlink to Ubuntu Cloud Archive. + file { "${www_root}/ubuntu-cloud-archive": + ensure => link, + target => "${mirror_root}/ubuntu-cloud-archive", + owner => root, + group => root, + require => [ + File["${www_root}"], + ] + } + file { "${www_root}/robots.txt": ensure => present, owner => 'root', diff --git a/modules/openstack_project/manifests/mirror_update.pp b/modules/openstack_project/manifests/mirror_update.pp index 568e44037a..733532394b 100644 --- a/modules/openstack_project/manifests/mirror_update.pp +++ b/modules/openstack_project/manifests/mirror_update.pp @@ -253,4 +253,36 @@ class openstack_project::mirror_update ( File['/etc/epel.keytab'], ] } + + ### Ubuntu Cloud Archive Mirror ### + ::openstack_project::reprepro { 'ubuntu-cloud-archive-reprepro-mirror': + confdir => '/etc/reprepro/ubuntu-cloud-archive', + basedir => '/afs/.openstack.org/mirror/ubuntu-cloud-archive', + distributions => 'openstack_project/reprepro/distributions.ubuntu-cloud-archive.erb', + updates_file => 'puppet:///modules/openstack_project/reprepro/ubuntu-cloud-archive-updates', + releases => { 'trusty'=>['liberty', 'mitaka'], 'xenial'=>['newton'] }, + } + + cron { 'reprepro ubuntu-cloud-archive': + user => $user, + hour => '*/2', + minute => '0', + command => 'flock -n /var/run/reprepro/ubuntu-cloud-archive.lock reprepro-mirror-update /etc/reprepro/ubuntu-cloud-archive mirror.ubuntu-cloud >>/var/log/reprepro/ubuntu-cloud-archive-mirror.log 2>&1', + environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', + require => [ + File['/usr/local/bin/reprepro-mirror-update'], + File['/etc/afsadmin.keytab'], + File['/etc/reprepro.keytab'], + ::openstack_project::reprepro['ubuntu-cloud-archive-reprepro-mirror'], + ] + } + + gnupg_key { 'Canonical Cloud Archive Signing Key': + ensure => present, + # 391A 9AA2 1471 9283 9E9D B031 5EDB 1B62 EC49 26EA + key_id => '5EDB1B62EC4926EA', + user => 'root', + key_type => 'public', + key_source => 'puppet:///modules/openstack_project/reprepro/ubuntu-cloud-archive-gpg-key.asc', + } } diff --git a/modules/openstack_project/templates/reprepro/distributions.ubuntu-cloud-archive.erb b/modules/openstack_project/templates/reprepro/distributions.ubuntu-cloud-archive.erb new file mode 100644 index 0000000000..a945a8b181 --- /dev/null +++ b/modules/openstack_project/templates/reprepro/distributions.ubuntu-cloud-archive.erb @@ -0,0 +1,14 @@ +<% releases.each do |distro_codename, openstack_codenames| -%> + <% openstack_codenames.each do |openstack_codename| -%> +Origin: Canonical +Codename: <%= distro_codename %>-updates/<%= openstack_codename %> +Description: OpenStack <%= openstack_codename.capitalize %> Archive for Ubuntu <%= distro_codename.capitalize %> +Architectures: amd64 +Components: main +UDebComponents: main +Contents: .gz +Update: <%= distro_codename %>-updates +Log: <%= @logdir %>/ubuntu-cloud-archive-<%= distro_codename %>.log + + <% end -%> +<% end -%>