Index: modules/rietveld/manifests/init.pp |
=================================================================== |
--- a/modules/rietveld/manifests/init.pp |
+++ b/modules/rietveld/manifests/init.pp |
@@ -1,129 +1,117 @@ |
class rietveld( |
$domain, |
$certificate, |
$private_key, |
$is_default = false, |
$secret_key = hiera('rietveld::secret_key', ''), |
- $fixtures = hiera('rietveld::fixtures', {}), |
- $database = hiera('rietveld::database', { |
- 'engine' => 'sqlite3', |
- 'name' => 'dev.db', |
- }), |
+ $admins = hiera('rietveld::admins', []), |
+ $oauth2_client_id = hiera('rietveld::oauth2_client_id', ''), |
+ $oauth2_client_secret = hiera('rietveld::oauth2_client_secret', ''), |
) { |
include nginx |
- $django_home = '/home/rietveld/django-gae2django' |
- $rietveld_home = "${django_home}/examples/rietveld" |
+ $rietveld_home = '/opt/rietveld' |
Exec { |
path => '/usr/bin:/usr/sbin:/bin:/usr/local/bin', |
} |
nginx::hostconfig {$domain: |
source => 'puppet:///modules/rietveld/site.conf', |
is_default => $is_default, |
certificate => $certificate, |
private_key => $private_key, |
log => 'access_log_codereview' |
} |
- package {['python-django', 'make', 'patch', 'gunicorn']: ensure => present} |
+ package {['wget', 'unzip', 'git', 'make', 'patch', 'subversion']: ensure => present} |
user {'rietveld': |
ensure => present, |
comment => 'User of the rietveld installation', |
home => '/home/rietveld', |
managehome => true |
} |
- exec {'get_rietveld': |
- command => "hg clone https://hg.adblockplus.org/gae2django/ ${django_home}/", |
- require => Package['mercurial'], |
- user => rietveld, |
- onlyif => "test ! -d ${django_home}", |
+ exec {'download_appengine': |
+ # TODO: We cannot rely on this URL to stay fixed |
+ command => 'wget -O /home/rietveld/google_appengine.zip https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.21.zip', |
+ user => 'root', |
+ creates => '/home/rietveld/google_appengine.zip', |
+ require => [User['rietveld'], Package['wget']], |
} |
- file {"${rietveld_home}/Makefile": |
- ensure => file, |
- owner => rietveld, |
- require => Exec['get_rietveld'], |
- source => 'puppet:///modules/rietveld/Makefile', |
+ exec {'install_appengine': |
+ command => 'unzip /home/rietveld/google_appengine.zip -d /opt', |
+ user => 'root', |
+ creates => '/opt/google_appengine', |
+ require => [Exec['download_appengine'], Package['unzip']], |
} |
- file {"${rietveld_home}/settings.py": |
- ensure => file, |
- owner => rietveld, |
- require => Exec['get_rietveld'], |
- content => template('rietveld/settings.py.erb'), |
+ exec {'get_rietveld': |
+ command => "git clone https://github.com/rietveld-codereview/rietveld.git $rietveld_home && cd $rietveld_home && git reset --HARD 87257f5", |
+ user => 'root', |
+ require => Package['git'], |
+ creates => $rietveld_home, |
} |
- exec {'install_rietveld': |
- command => "make all", |
- cwd => "${rietveld_home}", |
- user => rietveld, |
- require => [ |
- File["${rietveld_home}/Makefile"], |
- File["${rietveld_home}/settings.py"]], |
- onlyif => "test ! -e ${$rietveld_home}/gae2django", |
+ exec {'setup_rietveld': |
+ command => 'make update_revision mapreduce', |
+ cwd => $rietveld_home, |
+ user => root, |
+ require => [Exec['get_rietveld'], Package['make', 'patch', 'subversion']], |
+ creates => "${rietveld_home}/mapreduce", |
} |
- file {'/etc/init/rietveld.conf': |
+ file {'/opt/wrappers': |
+ ensure => directory, |
+ owner => 'root', |
+ } |
+ |
+ file {'wrapper.py': |
+ path => '/opt/wrappers/wrapper.py', |
ensure => file, |
- owner => root, |
- source => 'puppet:///modules/rietveld/rietveld.conf', |
+ owner => 'root', |
+ mode => '0755', |
+ source => 'puppet:///modules/rietveld/wrapper.py', |
notify => Service['rietveld'], |
} |
- file {'/etc/init.d/rietveld': |
+ file {'dev_appserver.py': |
+ path => '/opt/wrappers/dev_appserver.py', |
ensure => link, |
- target => '/lib/init/upstart-job', |
- require => [File['/etc/init/rietveld.conf'], Exec['install_rietveld']] |
+ require => File['wrapper.py'], |
+ target => '/opt/wrappers/wrapper.py', |
} |
- service {'rietveld': |
- ensure => running, |
- hasstatus => false, |
- require => [Package['gunicorn'], File['/etc/init.d/rietveld']] |
+ file {'_python_runtime.py': |
+ path => '/opt/wrappers/_python_runtime.py', |
+ ensure => link, |
+ require => File['wrapper.py'], |
+ target => '/opt/wrappers/wrapper.py', |
} |
- file {"${rietveld_home}/fixtures": |
+ file {'/var/lib/rietveld': |
ensure => directory, |
owner => 'rietveld', |
- mode => 0750, |
- require => Exec['install_rietveld'], |
} |
- define fixture( |
- $ensure = present, |
- $source = undef, |
- $content = undef, |
- ) { |
- |
- # Note that $script will return EXIT_SUCCESS when the .type is |
- # not recognized - although no action is done then. Thus we enforce |
- # JSON here, which is the default for command "dumpdata" anyway: |
- $script = "${rietveld::rietveld_home}/manage.py" |
- $destination = "${rietveld::rietveld_home}/fixtures/$name.json" |
- |
- exec {$destination: |
- command => shellquote($script, 'loaddata', $destination), |
- cwd => $rietveld::rietveld_home, |
- refreshonly => true, |
- user => 'rietveld', |
- } |
- |
- file {$destination: |
- ensure => $ensure, |
- content => $content, |
- source => $source, |
- owner => 'rietveld', |
- mode => 0640, |
- notify => $ensure ? { |
- present => Exec[$destination], |
- default => [], |
- } |
- } |
+ file {'config.ini': |
+ path => '/var/lib/rietveld/config.ini', |
+ ensure => file, |
+ owner => 'root', |
+ content => template('rietveld/config.ini.erb'), |
+ notify => Service['rietveld'], |
} |
- create_resources(rietveld::fixture, $fixtures) |
+ customservice {'rietveld': |
+ command => "/opt/wrappers/dev_appserver.py \ |
+ --enable_sendmail --skip_sdk_update_check |
+ --port 8080 ${rietveld_home}", |
+ user => 'rietveld', |
+ require => [ |
+ Exec['install_appengine', 'setup_rietveld'], |
+ File['dev_appserver.py', '_python_runtime.py', 'config.ini'], |
+ ], |
+ } |
} |