Clark Boylan 607f653a9e Be conservative requiring python-yaml.
A lot of modules require python-yaml. Be conservative requiring this
package to avoid conflicts when two or more of these modules end up
being used on the same host.

Change-Id: I35bf4f1070e6f248734c593e9277b737166904c1
Reviewed-on: https://review.openstack.org/13688
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
Approved: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
2012-09-26 23:40:42 +00:00

109 lines
2.3 KiB
Puppet

class zuul (
$jenkins_server,
$jenkins_user,
$jenkins_apikey,
$gerrit_server,
$gerrit_user,
$url_pattern,
$git_source_repo='https://github.com/openstack-ci/zuul.git'
) {
$packages = ["python-webob",
"python-daemon",
"python-lockfile",
"python-paramiko",
"python-paste",
]
package { $packages:
ensure => "present",
}
# A lot of things need yaml, be conservative requiring this package to avoid
# conflicts with other modules.
if ! defined(Package['python-yaml']) {
package { 'python-yaml':
ensure => "present",
}
}
# Packages that need to be installed from pip
$pip_packages = ["GitPython"]
package { $pip_packages:
ensure => latest, # we want the latest from these
provider => pip,
require => Class[pip]
}
vcsrepo { "/opt/zuul":
ensure => latest,
provider => git,
revision => "master",
source => $git_source_repo,
}
exec { "install_zuul":
command => "python setup.py install",
cwd => "/opt/zuul",
path => "/bin:/usr/bin",
refreshonly => true,
subscribe => Vcsrepo["/opt/zuul"],
}
file { "/etc/zuul":
ensure => "directory",
}
# TODO: We should put in notify either Service['zuul'] or Exec['zuul-reload']
# at some point, but that still has some problems.
file { "/etc/zuul/zuul.conf":
owner => 'jenkins',
mode => 400,
ensure => 'present',
content => template('zuul/zuul.conf.erb'),
require => File["/etc/zuul"],
}
file { "/var/log/zuul":
ensure => "directory",
owner => 'jenkins'
}
file { "/var/run/zuul":
ensure => "directory",
owner => 'jenkins'
}
file { "/var/lib/zuul":
ensure => "directory",
owner => 'jenkins'
}
file { "/var/lib/zuul/git":
ensure => "directory",
owner => 'jenkins'
}
file { "/etc/init.d/zuul/":
owner => 'root',
group => 'root',
mode => 555,
ensure => 'present',
source => 'puppet:///modules/zuul/zuul.init',
}
exec { "zuul-reload":
command => '/etc/init.d/zuul reload',
require => File['/etc/init.d/zuul'],
refreshonly => true,
}
service { 'zuul':
name => 'zuul',
enable => true,
hasrestart => true,
require => File['/etc/init.d/zuul'],
}
}