Michael Krotscheck 320c399a91
Add NPM mirror hosting to unified mirrors
This patch makes the necessary modifications to host npm packages
on our mirrors. Changes include:

- index.json as a DirectoryIndex
- Rewrite rules for the AFS folder structure
- mod_substitute invocation to correctly reference absolute tarball
  url's described in the index.json files.

Change-Id: I1a5d560068e37e20ec565b8d864f89732ff5ad74
2016-04-13 08:50:37 -07:00

110 lines
2.2 KiB
Puppet

# == Class: openstack_project::mirror
#
class openstack_project::mirror (
$vhost_name = $::fqdn,
) {
$mirror_root = '/afs/openstack.org/mirror'
$pypi_root = "${mirror_root}/pypi"
$wheel_root = "${mirror_root}/wheel"
$npm_root = "${mirror_root}/npm"
$www_base = '/var/www'
$www_root = "${www_base}/mirror"
#####################################################
# Build Apache Webroot
file { "${www_base}":
ensure => directory,
owner => root,
group => root,
}
file { "${www_root}":
ensure => directory,
owner => root,
group => root,
require => [
File["${www_base}"],
]
}
# Create the symlink to pypi.
file { "${www_root}/pypi":
ensure => link,
target => "${pypi_root}/web",
owner => root,
group => root,
require => [
File["${www_root}"],
]
}
# Create the symlink to wheel.
file { "${www_root}/wheel":
ensure => link,
target => "${wheel_root}",
owner => root,
group => root,
require => [
File["${www_root}"],
]
}
# Create the symlink to apt.
file { "${www_root}/ubuntu":
ensure => link,
target => "${mirror_root}/ubuntu",
owner => root,
group => root,
require => [
File["${www_root}"],
]
}
file { "${www_root}/npm":
ensure => link,
target => "${npm_root}",
owner => root,
group => root,
require => [
File["${www_root}"],
]
}
file { "${www_root}/robots.txt":
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
source => 'puppet:///modules/openstack_project/disallow_robots.txt',
require => File["${www_root}"],
}
#####################################################
# Build VHost
include ::httpd
if ! defined(Httpd::Mod['rewrite']) {
httpd::mod { 'rewrite':
ensure => present,
}
}
if ! defined(Httpd::Mod['substitute']) {
httpd::mod { 'substitute':
ensure => present,
}
}
::httpd::vhost { $vhost_name:
port => 80,
priority => '50',
docroot => "${www_root}",
template => 'openstack_project/mirror.vhost.erb',
require => [
File["${www_root}"],
]
}
}