Move Zuul to its own server.

Remove zuul from jenkins server.
Remove transitional zuul config.
Add an extra argument to gerrit-git-prep for the git site name, so that it
doesn't have to be the same as the review site.
Serve zuul git repos via apache.

Change-Id: I342032bcedf317c0f48ff89b773546eb2ccd08f8
Reviewed-on: https://review.openstack.org/17949
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: James E. Blair <corvus@inaugust.com>
This commit is contained in:
James E. Blair 2012-12-02 16:32:10 +00:00 committed by James E. Blair
parent 50d61393bc
commit 1cba754f04
4 changed files with 85 additions and 14 deletions

View File

@ -18,7 +18,7 @@ NAME=zuul
DAEMON=/usr/local/bin/zuul-server
PIDFILE=/var/run/$NAME/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
USER=jenkins
USER=zuul
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

View File

@ -1,16 +1,21 @@
# == Class: zuul
#
class zuul (
$vhost_name = $::fqdn,
$serveradmin = "webmaster@${::fqdn}",
$jenkins_server = '',
$jenkins_user = '',
$jenkins_apikey = '',
$gerrit_server = '',
$gerrit_user = '',
$zuul_ssh_private_key = '',
$url_pattern = '',
$status_url = "https://${::fqdn}/zuul/status",
$status_url = "https://${::fqdn}/",
$git_source_repo = 'https://github.com/openstack-ci/zuul.git',
$push_change_refs = false
) {
include apache
$packages = [
'python-webob',
'python-daemon',
@ -22,6 +27,19 @@ class zuul (
ensure => present,
}
user { 'zuul':
ensure => present,
home => '/home/zuul',
shell => '/bin/bash',
gid => 'zuul',
managehome => true,
require => Group['zuul'],
}
group { 'zuul':
ensure => present,
}
# A lot of things need yaml, be conservative requiring this package to avoid
# conflicts with other modules.
if ! defined(Package['python-yaml']) {
@ -71,40 +89,56 @@ class zuul (
# at some point, but that still has some problems.
file { '/etc/zuul/zuul.conf':
ensure => present,
owner => 'jenkins',
owner => 'zuul',
mode => '0400',
content => template('zuul/zuul.conf.erb'),
require => [
File['/etc/zuul'],
Package['jenkins'],
User['zuul'],
],
}
file { '/var/log/zuul':
ensure => directory,
owner => 'jenkins',
require => Package['jenkins'],
owner => 'zuul',
require => User['zuul'],
}
file { '/var/run/zuul':
ensure => directory,
owner => 'jenkins',
require => Package['jenkins'],
owner => 'zuul',
require => User['zuul'],
}
file { '/var/lib/zuul':
ensure => directory,
owner => 'jenkins',
require => Package['jenkins'],
owner => 'zuul',
require => User['zuul'],
}
file { '/var/lib/zuul/git':
ensure => directory,
owner => 'jenkins',
require => Package['jenkins'],
owner => 'zuul',
require => User['zuul'],
}
file { '/etc/init.d/zuul/':
file { '/var/lib/zuul/ssh':
ensure => directory,
owner => 'zuul',
group => 'zuul',
mode => '0500',
require => File['/var/lib/zuul'],
}
file { '/var/lib/zuul/ssh/id_rsa':
owner => 'zuul',
group => 'zuul',
mode => '0400',
require => File['/var/lib/zuul/ssh'],
content => $zuul_ssh_private_key,
}
file { '/etc/init.d/zuul':
ensure => present,
owner => 'root',
group => 'root',
@ -124,4 +158,21 @@ class zuul (
hasrestart => true,
require => File['/etc/init.d/zuul'],
}
apache::vhost { $vhost_name:
port => 443,
docroot => 'MEANINGLESS ARGUMENT',
priority => '50',
template => 'zuul/zuul.vhost.erb',
}
a2mod { 'rewrite':
ensure => present,
}
a2mod { 'proxy':
ensure => present,
}
a2mod { 'proxy_http':
ensure => present,
}
}

View File

@ -6,7 +6,7 @@ apikey=<%= jenkins_apikey %>
[gerrit]
server=<%= gerrit_server %>
user=<%= gerrit_user %>
sshkey=/var/lib/jenkins/.ssh/id_rsa
sshkey=/var/lib/zuul/ssh/id_rsa
[zuul]
layout_config=/etc/zuul/layout.yaml

20
templates/zuul.vhost.erb Normal file
View File

@ -0,0 +1,20 @@
<VirtualHost <%= scope.lookupvar("::zuul::vhost_name") %>:80>
ServerAdmin <%= scope.lookupvar("::zuul::serveradmin") %>
ErrorLog ${APACHE_LOG_DIR}/<%= scope.lookupvar("::zuul::vhost_name") %>-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/<%= scope.lookupvar("::zuul::vhost_name") %>-access.log combined
RewriteEngine on
RewriteRule /zuul/status http://127.0.0.1:8001/status [P]
RewriteRule / http://127.0.0.1:8001/status [P]
SetEnv GIT_PROJECT_ROOT /var/lib/zuul/git/
SetEnv GIT_HTTP_EXPORT_ALL
AliasMatch ^/p/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/lib/zuul/git/$1
AliasMatch ^/p/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/lib/zuul/git/$1
ScriptAlias /p/ /usr/lib/git-core/git-http-backend/
</VirtualHost>