SlideShare a Scribd company logo
Managing and deploying
configuration
...with exportables and the Features module




http://drupal.org/project/features
Jeff Miccolis,
Development Seed
We build websites
We build web apps
“...we decided to host our Drupal environment
using virtualization. This allowed us to build and
test the Drupal environment locally and easily
ship the entire virtual machine to the
production hosting platform.”

19 Dec 2006


 http://www.ibm.com/developerworks/ibm/library/i-osource12/
Using open source
software to design,
develop, and deploy a
collaborative Web site, Part
12: Hosting and deploying

http://www.ibm.com/developerworks/ibm/library/i-osource12/
This presentation is about
making Drupal better at
dealing with these
problems.
In four parts

1. Problem
2. Solution
3. Best Practices
4. Distributing
1. The Problem
Drupal’s strength is its
weakness.
No distinction between
configuration &
content.
The Workflow Problem
Development:
where the action happens.
Staging:
where it’s reviewed.
Production:
http://www.mysite.com
FYI, developing on the
live site is a bad idea,
always.
This is a story...




http://developmentseed.org/blog/2009/jul/09/development-
       staging-production-workflow-problem-drupal
Round one goes fine.
Developer, designer & client get the site out the
door.
Round two is a PITA.
New views build on development
Rebuild on staging
Rebuild on development
Rebuild on staging
Rinse, Repeat.
Rebuild on production.
Round two is a PITA.
Requires extensive note taking
Prone to human error
Loads of repeated tasks
Not having a
distinction between
configuration and code
is bigger that just this
one aspect.
2. The Solution
IMHO
Make a distinction
between configuration
& content
...and write the
configuration to code.
What’s in code goes in
version control.
fig 1: Configuration components of a feature.




       This belongs in your codebase.
Features module
semantics
Feature: module that contains
collection of Drupal parts
that do something specific.
Features: Drupal module
that allows for the capture
of configuration into code.
feature: something you
want your website to do.
features: a set of things
you want your website
to do.
Yes, I’m sorry. It seemed
like a good idea at the
time.
The Features module
makes Feature modules,
which have...
Core exportables
 DRUPAL 6        DRUPAL 7

Content types   Content types
 Permissions        Fields
 Input filters    Permissions
 Menu items      Input filters
                 Menu items
                 Image styles
                 Vocabularies
Contrib support
                       Contexts
                         Views
                      ImageCache
                        Ctools*




* Ctools is special
Ctools is special




Strongarm, Panels, Feeds, Data, etc...
Features is a system to
capture these
components,
...these components
are the configuration
that describes how
your site behaves.
Features should be
used throughout the
development process,
...it won’t fight back,
once you get the hang
of it.
Create a Feature
Status of Features
Status of Feature
What changed
Create, Update, Revert
Drush commands
features          List all the available features for your site.

features-export Export a feature from your site into a
                module.

features-update Update a feature module on your site.

features-revert   Revert a feature module on your site.
How this can work in
development:
Alex makes a feature.
Jeff adds a couple views.
Young adds theme overrides.
Alex fixes Jeff’s and Young’s bugs
Rolled out.
Jeff makes views adjustments
Rolled out.
Alex makes views adjustments, to fix Jeff’s...
Young touches up the views styling
Rolled out.
Views changes are
made only once.

Each change has a
commit log.
Less room for dumb
errors.

More accountability.
It’s easier to do things
right.
Not having a
distinction between
configuration and code
is bigger that just this
one aspect.
Briefly:
Adding exportables to
your module.
First: sequential IDs on
configuration is the
enemy.
the enemy
Machine name (poor man’s UUID)
Second: when in doubt,
use Ctools
http://civicactions.com/blog/2009/jul/24/
using_chaos_tools_module_create_exportables
Ctools’ export.inc
crash course...
Your job:

* Database schema
* Saving
* User Interface
Ctools’ job:

* Loading
* Exporting
Q: What’s left?

Dependency detection.
hook_features_export()

* add modules
* add components
* delegation
3. Best Practice
Kit
http://drupal.org/project/kit
“The goal is to offer a
straightforward base package
for building state-of-the-art
Drupal sites while specifying
how Features built
on top of Kit can be
compatible.”
Specifications:
 Feature Specification (kitf 1.0-draft)
 Theme Specification (kitt 1.0-draft)
kitf
  Namespaces
  User roles & Permissions
  Variables
  Paths & Menu items
  Block visibility & theme regions
  Dependencies
  Problematic components
kitt
  Regions
  Page template variables
  Element attributes
These are working
documents, based on
developer feedback.
4. Distributing
How do I share a
feature?
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Are Open Atrium’s
features appropriate on
drupal.org?
Can I always share my
configuration?
How can I get that nifty
update status thing
behind the firewall?
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Feature Servers
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
http://code.developmentseed.org/
featureserver/
Feature Server allows
you to create projects,
make new releases...
subscribe to updates via
the Update status
module...
It is simple by design...
For greater integration
with version control
systems or for
automatic packaging
consider using the
Project module.
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Based on Drupal’s
implicit standards.

* update status xml
* exportables
* drush make
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Demo/Questions?

More Related Content

PDF
Building a Drupal site with Git
PPTX
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
PDF
At Your Service: Using Jenkins in Operations
PPTX
Package Management on Windows with Chocolatey
ODP
7 Habits of Highly Effective Jenkins Users
PPTX
Jenkins tutorial
PDF
Using Docker for Testing
PDF
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
Building a Drupal site with Git
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
At Your Service: Using Jenkins in Operations
Package Management on Windows with Chocolatey
7 Habits of Highly Effective Jenkins Users
Jenkins tutorial
Using Docker for Testing
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...

What's hot (20)

PDF
Jenkins 101: Getting Started
PPT
Jenkins Scriptler in 90mins
PDF
Let’s start Continuous Integration with jenkins
PDF
OSDC 2017 - Julien Pivotto - Automating Jenkins
PDF
Using CI for continuous delivery Part 1
PPTX
Introduction to jenkins
PDF
Jenkins Best Practices
PDF
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
PDF
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
PDF
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
PPTX
Jenkins CI presentation
PPTX
Supermondays: Jenkins CI lightning talk
PPTX
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
PPTX
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
PDF
Virtual CD4PE Workshop
PDF
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
PDF
Using Docker with Puppet - PuppetConf 2014
PDF
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
PDF
Rundeck's History and Future
PPTX
Provisioning environments. A simplistic approach
Jenkins 101: Getting Started
Jenkins Scriptler in 90mins
Let’s start Continuous Integration with jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
Using CI for continuous delivery Part 1
Introduction to jenkins
Jenkins Best Practices
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Jenkins CI presentation
Supermondays: Jenkins CI lightning talk
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Virtual CD4PE Workshop
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Using Docker with Puppet - PuppetConf 2014
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Rundeck's History and Future
Provisioning environments. A simplistic approach
Ad

Viewers also liked (7)

PDF
Using JavaScript in Drupal
PPT
jQuery and_drupal
ODP
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
KEY
JavaScript in Drupal 7: What developers need to know
PDF
jQuery 1.7 visual cheat sheet
PDF
I primi 6 mesi del Piano Nazionale Scuola Digitale
PPTX
5 клас 17 урок. Алгоритми та їх виконавці. (за оновленою програмою 2016р.)
Using JavaScript in Drupal
jQuery and_drupal
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
JavaScript in Drupal 7: What developers need to know
jQuery 1.7 visual cheat sheet
I primi 6 mesi del Piano Nazionale Scuola Digitale
5 клас 17 урок. Алгоритми та їх виконавці. (за оновленою програмою 2016р.)
Ad

Similar to IBM Drupal Users Group Discussion on Managing and Deploying Configuration (20)

PDF
Features everywhere
PPTX
Features and Context Overview
KEY
Intro to Features Module on Drupal
PDF
Recipes for Drupal distributions
PDF
Drupal Presentation for CapitalCamp 2011: Features Driven Development
PDF
Features++
ODP
Drupal distributions - how to build them
ODP
Drupal distribution
PPTX
Top 8 Improvements in Drupal 8
PPT
Using Features
PPT
Building and Deployment of Drupal sites with Features and Context
PPTX
Web Components
KEY
Features, Exportables & You
PDF
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
PDF
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
PPT
Reaching for the Future with Web Components and Polymer
PPTX
Lazy Coder Camp Edition 1
PDF
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
ZIP
Voiture tech talk
PPTX
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
Features everywhere
Features and Context Overview
Intro to Features Module on Drupal
Recipes for Drupal distributions
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Features++
Drupal distributions - how to build them
Drupal distribution
Top 8 Improvements in Drupal 8
Using Features
Building and Deployment of Drupal sites with Features and Context
Web Components
Features, Exportables & You
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Reaching for the Future with Web Components and Polymer
Lazy Coder Camp Edition 1
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
Voiture tech talk
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)

More from Development Seed (20)

PPTX
Rasters are not Monsters - GeoMTL 2019
PDF
GeoDC: Better data for better elections in Afghanistan
PDF
Cartography with TileMill, PostGIS, and OpenStreetMap
PDF
Nonprofit Mapping at Net2DC Meetup
PDF
Famine Mapping with USAID
PDF
Tilemill: Making Custom Transit Maps
PDF
Mapnik2 Performance, September 2011
PDF
Alternative Mapping on iOS
PDF
Transparency camp
PDF
Fast Map Interaction without Flash
PDF
Tech@State Preview of Designing Custom Maps with TileMill
PDF
ReliefWeb Drupal 7 Build Plan
PDF
Offline Mapping: International Crisis
PDF
Aegir one drupal to rule them all
PDF
Backstage with Drupal localization- Part 2
PDF
For every site a make file
PDF
Go real time with pubsubhubbub and feeds
PDF
Drupal Distributions: The Dos and Don'ts:
PDF
Open Atrium
PDF
Opening Large Data Sets
Rasters are not Monsters - GeoMTL 2019
GeoDC: Better data for better elections in Afghanistan
Cartography with TileMill, PostGIS, and OpenStreetMap
Nonprofit Mapping at Net2DC Meetup
Famine Mapping with USAID
Tilemill: Making Custom Transit Maps
Mapnik2 Performance, September 2011
Alternative Mapping on iOS
Transparency camp
Fast Map Interaction without Flash
Tech@State Preview of Designing Custom Maps with TileMill
ReliefWeb Drupal 7 Build Plan
Offline Mapping: International Crisis
Aegir one drupal to rule them all
Backstage with Drupal localization- Part 2
For every site a make file
Go real time with pubsubhubbub and feeds
Drupal Distributions: The Dos and Don'ts:
Open Atrium
Opening Large Data Sets

Recently uploaded (20)

PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
cuic standard and advanced reporting.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Transforming Manufacturing operations through Intelligent Integrations
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
cuic standard and advanced reporting.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
GamePlan Trading System Review: Professional Trader's Honest Take
Reach Out and Touch Someone: Haptics and Empathic Computing
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
NewMind AI Monthly Chronicles - July 2025
Transforming Manufacturing operations through Intelligent Integrations
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
madgavkar20181017ppt McKinsey Presentation.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Advanced methodologies resolving dimensionality complications for autism neur...
Diabetes mellitus diagnosis method based random forest with bat algorithm
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift

IBM Drupal Users Group Discussion on Managing and Deploying Configuration