a4f1a267ac
Previously you could not use the Jenkins module to go from fresh host to running jenkins. There were two problems. 1. jenkins::master does not explicitly create a jenkins user which is required by Zuul. Instead the jenkins deb package creates the users. Zuul File resources that need the jenkins user should require the jenkins package. 2. jenkins::master did not install Bazaar but attempted to run a service that depended on bzr. Correct these two errors (require jenkins package and remove bzr service). Change-Id: Ib2d6f58fbcd456781f10cf2ceefc11503d6f92f2 Reviewed-on: https://review.openstack.org/13926 Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com> Reviewed-by: James E. Blair <corvus@inaugust.com> Approved: Clark Boylan <clark.boylan@gmail.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Tested-by: Jenkins
114 lines
2.5 KiB
Puppet
114 lines
2.5 KiB
Puppet
class zuul (
|
|
$jenkins_server,
|
|
$jenkins_user,
|
|
$jenkins_apikey,
|
|
$gerrit_server,
|
|
$gerrit_user,
|
|
$url_pattern,
|
|
$status_url="https://${::fqdn}/zuul/status",
|
|
$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"], Package['jenkins']]
|
|
}
|
|
|
|
file { "/var/log/zuul":
|
|
ensure => "directory",
|
|
owner => 'jenkins',
|
|
require => Package['jenkins']
|
|
}
|
|
|
|
file { "/var/run/zuul":
|
|
ensure => "directory",
|
|
owner => 'jenkins',
|
|
require => Package['jenkins']
|
|
}
|
|
|
|
file { "/var/lib/zuul":
|
|
ensure => "directory",
|
|
owner => 'jenkins',
|
|
require => Package['jenkins']
|
|
}
|
|
|
|
file { "/var/lib/zuul/git":
|
|
ensure => "directory",
|
|
owner => 'jenkins',
|
|
require => Package['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'],
|
|
}
|
|
|
|
}
|