This document provides an overview of using Vagrant to automate the setup of a development environment. It describes how Vagrant can be used to create and configure a virtual machine (VM) that contains all the necessary tools and files for a project, allowing new team members to get set up and running quickly by running a single script. The document outlines the steps to install Vagrant and VirtualBox, add a Ubuntu box, initialize a Vagrantfile, provision the VM with common tools like Apache and PHP, and set up a sample Drupal project.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
With Vagrant 1.1, you can use the same configuration and workflow to spin up and provision machines in VirtualBox, VMware, AWS, RackSpace, and more. You get all the benefits of Vagrant with the power of working in whatever environment you need to.
In this talk, you’ll learn how to use the new multi-provider features of Vagrant to more effectively develop and test Chef cookbooks.
Adam Culp will talk about using Vagrant to create and manage virtualized development environments, making it easier to mirror production servers. Then will cover using Puppet for more advanced provisioning, making the addition of multiple development environments and servers easier and faster.
If you’re developing and are not sure what these technologies are, this talk is for you. As a developer it’s increasingly important to ensure our development, testing, staging, and production environments are as closely matched to each other as possible, alleviating the “can’t reproduce it on my machine” excuses. Whether you use 2, 3, or 4 of these environments is of less importance if they are all built on the same “stack” of applications.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
With Vagrant 1.1, you can use the same configuration and workflow to spin up and provision machines in VirtualBox, VMware, AWS, RackSpace, and more. You get all the benefits of Vagrant with the power of working in whatever environment you need to.
In this talk, you’ll learn how to use the new multi-provider features of Vagrant to more effectively develop and test Chef cookbooks.
Adam Culp will talk about using Vagrant to create and manage virtualized development environments, making it easier to mirror production servers. Then will cover using Puppet for more advanced provisioning, making the addition of multiple development environments and servers easier and faster.
If you’re developing and are not sure what these technologies are, this talk is for you. As a developer it’s increasingly important to ensure our development, testing, staging, and production environments are as closely matched to each other as possible, alleviating the “can’t reproduce it on my machine” excuses. Whether you use 2, 3, or 4 of these environments is of less importance if they are all built on the same “stack” of applications.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Vagrant is an excellent tool for quickly setup a development environment in a reproducible manner. However it is also a DecOps tool. In this talk the idea is to introduce audience how they can use Vagrant for DevOps
But it works on my dev box! How many times have we heard this answer when the app works on one machine, but fails on another? This is the problem that led my team to use Vagrant to gain consistency between environments. However, could Docker be even better? This talk gives an introduction to Vagrant and Docker and explores how they compare.
EC2 AMI Factory with Chef, Berkshelf, and PackerGeorge Miranda
Presentation accompanying a Live Demo at the AWS Pop-Up Loft in San Francisco on using Chef + Berks + Packer to create an AWS EC2 AMI Factory.
Demo Repo available here -- https://github.com/gmiranda23/chef-ami-factory
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
This presentation, given at the Nashville VMUG Converge 2015 event on April 8, 2015, provides an overview of Vagrant and Docker as tools that VMware administrators might find useful.
Are you still using FTP to deploy your code? Are you still manually performing the same steps of deploying a feature, again and again? How many hours have you spent on ssh-ing into the server, pulling the repo, migrating the database, reloading the web server and so on, for each deployment?? Ever wondered if there is a process as simple as a single click to perform all these steps for you?
Automated Deployment does exactly these things for you. It takes the burden of remembering all the steps required in each deployment process and execute it smoothly.
From Ansible's website: "Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs."
This introduction is based on ansible official docs, capturing most important information to make it easy to understand Ansible main concepts.
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...Sebastian Neubauer
It is a little known fact, that docker was presented the first time to the world in a demo by Solomon Hykes at the PyCon US in Santa Clara in 2013. Furthermore, docker-compose (formerly known as Fig) is entirely written in python. This may lead to the impression, that docker and python is pure love and a match made in heaven. While for some use-cases this is true. But local development of python code inside a docker container is surprisingly broken, at least if you want to do it right. In this talk I will walk you through the proper setup of a local python development environment using docker. Including sane packaging, testing, automated setup in version control, IDE integration, docker-compose and more. I will share with you all the tiny surprises I encountered and you might have stumbled over yourself already too. As a spoiler, I will not be able to give nice solutions to all of them. But it might help you, to not feel stupid the next time you face one of them: Good news, probably it’s not you!
Slides for my talk at the HashiCorp User Group - Amsterdam.
Having a look at some hurdles encountered and other significant points in building a base Vagrant box w/ Packer through a personal use case
Video: https://www.youtube.com/watch?v=J-s9dSjYEJw
GitHub repo: https://github.com/cristovaov/packer-vagrant-talk
Event: http://www.meetup.com/HUG-Amsterdam/events/230517085/
Vagrant is an excellent tool for quickly setup a development environment in a reproducible manner. However it is also a DecOps tool. In this talk the idea is to introduce audience how they can use Vagrant for DevOps
But it works on my dev box! How many times have we heard this answer when the app works on one machine, but fails on another? This is the problem that led my team to use Vagrant to gain consistency between environments. However, could Docker be even better? This talk gives an introduction to Vagrant and Docker and explores how they compare.
EC2 AMI Factory with Chef, Berkshelf, and PackerGeorge Miranda
Presentation accompanying a Live Demo at the AWS Pop-Up Loft in San Francisco on using Chef + Berks + Packer to create an AWS EC2 AMI Factory.
Demo Repo available here -- https://github.com/gmiranda23/chef-ami-factory
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
This presentation, given at the Nashville VMUG Converge 2015 event on April 8, 2015, provides an overview of Vagrant and Docker as tools that VMware administrators might find useful.
Are you still using FTP to deploy your code? Are you still manually performing the same steps of deploying a feature, again and again? How many hours have you spent on ssh-ing into the server, pulling the repo, migrating the database, reloading the web server and so on, for each deployment?? Ever wondered if there is a process as simple as a single click to perform all these steps for you?
Automated Deployment does exactly these things for you. It takes the burden of remembering all the steps required in each deployment process and execute it smoothly.
From Ansible's website: "Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs."
This introduction is based on ansible official docs, capturing most important information to make it easy to understand Ansible main concepts.
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...Sebastian Neubauer
It is a little known fact, that docker was presented the first time to the world in a demo by Solomon Hykes at the PyCon US in Santa Clara in 2013. Furthermore, docker-compose (formerly known as Fig) is entirely written in python. This may lead to the impression, that docker and python is pure love and a match made in heaven. While for some use-cases this is true. But local development of python code inside a docker container is surprisingly broken, at least if you want to do it right. In this talk I will walk you through the proper setup of a local python development environment using docker. Including sane packaging, testing, automated setup in version control, IDE integration, docker-compose and more. I will share with you all the tiny surprises I encountered and you might have stumbled over yourself already too. As a spoiler, I will not be able to give nice solutions to all of them. But it might help you, to not feel stupid the next time you face one of them: Good news, probably it’s not you!
Slides for my talk at the HashiCorp User Group - Amsterdam.
Having a look at some hurdles encountered and other significant points in building a base Vagrant box w/ Packer through a personal use case
Video: https://www.youtube.com/watch?v=J-s9dSjYEJw
GitHub repo: https://github.com/cristovaov/packer-vagrant-talk
Event: http://www.meetup.com/HUG-Amsterdam/events/230517085/
Ansible is the simplest way to automate. MoldCamp, 2015Alex S
Ansible is a radically simple IT automation engine. This is new and great configuration management system (like Chef, Puppet) that has been created in 2012 year. Also Ansible is pretty simple and flexible system, that helps you in managing your servers and execute Ad-hoc commands.
During this session I will explain how to start using Ansible in infrastructure orchestration and what are pros and cons of this system. Also I will explain you our experience in deployments, provisioning and other aspects.
Docker has created enormous buzz in the last few years. Docker is a open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers, provide an overview of Docker, and take the participants through the steps for installing Docker. The main session involves using Docker CLI (Command Line Interface) - all the concepts such as images, managing containers, and getting useful work done is illustrated step-by-step by running commands.
Ansible is tool for Configuration Management. The big difference to Chef and Puppet is, that Ansible doesn't need a Master and doesn't need a special client on the servers. It works completely via SSH and the configuration is done in Yaml.
These slides give a short introduction & motivation for Ansible.
Docker and Puppet for Continuous IntegrationGiacomo Vacca
Today developers want to change the code, build and deploy often, even several times per day.
New versions of software may need to be tested on different distributions, and with different configurations.
Achieving this with Virtual Machines it’s possible, but it’s very resource and time consuming. Docker provides an incredibly good solution for this, in particular if combined with Continuous Integration tools like Jenkins and Configuration Management tools like Puppet.
This presentation focuses on the opportunities to configure automatically Docker images, use Docker containers as disposable workers during your tests, and even running your Continuous Integration system inside Docker.
My talk from Dockercon EU in Amsterdam, Dec 2014. Original abstract:
The ModCloth Platform team has been building a Docker-based continuous delivery pipeline. This presentation discusses that project and how we build containers at ModCloth. The topics include what goes into our containers; how to optimize builds to use the Docker build cache effectively; useful development workflows (including using fig); and the key decision to treat containers as processes instead of mini-vms. This presentation will also discuss (and demo!) the workflow we’ve adopted for building containers and how we’ve integrated container builds with our CI.
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...Docker, Inc.
The ModCloth Platform team has been building a Docker-based continuous delivery pipeline. This presentation discusses that project and how we build containers at ModCloth. The topics include what goes into our containers; how to optimize builds to use the Docker build cache effectively; useful development workflows (including using fig); and the key decision to treat containers as processes instead of mini-vms. This presentation will also discuss (and demo!) the workflow we’ve adopted for building containers and how we’ve integrated container builds with our CI.
Taking Control of Chaos with Docker and PuppetPuppet
"Taking Control of Chaos (with Docker and Puppet)" by Tomas Doran (@bobtfish) of Yelp at Puppet Camp London 2014. Find the video here: http://puppetlabs.com/community/puppet-camp
Leveraging Docker for Hadoop build automation and Big Data stack provisioningDataWorks Summit
Apache Bigtop as an open source Hadoop distribution, focuses on developing packaging, testing and deployment solutions that help infrastructure engineers to build up their own customized big data platform as easy as possible. However, packages deployed in production require a solid CI testing framework to ensure its quality. Numbers of Hadoop component must be ensured to work perfectly together as well. In this presentation, we'll talk about how Bigtop deliver its containerized CI framework which can be directly replicated by Bigtop users. The core revolution here are the newly developed Docker Provisioner that leveraged Docker for Hadoop deployment and Docker Sandbox for developer to quickly start a big data stack. The content of this talk includes the containerized CI framework, technical detail of Docker Provisioner and Docker Sandbox, a hierarchy of docker images we designed, and several components we developed such as Bigtop Toolchain to achieve build automation.
Introduction to Docker at the Azure Meet-up in New YorkJérôme Petazzoni
This is the presentation given at the Azure New York Meet-Up group, September 3rd.
It includes a quick overview of the Open Source Docker Engine and its associated services delivered through the Docker Hub. It also covers the new features of Docker 1.0, and briefly explains how to get started with Docker on Azure.
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Jérôme Petazzoni
If you're not familiar yet with Docker, here is your chance to catch up. This presentation includes a quick overview of the Open Source Docker Engine, and its associated services delivered through the Docker Hub. Recent features are listed, as well as a glimpse at what's next in the Docker world.
This presentation was given during OSCON, at a meet-up hosted by New Relic, with co-presentations from CoreOS and Rackspace OnMetal.
DCSF 19 Building Your Development Pipeline Docker, Inc.
Oliver Pomeroy, Docker & Laura Tacho, Cloudbees
Enterprises often want to provide automation and standardisation on top of their container platform, using a pipeline to build and deploy their containerized applications. However this opens up new challenges; Do I have to build a new CI/CD Stack? Can I build my CI/CD pipeline with Kubernetes orchestration? What should my build agents look like? How do I integrate my pipeline into my enterprise container registry? In this session full of examples and how-to's, Olly and Laura will guide you through common situations and decisions related to your pipelines. We'll cover building minimal images, scanning and signing images, and give examples on how to enforce compliance standards and best practices across your teams.
Using Docker to build and test in your laptop and JenkinsMicael Gallego
Docker is changing the way we create and deploy software. This presentation is a hands-on introduction to how to use docker to build and test software, in your laptop and in your Jenkins CI server
Like all frameworks, Drupal comes with a performance cost, but there are many ways to minimise that cost.
This session explores different and complementary ways to improve performance, covering topics such as caching techniques, performance tuning, and Drupal configuration.
We'll touch on benchmarking before presenting the results from applying each of the performance techniques against copies of a number of real-world Drupal sites.
3. What is Vagrant?
• A tool for developers
• A VM management tool
• Automate the setup of your
development environment
TECHITO: Drupal. Architecture. Integration. Performance.
4. Has this happened to you?
TECHITO: Drupal. Architecture. Integration. Performance.
5. New starter
• Someone joins your project…
• They pick up their laptop…
• Then spend the next 1-2 days following
instructions on setting up their
environment, tools, etc.
TECHITO: Drupal. Architecture. Integration. Performance.
6. Instead, lets do this.
TECHITO: Drupal. Architecture. Integration. Performance.
7. New starter
• Someone joins your project…
• They pick up their laptop…
• Then spend the next 10 minutes running a
script which sets their environment up for
them.
TECHITO: Drupal. Architecture. Integration. Performance.
9. Prerequisites
• Virtualbox
• Vagrant
• Both Virtualbox and Vagrant have great,
simple installation instructions.
TECHITO: Drupal. Architecture. Integration. Performance.
10. SETTING UP THE BOX
Follow these steps once Virtualbox and Vagrant
are installed.
TECHITO: Drupal. Architecture. Integration. Performance.
11. Getting set up
• Add a Vagrant box
• Create the VM
• Configure the VM
• Set up your project environment
TECHITO: Drupal. Architecture. Integration. Performance.
12. Adding a box*
*What’s a box? We’ll cover that shortly.
TECHITO: Drupal. Architecture. Integration. Performance.
18. Getting set up
• Add a Vagrant box
• Create the VM
• Configure the VM
• Set up your project environment
TECHITO: Drupal. Architecture. Integration. Performance.
19. Start with a working dir.
• mkdir –p ~/Development/awesome_project
• cd ~/Development/awesome_project
TECHITO: Drupal. Architecture. Integration. Performance.
21. Launch the Vagrant VM
• vagrant up
TECHITO: Drupal. Architecture. Integration. Performance.
22. Launch the Vagrant VM
• vagrant up
Your vagrant VM is built
and ready to use.
TECHITO: Drupal. Architecture. Integration. Performance.
23. Getting set up
• Add a Vagrant box
• Create the VM
• Configure the VM
• Set up your project environment
TECHITO: Drupal. Architecture. Integration. Performance.
24. SSH to the VM
• vagrant ssh
TECHITO: Drupal. Architecture. Integration. Performance.
25. Install all the things!
• sudo apt-get install curl apache2 avahi-
daemon avahi-discover avahi-utils gcc git-
core libapache2-mod-dnssd make mysql-server
samba subversion unzip vim php5 php-apc php5-
cli php5-curl php5-dev php5-gd php5-memcache
php5-memcached php5-mysqlnd php5-xdebug
• These aren’t all essential, but make a good
base for a good development environment.
TECHITO: Drupal. Architecture. Integration. Performance.
27. Getting set up
• Add a Vagrant box
• Create the VM
• Configure the VM
• Set up your project environment
TECHITO: Drupal. Architecture. Integration. Performance.
29. Set up your environment
• mysql –e “GRANT ALL ON *.* TO
„vagrant‟@‟localhost‟ IDENTIFIED BY „‟
WITH GRANT OPTION”
• Add whichever setup instructions are
appropriate for your environment
TECHITO: Drupal. Architecture. Integration. Performance.
31. STREAMLINING THE SETUP
Manual installation is never efficient
TECHITO: Drupal. Architecture. Integration. Performance.
32. A stream-lined setup
Option 1 – A magick box.
TECHITO: Drupal. Architecture. Integration. Performance.
33. Start with a customised box
• vagrant box add
awesome_project
http://boxes.example.com/super
cool_drupal_project.box
TECHITO: Drupal. Architecture. Integration. Performance.
34. Start with a customised box
• vagrant box add
awesome_project
http://boxes.example.com/super
cool_drupal_project.box
A magick box.
I’ll explain later!
TECHITO: Drupal. Architecture. Integration. Performance.
35. Follow the standard setup
• mkdir –p
~/Development/awesome_project
• cd ~/Development/awesome_project
• vagrant init awesome_project
• vagrant up
TECHITO: Drupal. Architecture. Integration. Performance.
36. Connect to the box
• vagrant ssh
TECHITO: Drupal. Architecture. Integration. Performance.
37. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
TECHITO: Drupal. Architecture. Integration. Performance.
38. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ ls -l /srv/
total 4
drwxr-xr-x 3 root root 4096 Mar 10 18:28 foo.local
TECHITO: Drupal. Architecture. Integration. Performance.
39. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ which drush
/usr/local/bin/drush
TECHITO: Drupal. Architecture. Integration. Performance.
40. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ mysql -e 'show databases';
+--------------------+
| Database |
+--------------------+
| information_schema |
| foo_local |
| mysql |
| performance_schema |
| phpmyadmin |
+--------------------+
TECHITO: Drupal. Architecture. Integration. Performance.
41. Recap of all those steps
• vagrant box add awesome_project
http://boxes.example.com/superco
ol_drupal_project.box
• mkdir –p
~/Development/awesome_project
• cd ~/Development/awesome_project
• vagrant init awesome_project
• vagrant up
TECHITO: Drupal. Architecture. Integration. Performance.
46. Verify the checkout
• ls -l
TECHITO: Drupal. Architecture. Integration. Performance.
47. Verify the checkout
• ls -l
Vagrantfile is
required
TECHITO: Drupal. Architecture. Integration. Performance.
48. Verify the checkout
• ls -l
Puppet/chef setup
automates the box
provisioning
TECHITO: Drupal. Architecture. Integration. Performance.
49. Get Vagrant going
• vagrant up
TECHITO: Drupal. Architecture. Integration. Performance.
50. Connect to the box
• vagrant ssh
TECHITO: Drupal. Architecture. Integration. Performance.
51. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
TECHITO: Drupal. Architecture. Integration. Performance.
52. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ ls -l /srv/
total 4
drwxr-xr-x 3 root root 4096 Mar 10 18:28 foo.local
TECHITO: Drupal. Architecture. Integration. Performance.
53. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ which drush
/usr/local/bin/drush
TECHITO: Drupal. Architecture. Integration. Performance.
54. Verify what’s in the box
• ls /srv/
• which drush
• mysql -e 'show databases;'
vagrant@vm-druprecise:~$ mysql -e 'show databases';
+--------------------+
| Database |
+--------------------+
| information_schema |
| foo_local |
| mysql |
| performance_schema |
| phpmyadmin |
+--------------------+
TECHITO: Drupal. Architecture. Integration. Performance.
55. Recap of all those steps
• mkdir –p
~/Development/awesome_project
• cd
~/Development/awesome_project
• git clone
git@github.com/example/awesome
_project.git .
• vagrant up
TECHITO: Drupal. Architecture. Integration. Performance.
59. Vagrant Vocabulary
• Virtualbox
An application to run "Virtual machines" on your
laptop/desktop.
• Vagrant
An application that automates the setup of VMs.
• Host
The laptop/desktop that runs Virtualbox +
Vagrant.
• Guest / Guest VM / Instance
The virtual machine running within the host.
TECHITO: Drupal. Architecture. Integration. Performance.
60. Vagrant Vocabulary
• Mount
A way of sharing files between the host and guest (this
is a simplification – search for "disk mount" for a more
detailed explanation).
• Provision / Provisioning
Setting up the VM, installing packages, configuring
users, etc.
• Box / Base box
A template for a Virtual Machine.
• Vagrantfile
A set of instructions to Vagrant on how to build and
configure a VM.
TECHITO: Drupal. Architecture. Integration. Performance.
61. TWO APPROACHES
A "magick" pre-packaged box, or a vagrant config
structure.
TECHITO: Drupal. Architecture. Integration. Performance.
62. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
TECHITO: Drupal. Architecture. Integration. Performance.
63. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will give you a template
TECHITO: Drupal. Architecture. Integration. Performance.
64. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will give you a template
• Configure the Vagrantfile.
– Hostname, network adapters, config paths…
TECHITO: Drupal. Architecture. Integration. Performance.
65. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will give you a template
• Configure the Vagrantfile.
– Hostname, network adapters, config paths…
Great docs at http://vagrantup.com/
TECHITO: Drupal. Architecture. Integration. Performance.
66. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will give you a template
• Configure the Vagrantfile.
– Hostname, network adapters, config paths…
TECHITO: Drupal. Architecture. Integration. Performance.
67. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will give you a template
• Configure the Vagrantfile.
– Hostname, network adapters, config paths…
• Add puppet/chef manifests
TECHITO: Drupal. Architecture. Integration. Performance.
68. Standard practice
• Start with a base-box of choice.
– Ubuntu, CentOS, Debian…?
– 32 bit vs 64 bit
• Add a Vagrantfile.
– `vagrant init` will giveI'll talk briefly on
you a template
• Configure the Vagrantfile.
puppet + chef shortly
– Hostname, network adapters, config paths…
• Add puppet/chef manifests
TECHITO: Drupal. Architecture. Integration. Performance.
69. What's in the "magick" box?
• vagrant box add
awesome_project
http://boxes.example.com/super
cool_drupal_project.box
A magick box.
TECHITO: Drupal. Architecture. Integration. Performance.
70. What's in the "magick" box?
• I started with a standard Vagrant base-box
(I used the ubuntu-precise package, supplied
by Canonical).
• I tweaked the Vagrantfile, and added puppet
config (in the same way as setting up a regular
Vagrant VM).
• I used a special packaging script to package
the base-box, with the Vagrantfile and the
puppet manifests included.
TECHITO: Drupal. Architecture. Integration. Performance.
71. What's in the "magick" box?
• I started with a standard Vagrant base-box
(I used the ubuntu-precise package, supplied
by Canonical).
• I tweaked the Vagrantfile, and added puppet
config (in the same way as setting up a regular
Vagrant VM).
• I used a special packaging script to package
the base-box, with the Vagrantfile and the
puppet manifests included.
TECHITO: Drupal. Architecture. Integration. Performance.
72. What's in the "magick" box?
• I started with a standard Vagrant base-box
(I used the ubuntu-precise package, supplied
by Canonical).
• I tweaked the Vagrantfile, and added puppet
Vagrant(in the same way as setting up a regular
config will package:
Vagrant VM). (a virtual-disk standard)
the 'vmdk'
I used'ovf' (a Virtualbox script to package
• the a special packaging VM descriptor)
the base-box, with the Vagrantfile and the
puppet manifests included.
TECHITO: Drupal. Architecture. Integration. Performance.
73. What's in the "magick" box?
• I started with a standard Vagrant base-box
(I used the ubuntu-precise package, supplied
by Canonical).
• I tweaked the Vagrantfile, and added puppet
config (in the same way as setting up a regular
It Vagrant VM).
also added:
• I usedVagrantfile
My a special packaging script to package
the base-box, with the Vagrantfile and the
My custom puppet scripts
puppet manifests included.
TECHITO: Drupal. Architecture. Integration. Performance.
74. What's in the "magick" box?
• I started with a standard Vagrant base-box
(I used the ubuntu-precise package, supplied
Essentially the same as a
by Canonical).
standard Vagrant
• I tweaked the Vagrantfile, and added puppet
config (in the same way as setting up a regular
config, except that
Vagrant VM).
• I used a special packaging packaged
everything is all script to package
the base-box, with the Vagrantfile and the
together. included.
puppet manifests
TECHITO: Drupal. Architecture. Integration. Performance.
75. Magick box vs standard config
Magick Standard
• Simpler for junior • Standard practice.
developers. • No surprises, everything
• Puppet/chef config tucked visible.
away out of sight. • Easily updateable (and
• Base-box and config stored version-controllable).
together in one place. • No special packaging
• Streamlined setup. required.
TECHITO: Drupal. Architecture. Integration. Performance.
76. MAGICK BOX PACKAGING
Two approaches: puppet/chef config only, or
complete packaging.
TECHITO: Drupal. Architecture. Integration. Performance.
77. Packaging practices
Puppet/chef only Complete packaging
• Smaller base-box. • Larger base-box.
• Requires internet access to • Ready to go without
build. needing internet access.
• Always fetches latest • Packages may become out-
version of the packages. of-date.
TECHITO: Drupal. Architecture. Integration. Performance.
78. CREATING YOUR OWN BASE BOX
TECHITO: Drupal. Architecture. Integration. Performance.
79. Why create a base box?
• More flexibility than puppet/chef alone
• Trusted source
• Specific version of O/S (maybe you really want
to run Slackware as your O/S of choice!)
TECHITO: Drupal. Architecture. Integration. Performance.
80. How to create a base box
• Start by creating the VM in Virtualbox* as usual.
• Follow community standards where possible
(sizing of VM, disk, RAM, etc).
• Add several Vagrant-specific tools (an SSH
key, etc). Instructions on http://vagrantup.com/.
• OR: use Veewee to build it for you.
* Vagrant is becoming less Virtualbox-specific, so you may be
able to use a different provider, such as VMWare.
TECHITO: Drupal. Architecture. Integration. Performance.
84. Puppet or Chef?
• Puppet and Chef do the same thing –
automated provisioning:
– Installing packages (apt-get install / yum install)
– Creating users + groups
– Managing config files
– Any provisioning task imaginable
(but you might have to write the plugin)
• Both are Ruby applications.
• Both have an active open-source community.
TECHITO: Drupal. Architecture. Integration. Performance.
85. Puppet or Chef?
• How do you choose?
– Is anyone in your team familiar with either of
them?
– Do you use any modules/packages/vagrant setups
which expect one or the other?
– Can you easily find support (either paid-for or
free) in your community?
TECHITO: Drupal. Architecture. Integration. Performance.
86. Puppet or chef resources
Puppet Chef
• The Drupal.org testbots • Megalodon
http://drupal.org/project/dr https://github.com/msonna
upaltestbot-puppet baum/megalodon
• Demo from this talk (native install, rather than
https://github.com/Techito/ VM).
vagrant_drupal_box • Drupal Vagrant project
• Project Oscar http://drupal.org/project/v
https://github.com/manart agrant
h/oscar
TECHITO: Drupal. Architecture. Integration. Performance.
90. Beyond Vagrant & dev VMs
• Vagrant is expanding to cover other provisioning
tools:
– VMWare Fusion
– ESXi
– Amazon
– ???
• Puppet and Chef can manage your
test/stage/CI/production environments too.
• Tools like Cobbler and Satellite can fully-automate
the build of new VMs
TECHITO: Drupal. Architecture. Integration. Performance.
92. Vagrant…
• Automates the setup and installation of a local
dev VM.
• Create a fully-configured ready-to-go VM in
minutes.
• Basic usage doesn't need any new skills.
• Advanced configuration possible with
Veewee, Puppet and Chef.
• To get started: download an open-source
Vagrant setup, or build your own.
TECHITO: Drupal. Architecture. Integration. Performance.