Imagine
...by single command you could generate a
fully functional
standalone
customizable
development ready
web environment
Meet
Virtual Box + Vagrant + Puppet + (Drush)
What Is it good for
Allows you to easily generate prod/dev env including:
- Linux OS (centos based or any other)
- Apache + necessary modules
- PHP + necessary extensions
- MySQL
- PHPMyAdmin
- Git / SVN
-
APC / other caching measures
- XDebug / other debug tools
- Profiling Tools
- Other Dev Tools (Editors, etc)
How
- Virtual Box - allows generating standalone "boxes"
- Vagrant - allows command lines + configuration capability for the base OS setup
- Puppet - Provisioning tool which allows installation and configuration of all the environment components
- Drush - Drupal's swiss army knife for command line junkies
Vagrant
What is vagrant box
What is vagrantfile
Vagrant Commands:
vagrant add
vagrant init
vagrant up
vagrant halt
vagrant provision
vagrant destroy
Puppet
Automation tool to manage a platform from the ground up.
It allows the creation of cookbooks which includes the recipes for installing and configuring a given platform.
Can be leveraged regardless of vagrant
The RAL (resources abstraction layer) concept
Glossary
-
Class - A collection of related resources, which, once defined, can be declared as a single unit.
- Manifest - A file containing code written in the Puppet language, and named with the .pp file extension. Describes a system state for the described resources.
- Module - A collection of classes, resource types, files, and templates, organized around a particular purpose.
- Node / Agent - Puppet is usually deployed in a simple client-server arrangement, and the Puppet client daemon is known as the “agent” (or node).
PuPhpet
How do you pronounce PuPHPet? The p is silent. :-)
Awesome Tool!
Provides :
-
Server packages config
- LAMP config
-
Addition of the dotfiles to the env
- Easily running shell scripts:
- exec-always
- exec-once
Puphpet Structure
-
Config.yaml - key / value backbone file (used by hiera)
- Manifest.pp - Main puppet file. Single cookbook for all the generated puppet code by puphpet (on top of the contib modules).
- Puppetfile - specs all the contrib modules to be used (although turned off/on at the config.yaml
- Vagrantfile - using the config.yaml hiera definitions as well in Puphpet case.
- Files dir - includes all the scripts and dot files added by the customizer
Drush
-
Drush Make - Drupal core + modules download cookbook file
-
Drush Install - Allows command line profile based installation
-
Drush en - Enabling drupal modules
drushmakeme - UI service for creating make files.
DRush Aliases
- Drush Aliases Syntax
- SSH Keys
- Drush + Aliases + SSH Keys = Remote Operations
- Examples:
- drush @live cc all
Clear all cache on production - drush @test fra
# Revert all features at the test env - drush @live sql-dump > dump.sql
# Have the live DB saved on the current local dir - drush @test sqlc < dump.sql
# import into test the local dump file
Drush Rebuild
- drush rebuild @dev --source = @live
# Based on prescription, clones live into dev - DB sync
- Files sync
- DB sensitization (configurable)
- Anything other drush / command line
- Drush Shell Aliases:
- drush test2dev
- drush live2dev
- TBD drush live2test?
Drush as a team
- Central definitions for
- Aliases
- Drush Shell Aliases
- Drush specific settings (e.g. rsync)
- Possibly symlink .drush to samba to ftopia (see this)
- Possibly implementing drush policy file
Now What
-
Pilot
- Future: Master / Agent Dashboard...
Now What
Vagrant
By dofinity
Vagrant
- 268