class drupal( $folder = hiera('drupal::folder', '/var/www/data/drupal'), $sites_folder = hiera('drupal::sites_folder', '/var/sites'), $www_folder = hiera('drupal::www_folder', '/var/www/data') ) { # We use drupal source from upstream package { "drupal6": ensure => absent, } # Needed packages package { [ "drush", "php5-gd", "php5-imagick" ]: ensure => installed, } # Drush config folder file { '/etc/drush': ensure => directory, owner => root, group => root, mode => 0644, } # Drush default configuration file { '/etc/drush/drushrc.php': ensure => present, owner => root, group => root, mode => 0644, source => 'puppet:///modules/drupal/drushrc.php', require => File['/etc/drush'], } # Drupal management script file { "/usr/local/sbin/drupal": ensure => present, content => template('drupal/drupal.sh.erb'), owner => root, group => root, mode => 755, } # Run drupal cron cron { "drupal-cron": command => "/usr/local/sbin/drupal cron &> /dev/null", user => root, hour => "*/1", minute => "15", ensure => present, require => File['/usr/local/sbin/drupal'], } # Keep themes and modules up-to-date cron { "drupal-update": command => "/usr/local/sbin/drupal cron-update", user => root, # Run once a week after security releases (usually on Wednesdays) weekday => 5, hour => "02", minute => "30", ensure => present, } cron { "drupal-make-6": command => "/usr/local/sbin/drupal make 6", user => root, # Run once a week to ensure the server has all dependencies weekday => 4, hour => "02", minute => "30", ensure => present, require => File['/usr/local/sbin/drupal', '/usr/local/share/drupal/drupal6.make', '/usr/local/share/drupal/themes6.make'], } cron { "drupal-make-7": command => "/usr/local/sbin/drupal make 7", user => root, # Run once a week to ensure the server has all dependencies weekday => 4, hour => "02", minute => "30", ensure => present, require => File['/usr/local/sbin/drupal', '/usr/local/share/drupal/drupal7.make', '/usr/local/share/drupal/themes7.make'], } # Drupal shared folder file { "/usr/local/share/drupal": ensure => directory, owner => root, group => root, mode => 755, } # Drupal 6 makefile file { "/usr/local/share/drupal/drupal6.make": ensure => present, owner => root, group => root, mode => 644, source => "puppet:///modules/drupal/drupal6.make", require => File['/usr/local/share/drupal'], } # Drupal 7 makefile file { "/usr/local/share/drupal/drupal7.make": ensure => present, owner => root, group => root, mode => 644, source => "puppet:///modules/drupal/drupal7.make", require => File['/usr/local/share/drupal'], } # Drupal 6 theme makefile file { "/usr/local/share/drupal/themes6.make": ensure => present, owner => root, group => root, mode => 644, source => "puppet:///modules/drupal/themes6.make", require => File['/usr/local/share/drupal'], } # Drupal 7 theme makefile file { "/usr/local/share/drupal/themes7.make": ensure => present, owner => root, group => root, mode => 644, source => "puppet:///modules/drupal/themes7.make", require => File['/usr/local/share/drupal'], } # See https://drupal.org/SA-CORE-2013-003 file { "/tmp/.htaccess": ensure => present, owner => root, group => root, mode => 644, source => "puppet:///modules/drupal/htaccess", } file { [ '/var/www/data/drupal-6/backup', '/var/www/data/drupal-7/backup' ]: ensure => absent, recurse => true, force => true, backup => false, } }