Proviso

VAGRANT BASED DEVELOPMENT STANDARDIZED!

Created by Howard Tyson / Pat Connolly

In the beginning

Local development was hard

You probably had to install Apache yourself...

...on Windows...

...so you just didn't

And then we built tools

  • MAMP

  • WAMP

  • XAMPP

And it worked...

...on my machine

And you had Drupal running locally!

...but was...

  • solr?
  • memcache?
  • varnish?
  • redis?
  • ssl?
  • selenium?

Then there was Vagrant

welcome to the future

Create virtual machines on any environment

Provision

The Rise of the Machines

run `vagrant up` and...

OH GOD!

THERE ARE SO MANY!

Drupal Vagrant

Oscar

Ariadne

Oscar

Quickstart

DrupalPro

Aegir-Up

Devshop

Drupal Lamp

Vagrant Dev VM

We've all been reinventing the wheel

Until now

Proviso is born

What is Proviso?

1. A Community

A Community Project To Assimilate Them All

Resistance is Futile

But don't we have a community?

Conversing not converging

  • http://groups.drupal.org/high-performance
  • http://groups.drupal.org/devops

Proviso is code as conversation

Converging on best practices

  • How do we lock down a box?
  • Can we turn that into runnable code instead of a checklist?

2. An Initiative

Working to find the best ways to share

(because sharing is caring)

3. A Vagrant Project

Need a development environment?

Use ours!

4. Accessible

The Kalamuna team is planning to integrate the Kalabox front end

5. Composable

Assemble your pieces

Pick from Provisioners

Pick from service packages

But How?

Multi-vendor

Starting conversations...

Can we be the TODO MVC of Config Management?

Built on the shoulders of giants

Upstream

Using exclusively community modules and cookbooks

Releases pinned with Librarian

Plugins pinned with Bindler

Automated Testing from Day One

Test Kitchen

Travis CI

+ Amazon


Cross-platform CI Testing

Composability

Ship with near parity for PaaS providers (Acquia, Pantheon, etc)

YAML component lists

Room to add your own components

Caution, even more hand waiving!

Scenario 1:

Platform Fluidity

So you've been
preparing to host
ubuntu 12.04




Halfway through project,
client says



"We hear that linus endorses
redhat linux 5.2.
Can we do that?





This is not true.





HOWEVER...




Client is
enterprise.




in other words
it is true.



with Proviso

we can see which platforms
are supported and tested
at a glance




What makes this
possible?




stack based on
robust community cookbooks




infrastructure testing
with travis ci on
multiple supported platforms




Scenario 2:
Imprecise Stack versioning:






MYSQL


Acquia running 5.5.34

I'm running 5.5.32

 

Meh?

It's all 5.5


No.

Patch release #33 changelog


Patch Release #33 Changelog




Scenario 3:
Issue queue helpers





Can a standard tool help us
file better support issues?



patient Maintainer sally says:


"Can you reproduce that with Proviso?"

current approach


    1. Install Proviso
    2. Run this:
      vagrant up
      vagrant ssh
      drush quick-drupal bug-test views
      drush vset foo bar





Potential future approachES...










Vagrant plugins that
drive drush inside ouR vm's
for common community tasks





Standardized Bug reports





vagrant proviso project-test views
vagrant ssh -c "drush vset foo bar"


(Like a standard, local, ssh-able simplytest.me)





Easy patch testing




`vagrant proviso patch-test https://drupal.org/files/oauth-2027863-7.patch`

  1. Opens page of issue number.
  2. Scrape for module and core version.
  3. Determines module dependencies.
  4. Find date of comment with this patch.
  5. Checkout HEAD commit from that date.
  6. Apply patch.




Scenario 4:
Remote Deployment



You've been
working locally
with proviso




Original Plan:
host on a paas




But then

you realize...




Mongodb & node.js
are
freaking sweet.




Paas hosts like

pantheon & acquia
don't support niche stacks.


extend proviso
&

deploy remotely
with

vagrant-aws

Questions?

We Want You!

For Proviso Contributor!

Join us on:

  • GitHub! http://github.com/proviso/proviso
  • IRC! #proviso
  • Google Groups! http://groups.google.com/proviso