nubis/puppet/wiki.pp (133 lines of code) (raw):
# Install mysql client libraries
include mysql::client
package { 'php-mysql':
ensure => 'latest'
}
package { 'php-mbstring':
ensure => 'latest'
}
package { 'graphviz':
ensure => 'latest'
}
package { 'php-memcache':
ensure => 'latest'
}
package { 'php-intl':
ensure => 'latest'
}
package { 'php-gd':
ensure => 'latest'
}
package { 'php-mail':
ensure => 'latest'
}
package { 'pandoc':
ensure => 'latest'
}
package { 'librsvg2-bin':
ensure => 'latest'
}
package { 'imagemagick':
ensure => 'latest'
}
package { 'git':
ensure => 'latest'
}
# For backups to S3
package { 'awscli':
ensure => 'latest'
}
# Generate some random secrets for mediawiki on boot and if necessary migrate the DB
file { '/etc/nubis.d/wiki-onboot':
ensure => file,
owner => root,
group => root,
mode => '0755',
source => 'puppet:///nubis/files/wiki-onboot',
}
# Set up cache directory
file { '/var/tmp/wikimo-cache':
ensure => directory,
owner => www-data,
group => www-data,
mode => '0750',
}
# Log
file { '/var/log/wiki.log':
ensure => file,
owner => www-data,
group => www-data,
mode => '0750',
}
# Set permissions for Widgets compiled templates (XXX: Could it be precompiled somehow?)
file { "/var/www/${project_name}/core/extensions/Widgets/compiled_templates":
ensure => directory,
owner => www-data,
group => www-data,
mode => '0750',
require => Exec['mv_extensions'],
}
# Add robots.txt to document root
file { "/var/www/${project_name}/core/robots.txt":
ensure => file,
owner => www-data,
group => www-data,
source => "puppet:///nubis/files/robots.txt",
}
# Link files that aren't in the core repo to where they need to be
file { "/var/www/${project_name}/core/LocalSettings.php":
ensure => 'link',
target => "/var/www/${project_name}/LocalSettings.php",
}
file { "/var/www/${project_name}/core/composer.local.json":
ensure => 'link',
target => "/var/www/${project_name}/composer.json",
}
file { "/var/www/${project_name}/core/contribute.json":
ensure => 'link',
target => "/var/www/${project_name}/contribute.json",
}
file { "/var/www/${project_name}/vendor":
ensure => 'link',
target => "/var/www/${project_name}/core/vendor",
}
exec { 'mv_extensions':
provider => 'shell',
command => 'mv extensions/* core/extensions/',
cwd => "/var/www/${project_name}",
}
exec { 'mv_skins':
provider => 'shell',
command => 'mv skins/* core/skins/',
cwd => "/var/www/${project_name}",
}
# Links to EFS mount dirs
file { "/var/www/${project_name}/images":
ensure => 'link',
target => "/data/${project_name}/images",
}
file { "/var/www/${project_name}/php_sessions":
ensure => 'link',
target => "/data/${project_name}/php_sessions",
}
file { "/var/www/${project_name}/core/extensions/Bugzilla/charts":
ensure => 'link',
target => "/data/${project_name}/Bugzilla_charts",
}
## Install PHP composer extensions
exec { 'composer':
command => 'php ../tools/composer.phar install --no-dev --verbose',
cwd => "/var/www/${project_name}/core",
path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
environment => [
'HOME=/tmp',
],
require => [
Exec['mv_extensions'],
File["/var/www/${project_name}/core/composer.local.json"],
File["/var/www/${project_name}/vendor"],
Class['apache::mod::php'],
],
}
# Hot/Monkey Patch MWDebug.php to not spew errors
file { '/tmp/MWDebug.php.patch':
ensure => file,
owner => root,
group => root,
mode => '0755',
source => 'puppet:///nubis/files/MWDebug.php.patch',
}
exec { 'debug_patch':
command => '/usr/bin/patch MWDebug.php /tmp/MWDebug.php.patch',
cwd => "/var/www/${project_name}/core/includes/debug",
require => File['/tmp/MWDebug.php.patch'],
}