drupal 8 cmi on a managed workflow
TRANSCRIPT
PANTHEON PANTHEON.IO
This session is brought to you by Drupalcon LA & the Developers of the Drupal 8 CMS
Drupal 8 CMI on a Managed Workflow
Presented in Technicolor by
Matt [email protected]
PANTHEON PANTHEON.IO
PANTHEON PANTHEON.IO
In the beginning….
PANTHEON PANTHEON.IO
Configuration
● Content Types● Image Styles● Fields● Views● Settings
● Nodes● Users● Comments● Menu Items● Taxonomy Terms
Content
PANTHEON PANTHEON.IO
PANTHEON PANTHEON.IO
The Problem Is That Drupal Doesn’t Care
PANTHEON PANTHEON.IO
The World Until Yesterday
hook_update_n() features.module
PANTHEON PANTHEON.IO
Sins of the Father
● Features Module is not intended to be the solution for storing your Drupal configuration in code.
● Status as a contrib project limited its ability to be a fully integrated solution for all ones Drupal development needs.
● Variety of technical limitations around support for unique identifiers, ability to deal with state, constantly changing data structures, less than comprehensive support for contrib.
PANTHEON PANTHEON.IO
“Today is a good day to start putting all of our config in code.”
\
– Greg Dunlap (rumoured) in March 2011
PANTHEON PANTHEON.IO
Drupal 8 CMI: Maximizing P.I.E.
● Proudly Invented Elsewhere (P.I.E.)○ Use what’s already implemented, tested, familiar○ We’re not any smarter than most people who
have worked on the problem before
● Pre-Symfony P.I.E.○ No custom format and parser (unlike .info files)○ Initially chose XML
■ Built-in parsing support■ Consistent UTF-8 for i18n support■ Support for comments
● Post-Symfony P.I.E.○ Switched to Symfony YAML parser○ Considered Config library, but no GUI support
PANTHEON PANTHEON.IO
Now it is YAML Time!
PANTHEON PANTHEON.IO
admin/config/system/site-information
PANTHEON PANTHEON.IO
system.site.yml
PANTHEON PANTHEON.IO
node.type.blog.yml + field.instance.node.blog.body.yml
PANTHEON PANTHEON.IO
PANTHEON PANTHEON.IO
PANTHEON PANTHEON.IO
Using Configuration Management to Import a Single Config Value
(featuring the Drupal UI)
PANTHEON PANTHEON.IO
Configuration Manager Module (Single export)admin/config/development/configuration/single/export
Dev Site
PANTHEON PANTHEON.IO
YML Filesystem.site.yml
PANTHEON PANTHEON.IO
Live Site
Configuration Manager Module (Single import)admin/config/development/configuration/single/import
PANTHEON PANTHEON.IO
Configuration Manager Module (Import confirm)admin/config/development/configuration/single/import
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (Import finished)admin/config/development/configuration/single/import
Live Site
PANTHEON PANTHEON.IO
Using Configuration Management to Import All Config Values
(featuring the Drupal UI)
PANTHEON PANTHEON.IO
Configuration Manager Module (Export)admin/config/development/configuration/full/export
Dev Site
PANTHEON PANTHEON.IO
Downloaded Fileconfig.tar.gz
PANTHEON PANTHEON.IO
Configuration Manager Module (Import)admin/config/development/configuration/full/import
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (Synchronize)admin/config/development/configuration
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (View differences)admin/config/development/configuration
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (Synchronize)admin/config/development/configuration
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (Import all)admin/config/development/configuration
Live Site
PANTHEON PANTHEON.IO
Configuration Manager Module (Import finished)admin/config/development/configuration
Live Site
PANTHEON PANTHEON.IO
Using Configuration Management to Import a Single Config Value
(featuring the Drush CLI)
PANTHEON PANTHEON.IO
Drush Configuration Management (Single export)drush config-get [config-name]
Dev Site
PANTHEON PANTHEON.IO
A String(but you can also do a YAML)
‘My Even Greater Drupal 8 Site’
PANTHEON PANTHEON.IO
Drush Configuration Management (Single import)drush config-set [config-name]
Live Site
PANTHEON PANTHEON.IO
Using Configuration Management to Import All Config Values(featuring the Drush CLI)
PANTHEON PANTHEON.IO
Drush Configuration Management (Full export)drush config-export
Dev Site
PANTHEON PANTHEON.IO
Git commitf07af82bcd69253eb214bd2dfaf490999971ca6f
PANTHEON PANTHEON.IO
Drush Configuration Management (Full import)drush config-import
Live Site
PANTHEON PANTHEON.IO
Where is the Configuration Management Magic?
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
The Magic is in the Workflow
PANTHEON PANTHEON.IO
So Let’s Try a Live Demowith Drupal 8 Beta 10
(try it yourself at https://pantheon.io/d8)
PANTHEON PANTHEON.IO
Hopefully the Demo was Cool(if not blame barbarian invasions, the reliance on slave and mercenary labor, militaristic overexpansion, the rise of the influence of Byzantium, and, of course, the conference wifi)
PANTHEON PANTHEON.IO
Let’s Talk about Developingwith Configuration Management
PANTHEON PANTHEON.IO
The Configuration API
This is how you get a configuration value
PANTHEON PANTHEON.IO
The Configuration API
This is how you set a configuration value
PANTHEON PANTHEON.IO
The State API
This is how you get and set configuration values that are only useful in a particular environment
PANTHEON PANTHEON.IO
Overriding Configuration
This is how you override configuration values using settings.php
PANTHEON PANTHEON.IO
Handling Different Languages
This is how Configuration Management handles configuration values in different languages
PANTHEON PANTHEON.IO
The Limitations of Drupal 8Configuration Management
PANTHEON PANTHEON.IO
Dealing with Configuration Over Multiple Git Branches & Developers is Hard!
And it requires typing lots and lots of different Drush and Git commands
PANTHEON PANTHEON.IO
Check out Drush’s config-merge Command
Grab Drush 7 RC2 and get started today!
PANTHEON PANTHEON.IO
Drupal 8’s Configuration Management is Designed to Manage a Full Site’s Config
Sharing configuration across multiple sites is not a support used case
PANTHEON PANTHEON.IO
Luckily there is Features for Drupal 8!
PANTHEON PANTHEON.IO
Learn More About it on Thursday!
ADD MIKES FACE
PANTHEON PANTHEON.IO
Drupal 8’s Configuration Management is Only for Drupal 8
And Drupal 8 is not quite ready for the kind of day to day development work we need to do
PANTHEON PANTHEON.IO
There is a Generally Functional Version for Drupal 7
https://www.drupal.org/project/configuration
PANTHEON PANTHEON.IO
Configuration Management Doesn’t Automatically Track Changes in Git
And that is an important use case for you due to compliance issues or speed of development
PANTHEON PANTHEON.IO
There is a Drupal 8 Module for that!
https://www.drupal.org/project/config_tools
PANTHEON PANTHEON.IO
Configuration Management Doesn’t Prevent You From Changing Config in Live
And it is important to you that all configuration be in version control and be tested before going live
PANTHEON PANTHEON.IO
There is a Drupal 8 Module for that!
https://www.drupal.org/project/config_readonly
PANTHEON PANTHEON.IO
Configuration Management Makes it Hard to Manage All the Supplied Configuration
And you want to make sure you are using the latest and greatest configuration without trouble
PANTHEON PANTHEON.IO
There is a Drupal 8 Module for that!
https://www.drupal.org/project/config_update
PANTHEON PANTHEON.IO
Configuration Management Makes it Hard to Export Out Specific Module Configuration
And you want to make sure your module has the most up to date packaged configuration
PANTHEON PANTHEON.IO
There is a Drupal 8 Module for that!
https://www.drupal.org/project/config_devel
PANTHEON PANTHEON.IO
Let’s Talk Big PictureConfiguration Management Will Change How
Most of You Drupal on a Daily Basis
PANTHEON PANTHEON.IO
Thank You for Your Attention
Does anyone have any questions?
WHAT DID YOU THINK?EVAULATE THIS SESSION - LOSANGELES2015.DRUPAL.ORG/SCHEDULE
THANK YOU!