My pronouns: he, him, his 2 We create big-picture digital solutions - - PowerPoint PPT Presentation
My pronouns: he, him, his 2 We create big-picture digital solutions - - PowerPoint PPT Presentation
Hi, Im Scott. Principal Drupal Architect at Bounteous Working with Drupal since 2007 Scott Weston Architect My pronouns: he, him, his 2 We create big-picture digital solutions that help leading companies deliver transformational brand
2
Scott Weston
Architect
Hi, I’m Scott. Principal Drupal Architect at Bounteous Working with Drupal since 2007
My pronouns: he, him, his
3
We create big-picture digital solutions that help leading companies deliver transformational brand experiences.
How can you operate environments (Development, Stage, Production) with some different configuration; and maintain sanity?
THE PROBLEM
AGENDA
- 1. The Scenario
- 2. The Tools
- 3. The Config MISO
- 4. The Solution
THE SCENARIO
7
Local/Dev Staging Production
Devel Module ON OFF OFF Caching OFF ON ON Errors All Warnings Only None Robots.txt Disallow * Disallow * Authorable DB Logging ON ON OFF Env Indicator Green Yellow Red Content Blocks Ignore Ignore Ignore
EXAMPLE ENVIRONMENTAL DIFFERENCES
Tip: Make a spreadsheet to think through/document your config management approach.
THE TOOLS
9
- Configuration Ignore (config_ignore)
- Configuration Split (config_split)
- Configuration Filter (config_filter) *
* Split & Ignore need the Config Filter module.
Required Recommended
- Tip: Chosen (chosen) – Makes select
boxes on config forms easier to use. Needs Chosen jQuery library.
- Webform Config Ignore
(webform_config_ignore) – Does not revert config for existing webforms.
CONTRIBUTED MODULES
10
Acquia: $_ENV['AH_SITE_ENVIRONMENT’] (dev, test, prod) Pantheon: $_ENV['PANTHEON_ENVIRONMENT’] (dev, test, live) Other: Look for similar value in $_ENV, docs, support
DETERMINE THE ENVIRONMENT
THE CONFIG MISO
MANAGEMENT
M I
IGNORE
S
SPLIT
O
OVERRIDES
13
CORE CONFIGURATION MANAGEMENT If it’s the same across all environments, let Core Config Management handle it. drush config:export drush config:import
THE CONFIG MISO
14
CONFIGURATION IGNORE
- Use when you don’t want drush config:import to modify specific configurations.
- Can be very specific or use wildcards.
- Config will still be exported, but will not be imported.
THE CONFIG MISO
Tip: NEVER ignore core.extension or config.ignore.
15
CONFIGURATION IGNORE EXAMPLES Block instances used as content components block.block.* Robotstxt module settings robotstxt.settings The body copy of the password recovery email user.mail.password_reset.body
THE CONFIG MISO
16
CONFIGURATION SPLIT Use when you have different configurations in one or more environment AND you want to manage via config. Config Split stores the config yml files of the split in a different directory when running drush config-split:export. A split can either be Active or Inactive. If Active, the split configuration is imported on drush config:import. Leverage the $_ENV environment indicator to activate specific splits per environment.
THE CONFIG MISO
17
Full module’s configuration is split into its
- wn directory.
Example: Devel OFF or ON depending on environment.
Complete Conditional
Only certain settings of a module are split into its own directory. Example: Error/Notice display settings. Full
- n Dev, hidden on Prod.
TWO KINDS OF SPLITS
18
CONFIGURATION OVERRIDES Set configuration values in settings.php. These configuration values will be used no matter what active configuration indicates.
THE CONFIG MISO
19
CONFIGURATION OVERRIDES EXAMPLES
Robotstxt value for Dev and Stage environments $config['robotstxt.settings']['content'] = "User-agent: *\nDisallow: /\n"; API Keys or IDs which you never want modified: $config['google_tag.settings.container_id'] = "GTM-ABC1234”; Which Config Split should be active: $config['config_split.config_split.stg']['status'] = TRUE;
THE CONFIG MISO
THE SOLUTION
21
Local/Dev Staging Production
Devel Module ON OFF OFF Caching OFF ON ON Errors All Warnings Only None Robots.txt Disallow * Disallow * Authorable DB Logging ON ON OFF Env Indicator Green Yellow Red Content Blocks Ignore Ignore Ignore
EXAMPLE ENVIRONMENTAL DIFFERENCES
S S S S I O O I
STEPS
- 1. Configure ignores
- 2. Add $_ENV detection and switch to settings.php
- 3. Create split directories
- 4. Create config split for environments
- 5. Create overrides
23
- 1. Enable Config Ignore
- 2. Navigate to /admin/config/development/
configuration/ignore (a tab on the Config Synchronize pages)
- 3. Input config to be ignored.
CONFIGURE IGNORES
Tip: The config file name and array structure in the file help identify the string to use for config ignore.
24
$_ENV DETECT & SWITCH
In settings.php, add detection of environment and a switch for environment-specific settings.
25
- Sibling to main sync directory.
- Named for easy identification.
- Make directories before creating the splits.
- Config Split will make .htaccess files.
scott:/$ cd /path/to/config scott:config$ mkdir split_dev split_stg split_prod
CREATE CONFIG SPLIT DIRECTORIES
26
1.
Make sure current config is exported.
2.
Artificially set the $detected_environment in settings.php ($detected_environment = 'prod’;)
3.
Cache rebuild (drush cr)
4.
Config Import to get environment splits. (drush cim)
5.
Enable modules that you want ON in production (syslog)
6.
Make config changes that you want in production (Error Display: None, etc.)
7.
Create the split using the config form.
8.
Export the split config items (drush csex production)
9.
Remove $detected_environment from Step 1 and then Cache Rebuild
- 10. Run drush cim to get your local config.
CREATE CONFIG SPLITS (SHOWING PROD HERE)
27
- 1. Add the hard-coded values to
settings.php
- 2. Colors for Environment Indicator
- 3. Split turned on in each
environment
- 4. Overrides for robotstxt in Dev and
Stage, but not prod
CREATE OVERRIDES
Thank you.
Principal Architect Scott Weston
Email: scott.weston@bounteous.com