SlideShare a Scribd company logo
1 of 41
Download to read offline
DRUPAL VM
A VM for Drupal development, built with Vagrant + Ansible
★
#MidCamp 2017 – Jeff Geerling
@geerlingguy
• Drupalist
...of genus Acquian
• Writer
• Automator of things
DRUPAL VM
• Info: www.drupalvm.com
• Docs: docs.drupalvm.com
• Code: GitHub
DRUPAL VM
• Quick Start:
1. Install VirtualBox and Vagrant
2. Download Drupal VM
3. vagrant up
HOW DO I BUILD AND
MAINTAIN DRUPAL 8
PROJECTS?
Drush was never designed as a
dependency management tool.
❤
DRUPAL-PROJECT
$ composer create-project drupal-composer/drupal-project:8.x-dev 
bacon 
--stability dev 
--no-interaction
DRUPAL VM
composer require --dev geerlingguy/drupal-vm
PREP THE VM
---
vagrant_hostname: local.bacon.com
drupal_build_composer_project: false
drupal_build_composer: false
drupal_composer_dependencies: []
installed_extras:
- drush
- drupalconsole
- mailhog
- nodejs
- xdebug
- varnish
vm/config.yml
{
PREP DRUPAL PROJECT
ENV['DRUPALVM_PROJECT_ROOT'] = "#{__dir__}"
ENV['DRUPALVM_CONFIG_DIR'] = "vm"
ENV['DRUPALVM_DIR'] = "vendor/geerlingguy/drupal-vm"
# Load Drupal VM's Vagrantfile
load "#{__dir__}/#{ENV['DRUPALVM_DIR']}/Vagrantfile"
Vagrantfile
{
vagrant up
WHAT ABOUT PROD?
WHAT ABOUT PROD?
---
# Deploy from the project's Git repository.
drupal_deploy: true
drupal_deploy_repo: "git@github.com:my/bacon.git"
drupal_deploy_dir: /var/www/drupal
# Set the domain for this site appropriately.
drupal_domain: "prod.bacon.com"
vagrant_hostname: "{{ drupal_domain }}"
vm/prod.config.yml
{
WHAT ABOUT PROD?
$ DRUPALVM_ENV=prod 

ansible-playbook -i vm/inventory 

vendor/geerlingguy/drupal-vm/provisioning/playbook.yml 

-e "config_dir=$(pwd)/vm" 

--become --ask-become-pass 

--ask-vault-pass
WHAT ABOUT PROD?
• Dogfooding: project is on GitHub
• Everybody loves secrets (.yml)
• Full writeup on my blog:

https://www.jeffgeerling.com/drupal-vm-local-prod
GOING DEEPER
EXAMPLE: SOLR SEARCH
EXAMPLE: SOLR SEARCH
• Step 1: Add Solr to Drupal VM
• Add solr to installed_extras
• Copy Drupal VM's example configure-solr.sh
to scripts/configure-solr.sh
• Add script to vm/config.yml:
post_provision_scripts:

- "../../../../scripts/configure-solr.sh"
EXAMPLE: SOLR SEARCH
• Step 2: Add Drupal modules
composer require drupal/search_api:^1.0
drupal/search_api_solr:^1.0
drush @local.example.com en -y search_api
search_api_solr search_api_solr_defaults
EXAMPLE: SOLR SEARCH
• Step 3: Export the config and deploy!
• Disable Search API Solr Defaults module
• Export: drush @local.bacon.com cex -y
• Commit and push
• Deploy: Run the playbook on prod!
It's alive!!!
EXAMPLE: BEHAT TESTS
EXAMPLE: BEHAT TESTS
EXAMPLE: BEHAT TESTS
• Step 1: Add Selenium to Drupal VM
• Add selenium to installed_extras
EXAMPLE: BEHAT TESTS
• Step 2: Add Drupal Extension
composer require --dev drupal/drupal-extension
EXAMPLE: BEHAT TESTS
• Step 3: Configure Behat (behat.yml)
• Add tests directory
• Copy the config from Drupal VM's docs
• Paste into new tests/behat.yml
EXAMPLE: BEHAT TESTS
• Step 4: Initialize Behat
• Log into VM
• cd into tests
• Run ../vendor/bin/behat init
EXAMPLE: BEHAT TESTS
• Step 5: Test ALL THE THINGS!
• Create feature files in tests/features/web
• Example: HomeContent.feature
EXAMPLE: BEHAT TESTS
Feature: Test DrupalContext
In order to prove Behat is working correctly in Drupal VM

As a developer

I need to run a simple interface test
Scenario: Viewing content in a region

Given I am on the homepage

Then I should see "This is a demonstration" in the "content"
EXAMPLE: BEHAT TESTS
WINDOWS
WINDOWS
😭
WINDOWS
🤗
WINDOWS
• Use SMB, rsync, or reverse-mount shared folders
• Use WSL/Ubuntu Bash and/or Cmder
• Use Unix line endings
• Read the docs
• DRUPALVM_ANSIBLE_TAGS=xdebug vagrant provision
• Tideways is the new XHProf
• Configure ALL THE THINGS in Vagrantfile.local
• Add custom pre/post-provision playbooks
• Test your modules with PAReview.sh
BONUS ROUND!
THE FUTURE
• Docker & Libvirt/KVM
• Easier config template customization
• Certbot + LetsEncrypt (TLS FTW)
• MOAR Composer
• MOAR Windows
THANKS!
• Review this session:

https://joind.in/talk/8f8fa
• Support my work on Patreon:

https://www.patreon.com/geerlingguy

More Related Content

What's hot

SEP DevOps Ignite Talk - Packer
SEP DevOps Ignite Talk - PackerSEP DevOps Ignite Talk - Packer
SEP DevOps Ignite Talk - PackerRyan Sweeney
 
What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015jimi-c
 
High Performance Drupal
High Performance DrupalHigh Performance Drupal
High Performance DrupalJeff Geerling
 
Ansible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeAnsible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
 
macos installation automation
macos installation automationmacos installation automation
macos installation automationJon Fuller
 
Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)Timothy Appnel
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerGeorge Miranda
 
Deploying PHP Applications with Ansible
Deploying PHP Applications with AnsibleDeploying PHP Applications with Ansible
Deploying PHP Applications with AnsibleOrestes Carracedo
 
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'rmcleay
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation EasyPeter Sankauskas
 
Ansible + WordPress
Ansible + WordPressAnsible + WordPress
Ansible + WordPressAlan Lok
 
Ansible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL MeetupAnsible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL MeetupJeff Geerling
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Ansible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers GaliciaAnsible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers GaliciaJuan Diego Pereiro Arean
 

What's hot (20)

SEP DevOps Ignite Talk - Packer
SEP DevOps Ignite Talk - PackerSEP DevOps Ignite Talk - Packer
SEP DevOps Ignite Talk - Packer
 
Ansible Case Studies
Ansible Case StudiesAnsible Case Studies
Ansible Case Studies
 
What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015
 
High Performance Drupal
High Performance DrupalHigh Performance Drupal
High Performance Drupal
 
Ansible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeAnsible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less Coffee
 
macos installation automation
macos installation automationmacos installation automation
macos installation automation
 
Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)
 
Docker slides
Docker slidesDocker slides
Docker slides
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and Packer
 
Deploying PHP Applications with Ansible
Deploying PHP Applications with AnsibleDeploying PHP Applications with Ansible
Deploying PHP Applications with Ansible
 
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
 
Ansible and AWS
Ansible and AWSAnsible and AWS
Ansible and AWS
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation Easy
 
Ansible + WordPress
Ansible + WordPressAnsible + WordPress
Ansible + WordPress
 
Ansible - A 'crowd' introduction
Ansible - A 'crowd' introductionAnsible - A 'crowd' introduction
Ansible - A 'crowd' introduction
 
Ansible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL MeetupAnsible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL Meetup
 
Cyansible
CyansibleCyansible
Cyansible
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
Ansible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers GaliciaAnsible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers Galicia
 

Viewers also liked

Alejandro Fernandez vs Luis Miguel
Alejandro Fernandez vs Luis MiguelAlejandro Fernandez vs Luis Miguel
Alejandro Fernandez vs Luis MiguelSusana Gallardo
 
マイクロソフトが創る未来 医療編 20170401
マイクロソフトが創る未来 医療編 20170401マイクロソフトが創る未来 医療編 20170401
マイクロソフトが創る未来 医療編 20170401Aya Tokura
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Tsunenori Oohara
 
トレンドを探る AI と HPC の関係性
トレンドを探る AI と HPC の関係性トレンドを探る AI と HPC の関係性
トレンドを探る AI と HPC の関係性NVIDIA Japan
 
La teoría PDCA para la mejora contínua
La teoría PDCA para la mejora contínuaLa teoría PDCA para la mejora contínua
La teoría PDCA para la mejora contínuaSergio Salimbeni
 
Amazon EC2 HPCインスタンス - AWSマイスターシリーズ
Amazon EC2 HPCインスタンス - AWSマイスターシリーズAmazon EC2 HPCインスタンス - AWSマイスターシリーズ
Amazon EC2 HPCインスタンス - AWSマイスターシリーズAmazon Web Services Japan
 
Immunisation against bacteria
Immunisation against bacteriaImmunisation against bacteria
Immunisation against bacteriaRohit Satyam
 
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...India-EU Water Partnership
 
PROCESO DE EXPORTACION DE AGUACATE HASS
PROCESO DE EXPORTACION DE AGUACATE HASSPROCESO DE EXPORTACION DE AGUACATE HASS
PROCESO DE EXPORTACION DE AGUACATE HASSAGROPROGRESOSAS
 
[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel LibreClément OUDOT
 
2017 HE sytem in Lebanon
2017 HE sytem in Lebanon 2017 HE sytem in Lebanon
2017 HE sytem in Lebanon Ahmad JAMMAL
 
20170330 lckva pfi gwp presentatie grondstoffencongres 2017
20170330 lckva pfi gwp presentatie grondstoffencongres 201720170330 lckva pfi gwp presentatie grondstoffencongres 2017
20170330 lckva pfi gwp presentatie grondstoffencongres 2017Partners for Innovation BV
 
Daniela Bandera Distinte e Integrate 31032017
Daniela Bandera Distinte e Integrate 31032017Daniela Bandera Distinte e Integrate 31032017
Daniela Bandera Distinte e Integrate 31032017Daniela Bandera
 
Transform your living space into beauty.
Transform your living space into beauty.Transform your living space into beauty.
Transform your living space into beauty.Trent Altman
 
Мастер класс "Команда о которой вы мечтаете"
Мастер класс "Команда о которой вы мечтаете"Мастер класс "Команда о которой вы мечтаете"
Мастер класс "Команда о которой вы мечтаете"Tatyana Гончаренко
 
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?Tomasz Skórski
 
Jc aprile 2017
Jc aprile 2017Jc aprile 2017
Jc aprile 2017SIEOG
 

Viewers also liked (20)

Xpert MTB/RIF Ultra newer technology past to future DIAGNOSIS OF TUBERCULOSIS
Xpert MTB/RIF Ultranewer technologypast to future DIAGNOSIS OF TUBERCULOSIS Xpert MTB/RIF Ultranewer technologypast to future DIAGNOSIS OF TUBERCULOSIS
Xpert MTB/RIF Ultra newer technology past to future DIAGNOSIS OF TUBERCULOSIS
 
Alejandro Fernandez vs Luis Miguel
Alejandro Fernandez vs Luis MiguelAlejandro Fernandez vs Luis Miguel
Alejandro Fernandez vs Luis Miguel
 
マイクロソフトが創る未来 医療編 20170401
マイクロソフトが創る未来 医療編 20170401マイクロソフトが創る未来 医療編 20170401
マイクロソフトが創る未来 医療編 20170401
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 
トレンドを探る AI と HPC の関係性
トレンドを探る AI と HPC の関係性トレンドを探る AI と HPC の関係性
トレンドを探る AI と HPC の関係性
 
La teoría PDCA para la mejora contínua
La teoría PDCA para la mejora contínuaLa teoría PDCA para la mejora contínua
La teoría PDCA para la mejora contínua
 
Thank you 4.1.2017
Thank you 4.1.2017Thank you 4.1.2017
Thank you 4.1.2017
 
Amazon EC2 HPCインスタンス - AWSマイスターシリーズ
Amazon EC2 HPCインスタンス - AWSマイスターシリーズAmazon EC2 HPCインスタンス - AWSマイスターシリーズ
Amazon EC2 HPCインスタンス - AWSマイスターシリーズ
 
Immunisation against bacteria
Immunisation against bacteriaImmunisation against bacteria
Immunisation against bacteria
 
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...
Mr. Nitin bassi IEWP @ 2nd India-EU Water Forum @ World Sustainable Developme...
 
PROCESO DE EXPORTACION DE AGUACATE HASS
PROCESO DE EXPORTACION DE AGUACATE HASSPROCESO DE EXPORTACION DE AGUACATE HASS
PROCESO DE EXPORTACION DE AGUACATE HASS
 
[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre
 
2017 HE sytem in Lebanon
2017 HE sytem in Lebanon 2017 HE sytem in Lebanon
2017 HE sytem in Lebanon
 
20170330 lckva pfi gwp presentatie grondstoffencongres 2017
20170330 lckva pfi gwp presentatie grondstoffencongres 201720170330 lckva pfi gwp presentatie grondstoffencongres 2017
20170330 lckva pfi gwp presentatie grondstoffencongres 2017
 
o discípulo e a oração
o discípulo e a oraçãoo discípulo e a oração
o discípulo e a oração
 
Daniela Bandera Distinte e Integrate 31032017
Daniela Bandera Distinte e Integrate 31032017Daniela Bandera Distinte e Integrate 31032017
Daniela Bandera Distinte e Integrate 31032017
 
Transform your living space into beauty.
Transform your living space into beauty.Transform your living space into beauty.
Transform your living space into beauty.
 
Мастер класс "Команда о которой вы мечтаете"
Мастер класс "Команда о которой вы мечтаете"Мастер класс "Команда о которой вы мечтаете"
Мастер класс "Команда о которой вы мечтаете"
 
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?
Zły UX. Dlaczego dostajemy 
słabe produkty i usługi?
 
Jc aprile 2017
Jc aprile 2017Jc aprile 2017
Jc aprile 2017
 

Similar to Drupal VM for Drupal 8 Dev - MidCamp 2017

Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash courseMarcus Deglos
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowvaluebound
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAJesus Manuel Olivas
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Aleksey Tkachenko
 
Docker at Monoco.jp (LinkedIn)
Docker at Monoco.jp (LinkedIn)Docker at Monoco.jp (LinkedIn)
Docker at Monoco.jp (LinkedIn)Akhmad Fathonih
 
Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js developmentTroy Connor
 
Building a Drupal Distribution using Features, Drush Make, Installation Profi...
Building a Drupal Distribution using Features, Drush Make, Installation Profi...Building a Drupal Distribution using Features, Drush Make, Installation Profi...
Building a Drupal Distribution using Features, Drush Make, Installation Profi...Ben Shell
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and moreAcquia
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composernuppla
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Dockernklmish
 
Vagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyVagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyGeronimo Orozco
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal DevelopmentChris Tankersley
 
How to deploy and run mule in docker
How to deploy and run mule in dockerHow to deploy and run mule in docker
How to deploy and run mule in dockerRavi Prakash Singh
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composernuppla
 
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzEnabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzSteve Hoffman
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Paul McKibben
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksGoDataDriven
 

Similar to Drupal VM for Drupal 8 Dev - MidCamp 2017 (20)

Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash course
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflow
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLA
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...
 
Docker at Monoco.jp (LinkedIn)
Docker at Monoco.jp (LinkedIn)Docker at Monoco.jp (LinkedIn)
Docker at Monoco.jp (LinkedIn)
 
Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js development
 
Building a Drupal Distribution using Features, Drush Make, Installation Profi...
Building a Drupal Distribution using Features, Drush Make, Installation Profi...Building a Drupal Distribution using Features, Drush Make, Installation Profi...
Building a Drupal Distribution using Features, Drush Make, Installation Profi...
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
 
Vagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyVagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easy
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal Development
 
How to deploy and run mule in docker
How to deploy and run mule in dockerHow to deploy and run mule in docker
How to deploy and run mule in docker
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzEnabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
 
Dockerize All The Things
Dockerize All The ThingsDockerize All The Things
Dockerize All The Things
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in Testing
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
 

More from Jeff Geerling

Continuous Testing with Molecule, Ansible, and GitHub Actions
Continuous Testing with Molecule, Ansible, and GitHub ActionsContinuous Testing with Molecule, Ansible, and GitHub Actions
Continuous Testing with Molecule, Ansible, and GitHub ActionsJeff Geerling
 
2020 Drupal Local Development Tools Survey - CMS Philly
2020 Drupal Local Development Tools Survey - CMS Philly2020 Drupal Local Development Tools Survey - CMS Philly
2020 Drupal Local Development Tools Survey - CMS PhillyJeff Geerling
 
There's a role for that! (AnsibleFest 2019)
There's a role for that! (AnsibleFest 2019)There's a role for that! (AnsibleFest 2019)
There's a role for that! (AnsibleFest 2019)Jeff Geerling
 
Everything I know about Kubernetes I learned from a Raspberry Pi cluster
Everything I know about Kubernetes I learned from a Raspberry Pi clusterEverything I know about Kubernetes I learned from a Raspberry Pi cluster
Everything I know about Kubernetes I learned from a Raspberry Pi clusterJeff Geerling
 
Real World DevOps - Jeff Geerling's NEDCamp 2018 Keynote
Real World DevOps - Jeff Geerling's NEDCamp 2018 KeynoteReal World DevOps - Jeff Geerling's NEDCamp 2018 Keynote
Real World DevOps - Jeff Geerling's NEDCamp 2018 KeynoteJeff Geerling
 
Make your Ansible playbooks maintainable, flexible, and scalable
Make your Ansible playbooks maintainable, flexible, and scalableMake your Ansible playbooks maintainable, flexible, and scalable
Make your Ansible playbooks maintainable, flexible, and scalableJeff Geerling
 
Ansible and Kubernetes
Ansible and KubernetesAnsible and Kubernetes
Ansible and KubernetesJeff Geerling
 
ProTips for Staying Sane while Working from Home
ProTips for Staying Sane while Working from Home ProTips for Staying Sane while Working from Home
ProTips for Staying Sane while Working from Home Jeff Geerling
 
Highly available Drupal on a Raspberry Pi cluster
Highly available Drupal on a Raspberry Pi clusterHighly available Drupal on a Raspberry Pi cluster
Highly available Drupal on a Raspberry Pi clusterJeff Geerling
 
Drupal 8 - A Brief Introduction
Drupal 8 - A Brief IntroductionDrupal 8 - A Brief Introduction
Drupal 8 - A Brief IntroductionJeff Geerling
 
Server Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.jsServer Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.jsJeff Geerling
 
Florissant TIF - Cross Keys Redevelopment
Florissant TIF - Cross Keys RedevelopmentFlorissant TIF - Cross Keys Redevelopment
Florissant TIF - Cross Keys RedevelopmentJeff Geerling
 
How to Build a Drupal Module
How to Build a Drupal ModuleHow to Build a Drupal Module
How to Build a Drupal ModuleJeff Geerling
 

More from Jeff Geerling (14)

Continuous Testing with Molecule, Ansible, and GitHub Actions
Continuous Testing with Molecule, Ansible, and GitHub ActionsContinuous Testing with Molecule, Ansible, and GitHub Actions
Continuous Testing with Molecule, Ansible, and GitHub Actions
 
2020 Drupal Local Development Tools Survey - CMS Philly
2020 Drupal Local Development Tools Survey - CMS Philly2020 Drupal Local Development Tools Survey - CMS Philly
2020 Drupal Local Development Tools Survey - CMS Philly
 
There's a role for that! (AnsibleFest 2019)
There's a role for that! (AnsibleFest 2019)There's a role for that! (AnsibleFest 2019)
There's a role for that! (AnsibleFest 2019)
 
Everything I know about Kubernetes I learned from a Raspberry Pi cluster
Everything I know about Kubernetes I learned from a Raspberry Pi clusterEverything I know about Kubernetes I learned from a Raspberry Pi cluster
Everything I know about Kubernetes I learned from a Raspberry Pi cluster
 
Real World DevOps - Jeff Geerling's NEDCamp 2018 Keynote
Real World DevOps - Jeff Geerling's NEDCamp 2018 KeynoteReal World DevOps - Jeff Geerling's NEDCamp 2018 Keynote
Real World DevOps - Jeff Geerling's NEDCamp 2018 Keynote
 
Make your Ansible playbooks maintainable, flexible, and scalable
Make your Ansible playbooks maintainable, flexible, and scalableMake your Ansible playbooks maintainable, flexible, and scalable
Make your Ansible playbooks maintainable, flexible, and scalable
 
Ansible and Kubernetes
Ansible and KubernetesAnsible and Kubernetes
Ansible and Kubernetes
 
HTTPS and Ansible
HTTPS and AnsibleHTTPS and Ansible
HTTPS and Ansible
 
ProTips for Staying Sane while Working from Home
ProTips for Staying Sane while Working from Home ProTips for Staying Sane while Working from Home
ProTips for Staying Sane while Working from Home
 
Highly available Drupal on a Raspberry Pi cluster
Highly available Drupal on a Raspberry Pi clusterHighly available Drupal on a Raspberry Pi cluster
Highly available Drupal on a Raspberry Pi cluster
 
Drupal 8 - A Brief Introduction
Drupal 8 - A Brief IntroductionDrupal 8 - A Brief Introduction
Drupal 8 - A Brief Introduction
 
Server Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.jsServer Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.js
 
Florissant TIF - Cross Keys Redevelopment
Florissant TIF - Cross Keys RedevelopmentFlorissant TIF - Cross Keys Redevelopment
Florissant TIF - Cross Keys Redevelopment
 
How to Build a Drupal Module
How to Build a Drupal ModuleHow to Build a Drupal Module
How to Build a Drupal Module
 

Recently uploaded

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Recently uploaded (20)

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Drupal VM for Drupal 8 Dev - MidCamp 2017

  • 1. DRUPAL VM A VM for Drupal development, built with Vagrant + Ansible ★ #MidCamp 2017 – Jeff Geerling
  • 2. @geerlingguy • Drupalist ...of genus Acquian • Writer • Automator of things
  • 3.
  • 4. DRUPAL VM • Info: www.drupalvm.com • Docs: docs.drupalvm.com • Code: GitHub
  • 5. DRUPAL VM • Quick Start: 1. Install VirtualBox and Vagrant 2. Download Drupal VM 3. vagrant up
  • 6. HOW DO I BUILD AND MAINTAIN DRUPAL 8 PROJECTS?
  • 7. Drush was never designed as a dependency management tool.
  • 8.
  • 9. DRUPAL-PROJECT $ composer create-project drupal-composer/drupal-project:8.x-dev bacon --stability dev --no-interaction
  • 10. DRUPAL VM composer require --dev geerlingguy/drupal-vm
  • 11. PREP THE VM --- vagrant_hostname: local.bacon.com drupal_build_composer_project: false drupal_build_composer: false drupal_composer_dependencies: [] installed_extras: - drush - drupalconsole - mailhog - nodejs - xdebug - varnish vm/config.yml {
  • 12. PREP DRUPAL PROJECT ENV['DRUPALVM_PROJECT_ROOT'] = "#{__dir__}" ENV['DRUPALVM_CONFIG_DIR'] = "vm" ENV['DRUPALVM_DIR'] = "vendor/geerlingguy/drupal-vm" # Load Drupal VM's Vagrantfile load "#{__dir__}/#{ENV['DRUPALVM_DIR']}/Vagrantfile" Vagrantfile {
  • 15. WHAT ABOUT PROD? --- # Deploy from the project's Git repository. drupal_deploy: true drupal_deploy_repo: "git@github.com:my/bacon.git" drupal_deploy_dir: /var/www/drupal # Set the domain for this site appropriately. drupal_domain: "prod.bacon.com" vagrant_hostname: "{{ drupal_domain }}" vm/prod.config.yml {
  • 16. WHAT ABOUT PROD? $ DRUPALVM_ENV=prod 
 ansible-playbook -i vm/inventory 
 vendor/geerlingguy/drupal-vm/provisioning/playbook.yml 
 -e "config_dir=$(pwd)/vm" 
 --become --ask-become-pass 
 --ask-vault-pass
  • 17. WHAT ABOUT PROD? • Dogfooding: project is on GitHub • Everybody loves secrets (.yml) • Full writeup on my blog:
 https://www.jeffgeerling.com/drupal-vm-local-prod
  • 18.
  • 21. EXAMPLE: SOLR SEARCH • Step 1: Add Solr to Drupal VM • Add solr to installed_extras • Copy Drupal VM's example configure-solr.sh to scripts/configure-solr.sh • Add script to vm/config.yml: post_provision_scripts:
 - "../../../../scripts/configure-solr.sh"
  • 22. EXAMPLE: SOLR SEARCH • Step 2: Add Drupal modules composer require drupal/search_api:^1.0 drupal/search_api_solr:^1.0 drush @local.example.com en -y search_api search_api_solr search_api_solr_defaults
  • 23. EXAMPLE: SOLR SEARCH • Step 3: Export the config and deploy! • Disable Search API Solr Defaults module • Export: drush @local.bacon.com cex -y • Commit and push • Deploy: Run the playbook on prod!
  • 24.
  • 28. EXAMPLE: BEHAT TESTS • Step 1: Add Selenium to Drupal VM • Add selenium to installed_extras
  • 29. EXAMPLE: BEHAT TESTS • Step 2: Add Drupal Extension composer require --dev drupal/drupal-extension
  • 30. EXAMPLE: BEHAT TESTS • Step 3: Configure Behat (behat.yml) • Add tests directory • Copy the config from Drupal VM's docs • Paste into new tests/behat.yml
  • 31. EXAMPLE: BEHAT TESTS • Step 4: Initialize Behat • Log into VM • cd into tests • Run ../vendor/bin/behat init
  • 32. EXAMPLE: BEHAT TESTS • Step 5: Test ALL THE THINGS! • Create feature files in tests/features/web • Example: HomeContent.feature
  • 33. EXAMPLE: BEHAT TESTS Feature: Test DrupalContext In order to prove Behat is working correctly in Drupal VM
 As a developer
 I need to run a simple interface test Scenario: Viewing content in a region
 Given I am on the homepage
 Then I should see "This is a demonstration" in the "content"
  • 38. WINDOWS • Use SMB, rsync, or reverse-mount shared folders • Use WSL/Ubuntu Bash and/or Cmder • Use Unix line endings • Read the docs
  • 39. • DRUPALVM_ANSIBLE_TAGS=xdebug vagrant provision • Tideways is the new XHProf • Configure ALL THE THINGS in Vagrantfile.local • Add custom pre/post-provision playbooks • Test your modules with PAReview.sh BONUS ROUND!
  • 40. THE FUTURE • Docker & Libvirt/KVM • Easier config template customization • Certbot + LetsEncrypt (TLS FTW) • MOAR Composer • MOAR Windows
  • 41. THANKS! • Review this session:
 https://joind.in/talk/8f8fa • Support my work on Patreon:
 https://www.patreon.com/geerlingguy