Index: modules/roundup/manifests/init.pp |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/modules/roundup/manifests/init.pp |
@@ -0,0 +1,82 @@ |
+class roundup($tracker_name, $domain) inherits private::roundup { |
+ package {['roundup', 'python-mysqldb']: ensure => present} |
+ |
+ include nginx |
+ |
+ nginx::hostconfig {$domain: |
+ content => template('roundup/site.erb'), |
+ enabled => true |
+ } |
+ |
+ include postfix |
Wladimir Palant
2014/01/22 09:05:29
Why do we need that? It is already included in the
Felix Dahlke
2014/01/22 13:53:58
Done.
|
+ |
+ class {'mysql::server': |
+ config_hash => {'root_password' => $database_root_password} |
+ } |
Wladimir Palant
2014/01/22 09:05:29
Any particular reason why we are using MySQL rathe
Felix Dahlke
2014/01/22 13:53:58
Discourse doesn't support MySQL, that's why I went
|
+ |
+ mysql::db {'roundup': |
+ user => 'roundup', |
+ password => $database_password, |
+ host => 'localhost', |
+ grant => ['all'], |
+ require => Class['mysql::config'] |
+ } |
+ |
+ file {'/etc/roundup/roundup-server.ini': |
+ ensure => present, |
+ content => template('roundup/roundup-server.ini.erb'), |
+ require => Package['roundup'] |
+ } |
+ |
+ $tracker_home = "/var/lib/roundup/trackers/${tracker_name}" |
+ |
+ Exec { |
+ path => ['/bin', '/usr/bin'], |
+ } |
+ |
+ exec {'install': |
+ command => "roundup-admin -i ${tracker_home} install classic mysql", |
+ onlyif => "test ! -d ${tracker_home}", |
+ require => Package['roundup', 'python-mysqldb'] |
+ } |
+ |
+ file {"${tracker_home}/config.ini": |
+ ensure => present, |
+ content => template('roundup/config.ini.erb'), |
+ require => Exec['install'] |
+ } |
+ |
+ $db_path = "${tracker_home}/db" |
Wladimir Palant
2014/01/22 09:05:29
Nit: move this further down where it is used?
Felix Dahlke
2014/01/22 13:53:58
Done.
|
+ |
+ service {'roundup': |
+ ensure => running, |
+ hasstatus => false, |
+ require => Package['roundup'] |
Wladimir Palant
2014/01/22 09:05:29
Doesn't that require config.ini or at least roundu
Felix Dahlke
2014/01/22 13:53:58
Yes, both apparently. Added a notify to those.
|
+ } |
+ |
+ # The following wrapper script is a hack that solves two problems: |
+ # 1. roundup-admin initialise insists on user input when initialising the |
+ # MySQL database. |
+ # 2. Puppet commands can apparently not do input redirection, hence the |
+ # wrapper script. It doesn't seem to be possible to create temporary |
+ # files with Puppet either, so it has to stick around. |
+ |
+ $roundup_initialise_wrapper = '/root/roundup-initialise' |
+ |
+ file {$roundup_initialise_wrapper: |
+ content => "echo y | roundup-admin -i ${tracker_home} initialise ${admin_password}" |
+ } |
+ |
+ exec {'initialise': |
+ command => "bash ${roundup_initialise_wrapper}", |
Wladimir Palant
2014/01/22 09:05:29
Why use a script file? "bash -c 'echo y | roundup-
Felix Dahlke
2014/01/22 13:53:58
Well that's embarrassing, didn't think of -c. Done
|
+ onlyif => "test ! -d ${db_path}/lock", |
+ require => [Package['roundup'], File[$roundup_initialise_wrapper], |
+ Mysql::Db['roundup']], |
+ notify => File[$db_path] |
+ } |
+ |
+ file {$db_path: |
+ owner => 'roundup', |
+ notify => Service['roundup'] |
+ } |
+} |