Blog

Where we discuss our work, thoughts, and process

Drupal 7 Puppet Module

Drupal is a complex content management framework and requires a lot of time to install and configure by hand. To save our clients time and money, New Media Campaigns uses Vagrant and Puppet to automate Drupal 7 website installation and configuration. By installing and applying our Drupal 7 Puppet module, you can have a brand new Drupal 7 website up and running in just 5 minutes.

Vagrant is a tool to "create and configure lightweight, reproducible, and portable development environments." Vagrant uses Puppet manifest files to configure each development environment.

Assumptions

Our Drupal 7 Puppet module makes several assumptions:

You have these binaries: wget and unzip;

You have a MySQL database;

You have PHP 5.3 or newer with these extensions: apc, PDO, and pdo_mysql;

Installation

Download and unzip our Drupal 7 Puppet module (link below);

Move modules/drupal/ into your Puppet modules directory;

Add include drupal to your Puppet manifest;

Configure Drupal 7 Puppet module settings (see "Setup");

Setup

Before you can use our Drupal 7 Puppet module, you must configure its settings in modules/drupal/manifests/variables.pp. Check each setting and ensure its value is appropriate for your operating system. All settings are required.

Modules

Our Drupal 7 Puppet module has a defined list of Drupal modules that it will install. You can easily add or remove these modules in modules/drupal/manifests/init.pp:23.

Puppet Dependencies

It may be appropriate to define dependencies in your Puppet manifest so that our Drupal 7 Puppet module is applied only after a previous Puppet resource is available. We'll leave this to your discretion.

Contribute

Our Drupal 7 Puppet module is open source, and we welcome your contributions to help make it better! To contribute:

Fork our Drupal 7 Puppet module repository;

Create a new feature branch for each improvement;

Send a pull request from each feature branch to our master branch;

It is very important to separate new features or improvements into separate feature branches, and to send a pull request for each branch. This allows us to review and pull in new features or improvements individually.