Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 class discourse( | 1 class discourse( |
2 $domain, | 2 $domain, |
3 $certificate, | 3 $certificate, |
4 $private_key, | 4 $private_key, |
5 $site_settings, | 5 $site_settings, |
6 $is_default = false, | 6 $is_default = false, |
7 $admins = hiera('discourse::admins', []) | 7 $admins = hiera('discourse::admins', []) |
8 ) { | 8 ) { |
9 | 9 |
10 apt::source {'docker': | 10 apt::source {'docker': |
11 location => 'https://apt.dockerproject.org/repo', | 11 location => 'https://apt.dockerproject.org/repo', |
12 release => 'ubuntu-precise', | 12 release => 'ubuntu-precise', |
13 repos => 'main', | 13 repos => 'main', |
14 key => '58118E89F3A912897C070ADBF76221572C52609D', | 14 key => '58118E89F3A912897C070ADBF76221572C52609D', |
15 key_content => template('discourse/dockersource.gpg.key'), | 15 key_content => template('discourse/dockersource.gpg.key'), |
16 include_src => false, | 16 include_src => false, |
17 } | 17 } |
18 | 18 |
19 package {'docker-engine': | 19 package {'docker-engine': |
20 # This version is recommended by Discourse, version 1.11 seems incompatible | 20 ensure => '1.11.0-0~precise', |
21 # to Ubuntu 12.04 | |
22 ensure => '1.8.0-0~precise', | |
23 require => Apt::Source['docker'], | 21 require => Apt::Source['docker'], |
24 } | 22 } |
25 | 23 |
26 package {'git': | 24 package {'git': |
27 ensure => present, | 25 ensure => present, |
Wladimir Palant
2016/07/08 15:46:38
Note that this installs git 1.7.9.5 which is lower
| |
28 } | 26 } |
29 | 27 |
30 service {'docker': | 28 service {'docker': |
31 ensure => running, | 29 ensure => running, |
32 require => Package['docker-engine'], | 30 require => Package['docker-engine'], |
33 } | 31 } |
34 | 32 |
35 file {'/var/discourse': | 33 file {'/var/discourse': |
36 ensure => directory, | 34 ensure => directory, |
37 mode => 755, | 35 mode => 755, |
38 owner => root, | 36 owner => root, |
39 group => root | 37 group => root |
40 } | 38 } |
41 | 39 |
42 exec {'fetch-discourse-docker': | 40 exec {'fetch-discourse-docker': |
43 command => "hg clone https://hg.adblockplus.org/discourse_docker /var/discou rse", | 41 command => "git clone https://github.com/discourse/discourse_docker.git /var /discourse", |
44 path => ["/usr/bin/", "/bin/"], | 42 path => ["/usr/bin/", "/bin/"], |
45 user => root, | 43 user => root, |
46 timeout => 0, | 44 timeout => 0, |
47 require => [Package['mercurial'], File['/var/discourse']], | 45 require => [Package['git'], File['/var/discourse']], |
48 onlyif => "test ! -d /var/discourse/.hg" | 46 unless => "test -d /var/discourse/.git" |
49 } | 47 } |
50 | 48 |
51 file {'/var/discourse/containers/app.yml': | 49 file {'/var/discourse/containers/app.yml': |
52 ensure => file, | 50 ensure => file, |
53 mode => 600, | 51 mode => 600, |
54 owner => root, | 52 owner => root, |
55 group => root, | 53 group => root, |
56 content => template('discourse/app.yml.erb'), | 54 content => template('discourse/app.yml.erb'), |
57 require => Exec['fetch-discourse-docker'], | 55 require => Exec['fetch-discourse-docker'], |
58 } | 56 } |
59 | 57 |
60 exec {'rebuild': | 58 exec {'rebuild': |
61 command => '/var/discourse/launcher rebuild app --skip-prereqs', | 59 command => '/var/discourse/launcher rebuild app --skip-prereqs', |
62 user => root, | 60 user => root, |
63 subscribe => File['/var/discourse/containers/app.yml'], | 61 subscribe => File['/var/discourse/containers/app.yml'], |
64 refreshonly => true, | 62 refreshonly => true, |
65 logoutput => 'on_failure', | 63 logoutput => 'on_failure', |
66 timeout => 0, | 64 timeout => 0, |
67 require => [Exec['fetch-discourse-docker'], | 65 require => [Exec['fetch-discourse-docker'], |
68 Service['docker'], | 66 Service['docker'], |
69 Package['git']], | 67 Package['git']], |
70 } | 68 } |
71 | 69 |
72 exec {'start': | 70 exec {'start': |
73 command => '/var/discourse/launcher start app --skip-prereqs', | 71 command => '/var/discourse/launcher start app --skip-prereqs', |
74 user => root, | 72 user => root, |
75 subscribe => Exec['rebuild'], | 73 logoutput => 'on_failure', |
Wladimir Palant
2016/07/08 15:46:38
I still need to verify that this is working correc
Wladimir Palant
2016/07/10 16:42:12
I verified that the container will always get star
| |
76 refreshonly => true, | 74 require => Exec['rebuild'], |
77 } | 75 } |
78 | 76 |
79 class {'nginx': | 77 class {'nginx': |
80 worker_connections => 500 | 78 worker_connections => 500 |
81 } | 79 } |
82 | 80 |
83 nginx::hostconfig {$domain: | 81 nginx::hostconfig {$domain: |
84 source => 'puppet:///modules/discourse/site.conf', | 82 source => 'puppet:///modules/discourse/site.conf', |
85 is_default => $is_default, | 83 is_default => $is_default, |
86 certificate => $certificate, | 84 certificate => $certificate, |
87 private_key => $private_key, | 85 private_key => $private_key, |
88 log => 'access_log_intraforum' | 86 log => 'access_log_intraforum' |
89 } | 87 } |
90 } | 88 } |
LEFT | RIGHT |