| LEFT | RIGHT |
| 1 # == Class: hgweb | 1 # == Class: hgweb |
| 2 # | 2 # |
| 3 # A hgweb server setup. | 3 # A hgweb server setup. |
| 4 # | 4 # |
| 5 # === Parameters: | 5 # === Parameters: |
| 6 # | 6 # |
| 7 # [*domain*] | 7 # [*domain*] |
| 8 # The auhority part of the URL the instance is associated with. | 8 # The auhority part of the URL the instance is associated with. |
| 9 # | 9 # |
| 10 # [*is_default*] | 10 # [*is_default*] |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 # | 24 # |
| 25 # === Examples: | 25 # === Examples: |
| 26 # | 26 # |
| 27 # class {'hgweb': | 27 # class {'hgweb': |
| 28 # domain => 'localhost', | 28 # domain => 'localhost', |
| 29 # } | 29 # } |
| 30 # | 30 # |
| 31 class hgweb( | 31 class hgweb( |
| 32 $domain, | 32 $domain, |
| 33 $is_default = false, | 33 $is_default = false, |
| 34 $certificate = undef, | 34 $certificate = hiera('hgweb::certificate', 'undef'), |
| 35 $private_key = undef, | 35 $private_key = hiera('hgweb::private_key', 'undef'), |
| 36 $hgaccess = 'puppet:///modules/hgweb/hgaccess', | 36 $hgaccess = 'puppet:///modules/hgweb/hgaccess', |
| 37 ) { | 37 ) { |
| 38 | 38 |
| 39 include ssh, nginx | 39 include ssh, nginx |
| 40 | 40 |
| 41 $required_packages = ['mercurial-common', 'python-flup', 'spawn-fcgi'] | 41 $required_packages = ['mercurial-common', 'python-flup', 'spawn-fcgi'] |
| 42 ensure_packages($required_packages) | 42 ensure_packages($required_packages) |
| 43 | 43 |
| 44 class {'sitescripts': | 44 class {'sitescripts': |
| 45 sitescriptsini_content => template('hgweb/sitescripts.ini.erb'), | 45 sitescriptsini_content => template('hgweb/sitescripts.ini.erb'), |
| 46 } | 46 } |
| 47 | 47 |
| 48 | 48 |
| 49 user {'hg': | 49 user {'hg': |
| 50 comment => 'hgweb', | 50 comment => 'hgweb', |
| 51 groups => ['www-data'], | 51 groups => ['www-data'], |
| 52 home => '/home/hg', | 52 home => '/home/hg', |
| 53 managehome => true, | 53 managehome => true, |
| 54 shell => '/bin/bash', | 54 shell => '/bin/bash', |
| 55 } | 55 } |
| 56 | |
| 57 | 56 |
| 58 file {'/home/hg/.ssh': | 57 file {'/home/hg/.ssh': |
| 59 ensure => 'directory', | 58 ensure => 'directory', |
| 60 group => 'hg', | 59 group => 'hg', |
| 61 mode => 0750, | 60 mode => 0750, |
| 62 owner => 'hg', | 61 owner => 'hg', |
| 63 require => User['hg'], | 62 require => User['hg'], |
| 64 } | 63 } |
| 65 | 64 |
| 66 file {'/home/hg/web': | 65 file {'/home/hg/web': |
| (...skipping 19 matching lines...) Expand all Loading... |
| 86 content => template('hgweb/hgrc.erb'), | 85 content => template('hgweb/hgrc.erb'), |
| 87 group => 'hg', | 86 group => 'hg', |
| 88 mode => 0644, | 87 mode => 0644, |
| 89 owner => 'hg', | 88 owner => 'hg', |
| 90 require => [ | 89 require => [ |
| 91 Class['sitescripts'], | 90 Class['sitescripts'], |
| 92 Exec['hgaccess_init'], | 91 Exec['hgaccess_init'], |
| 93 ], | 92 ], |
| 94 } | 93 } |
| 95 | 94 |
| 96 | |
| 97 exec {'hgaccess_init': | 95 exec {'hgaccess_init': |
| 98 command => 'hg init .', | 96 command => 'hg init .', |
| 99 creates => '/home/hg/web/hgaccess/.hg', | 97 creates => '/home/hg/web/hgaccess/.hg', |
| 100 cwd => '/home/hg/web/hgaccess', | 98 cwd => '/home/hg/web/hgaccess', |
| 101 logoutput => true, | 99 logoutput => true, |
| 102 path => '/usr/local/bin:/usr/bin:/bin', | 100 path => '/usr/local/bin:/usr/bin:/bin', |
| 103 require => File['/home/hg/web/hgaccess'], | 101 require => File['/home/hg/web/hgaccess'], |
| 104 user => 'hg', | 102 user => 'hg', |
| 105 } | 103 } |
| 106 | 104 |
| 107 exec {'hgaccess_commit': | 105 exec {'hgaccess_commit': |
| 108 command => 'hg add . && hg commit -u Puppet -m "Initial commit"', | 106 command => 'hg add . && hg commit -u Puppet -m "Initial commit"', |
| 109 creates => '/home/hg/.ssh/authorized_keys', | 107 creates => '/home/hg/.ssh/authorized_keys', |
| 110 cwd => '/home/hg/web/hgaccess', | 108 cwd => '/home/hg/web/hgaccess', |
| 111 environment => ['PYTHONPATH=/opt/sitescripts'], | 109 environment => ['PYTHONPATH=/opt/sitescripts'], |
| 112 logoutput => true, | 110 logoutput => true, |
| 113 path => '/usr/local/bin:/usr/bin:/bin', | 111 path => '/usr/local/bin:/usr/bin:/bin', |
| 114 require => [ | 112 require => [ |
| 115 File['/home/hg/web/hgaccess/.hg/hgrc'], | 113 File['/home/hg/web/hgaccess/.hg/hgrc'], |
| 116 File['/home/hg/.ssh'], | 114 File['/home/hg/.ssh'], |
| 117 ], | 115 ], |
| 118 user => 'hg', | 116 user => 'hg', |
| 119 } | 117 } |
| 120 | 118 |
| 121 | |
| 122 concat::fragment {'sshd_user_hg': | 119 concat::fragment {'sshd_user_hg': |
| 123 content => 'Match User hg | 120 content => 'Match User hg |
| 124 AllowTcpForwarding no | 121 AllowTcpForwarding no |
| 125 X11Forwarding no | 122 X11Forwarding no |
| 126 AllowAgentForwarding no | 123 AllowAgentForwarding no |
| 127 GatewayPorts no | 124 GatewayPorts no |
| 128 ForceCommand cd ~/web && PYTHONPATH=/opt/sitescripts hg-ssh $HGREPOS | 125 ForceCommand cd ~/web && PYTHONPATH=/opt/sitescripts hg-ssh $HGREPOS |
| 129 ', | 126 ', |
| 130 order => '99', | 127 order => '99', |
| 131 target => 'sshd_config', | 128 target => 'sshd_config', |
| 132 } | 129 } |
| 133 | |
| 134 | 130 |
| 135 file {'/etc/hgweb.ini': | 131 file {'/etc/hgweb.ini': |
| 136 mode => 644, | 132 mode => 644, |
| 137 require => Package[$required_packages], | 133 require => Package[$required_packages], |
| 138 source => 'puppet:///modules/hgweb/hgweb.ini', | 134 source => 'puppet:///modules/hgweb/hgweb.ini', |
| 139 } | 135 } |
| 140 | 136 |
| 141 file {'/opt/hgweb.fcgi': | 137 file {'/opt/hgweb.fcgi': |
| 142 mode => 755, | 138 mode => 755, |
| 143 require => File['/etc/hgweb.ini'], | 139 require => File['/etc/hgweb.ini'], |
| (...skipping 18 matching lines...) Expand all Loading... |
| 162 enable => true, | 158 enable => true, |
| 163 ensure => 'running', | 159 ensure => 'running', |
| 164 hasrestart => true, | 160 hasrestart => true, |
| 165 hasstatus => false, | 161 hasstatus => false, |
| 166 pattern => 'hgweb.fcgi', | 162 pattern => 'hgweb.fcgi', |
| 167 require => File['/etc/init.d/hgweb'], | 163 require => File['/etc/init.d/hgweb'], |
| 168 subscribe => File['/etc/hgweb.ini'], | 164 subscribe => File['/etc/hgweb.ini'], |
| 169 } | 165 } |
| 170 | 166 |
| 171 nginx::hostconfig {$domain: | 167 nginx::hostconfig {$domain: |
| 172 certificate => $certificate, | 168 certificate => $certificate ? { |
| 173 content => 'puppet:///modules/hgweb/nginx.conf', | 169 'undef' => undef, |
| 170 default => $certificate, |
| 171 }, |
| 172 source => 'puppet:///modules/hgweb/nginx.conf', |
| 174 is_default => $is_default, | 173 is_default => $is_default, |
| 175 log => 'access_log_hg', | 174 log => 'access_log_hg', |
| 176 private_key => $private_key, | 175 private_key => $private_key ? { |
| 176 'undef' => undef, |
| 177 default => $private_key, |
| 178 }, |
| 177 } | 179 } |
| 178 } | 180 } |
| LEFT | RIGHT |