
The $site_root parameter must be set in order for the file resource ensuring it to work. However, the best default for it depends on the $site_name and $site_vhosts_root parameter. Class parameter defaults behave strangely if they depend on another class parameter: they take on the value of whatever the user has set, not the default value. So if we want the default value of $site_root to be "${site_vhosts_root}/${site_name}", and we want it to be acceptable to use the default value of 'www.example.com' as the site name, then we have to set the default in the body of the class, not in the parameters list. The same is true for the $site_docroot parameter. This patch leaves the official default of $site_root as undef but conditionally sets a preferred default of "${site_vhosts_root}/${site_name}" in the body of the class. Since variables in puppet are immutable we need to assign this value to a new variable and fix the references to this variable throughout hte module. This patch changes the official default of $site_docroot from "${site_root}/w" to undef, because that default would have different behavior depending on whether the user had set $site_root or not. We then conditionally set it to the right default in the body of the class and update references to that variable. Also changed the Directory key for the docroot in the vhost template to refer to the $docroot parameter passed in to the httpd::vhost type rather than the $_site_docroot value from the class, which evaluates to the same value but makes the Directory tag consistent with the Docroot declaration above it. Change-Id: Iaed65b20816c0b4f6fd34f7e0ef07f906bb9750e
License
Copyright 2013 OpenStack Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Drupal module for Puppet
This module manages Drupal on Linux distros.
Description
Usage
drupal
Install and configure a Drupal site, including Apache vhost entry, MySQL database, Pear and drush cli tool.
Example:
class { 'drupal':
site_name => 'www.example.com',
site_docroot => '/srv/vhosts/example.com',
site_mysql_host => 'localhost',
site_mysql_user => 'myuser',
site_mysql_password => 's3cretPassw0rd',
site_mysql_database => 'example',
site_vhost_root => '/srv/vhosts',
site_staging_tarball => 'example-dev.tar.gz',
site_admin_password => 'adminadmin',
site_build_reponame => 'example-master',
site_makefile => 'build-example.make',
site_repo_url => 'https://git.example.com/repo/example',
site_profile => 'standard',
site_base_url => 'http://example.com',
...
}
Build process:
- build a distribution tarball (drupal::distbuild)
- deploy a site from scratch (drupal:sitedeploy)
drupal::distbuild
Build a distribution from a git repository, using drush make command. Check out the git repository under site_sandbox_root and compare head commit with latest deployed version. If version is different, clean up the site_deploy_flagfile, and drush make building process start. The flag file site_build_flagfile always contains the version of built repository.
Example:
distbuild { "distbuild-${site_name}":
site_sandbox_root => '/srv/sandbox',
site_staging_root => '/srv/sandbox/release',
site_repo_url => 'https://git.example.com/repo/example',
site_build_repo_name => 'example-master',
site_staging_tarball => 'example-dev.tar.gz',
site_build_flagfile => '/tmp/drupal-site-build',
site_deploy_flagfile => '/tmp/drupal-site-deploy',
site_makefile => 'build-example.make',
...
}
Directory structure: /srv/sandbox/example-master local git repository clone build-example.make drupal-org-core.make drupal-org.make example.info example.install example.profile /srv/sandbox/release distribution tarball directory example-dev.tar.gz
Flag files: /tmp/drupal-site-build Holds the version of information of latest successfull build # pack-refs with: peeled df23bc9510ac8406c33f896f824997a79d20d27d refs/remotes/origin/master
/tmp/drupal-site-deploy If missing, drupal:sitedeploy triggers a new deployment process.
drupal:sitedeploy
Deploy and install a new site based on a previously built distribution tarball, using drupal_site_deploy.sh script.
Example:
sitedeploy { "sitedeploy-${site_name}":
site_docroot => '/srv/vhosts/example.com',
site_staging_root => '/srv/sandbox/release',
site_staging_tarball => 'example-dev.tar.gz',
site_deploy_flagfile => '/tmp/drupal-site-deploy',
site_name => $site_name,
site_profile => 'standard',
site_mysql_host => 'localhost',
site_mysql_user => 'myuser',
site_mysql_password => 's3cretPassw0rd',
site_mysql_database => 'example',
site_admin_password => 'adminadmin',
site_base_url => 'http://example.com',
...
}
Directory structure: /srv/vhosts/example.com drupal site root /etc/drupal example.com.config drupal site deploy script configuration