Monty Taylor aace771696 Migrate the repo from hg to git.
Change-Id: Ia7701aa1594e1c9c98daa84e4d6d5366b042379a
2012-05-30 12:55:10 -04:00

113 lines
2.8 KiB
Puppet

class pypimirror ( $base_url,
$log_filename = "/var/log/pypimirror.log",
$mirror_file_path = "/var/lib/pypimirror",
$fetch_since_days = 1,
$package_matches = ["*"],
$external_links = true,
$follow_external_index_pages = true )
{
if $external_links == true {
$external_links_real = 'True'
}
else {
$external_links_real = 'False'
}
if $follow_external_index_pages == true {
$follow_external_index_pages_real = 'True'
}
else {
$follow_external_index_pages_real = 'False'
}
$packages = [ 'nginx',
'python-pip' ]
package { $packages:
ensure => present,
}
# Build the mirror config file based on options provided.
file { 'pypimirror.cfg':
path => '/etc/pypimirror.cfg',
ensure => present,
mode => 644,
owner => 'root',
group => 'root',
content => template('pypimirror/config.erb'),
}
file { '/usr/local/z3c.pypimirror':
ensure => absent,
}
# if we already have the repo the pull updates
exec { "update_pypi_mirror":
command => "git pull --ff-only",
cwd => "/usr/local/pypi-mirror",
path => "/bin:/usr/bin",
onlyif => "test -d /usr/local/pypi-mirror",
before => Exec["get_pypi_mirror"],
}
# otherwise get a new clone of it
exec { "get_pypi_mirror":
command => "git clone git://github.com/openstack-ci/pypi-mirror.git /usr/local/pypi-mirror",
path => "/bin:/usr/bin",
onlyif => "test ! -d /usr/local/pypi-mirror"
}
exec { "install_pypi_mirror":
command => "python setup.py install",
cwd => "/usr/local/pypi-mirror",
path => "/bin:/usr/bin",
subscribe => [ Exec["get_pypi_mirror"], Exec["update_pypi_mirror"] ],
}
exec { "initialize_mirror":
command => "pypimirror --initial-fetch /etc/pypimirror.cfg",
path => "/bin:/usr/bin:/usr/local/bin",
onlyif => "test ! -d ${mirror_file_path}",
require => [ Exec["get_pypi_mirror"], Exec["install_pypi_mirror"] ],
}
# Add cron job to update the mirror
cron { "update_mirror":
user => root,
hour => 0,
command => '/usr/local/bin/pypimirror --initial-fetch /etc/pypimirror.cfg',
require => Exec["install_pypi_mirror"],
}
# Rotate the mirror log file
include logrotate
logrotate::file {"pypimirror":
log => $log_filename,
options => ["compress", "delaycompress", "missingok", "rotate 7", "daily", "notifempty"],
require => Cron["update_mirror"],
}
# Setup the web server
service { "nginx":
ensure => running,
hasrestart => true
}
file { "/etc/nginx/sites-available/default":
ensure => present,
content => template('pypimirror/nginx_default.erb'),
replace => true,
owner => "root",
group => "root",
require => Package["nginx"],
notify => Service["nginx"],
}
}