SlideShare a Scribd company logo
LONG LIFE TO VAGRANT…
VAGRANT IS DEAD
federico.panini@fazland.com - CTO
Development boxes and modern software
lifecycle development techniques.
How our development
team grew up and how we evolved
our development stack.
federico.panini@fazland.com - CTO
Federico Panini
CTO @Fazland.com
Team Manager of 8 people
PHP Developer with lots of
years of experience ….
Ops @Fazland.com
federico.panini@fazland.com - CTO
Maya
CHO @Fazland.com
Chief Happiness Officier
Spreading love all over the
company :)
federico.panini@fazland.com - CTO
Fazland is a marketplace where customers
find the right professional for all their daily
projects and smart professionals find new
clients, while promoting quality, merit and
transparency
How many of you use Vagrant ?
federico.panini@fazland.com - CTO
How many of you don’t use Vagrant ?
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
Martin Fawler
“…This kind of delivery thinking has long been a forgotten corner
of software development, falling into a hole between developers
and operations teams. So it’s no surprise that the techniques in this
book rest upon bringing these teams together—a harbinger of the
nascent but growing DevOps movement.”
Foreword by Martin Fawler in 

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 

by David Farley; Jez Humble
federico.panini@fazland.com - CTO
Continuous Integration:
Improving Software Quality and
Reducing Risk.
by Andrew Glover , Steve
Matyas , Paul M. Duvall
Publisher: Addison-Wesley
Professional Published: June
2007
federico.panini@fazland.com - CTO
Continuous Delivery: Reliable
Software Releases through
Build, Test, and Deployment
Automation.



by David Farley; Jez Humble



Published by Addison-Wesley
Professional, 2010
federico.panini@fazland.com - CTO
What is this talk about
Development Workstations
federico.panini@fazland.com - CTO
Federico Panini
federico.panini@fazland.com - CTO
Development Workstations
https://raygun.com/blog/developer-workstations/
https://nickcraver.com/desktop-build/
(StackOverflow)
federico.panini@fazland.com - CTO
Development TEAMS
Operation TEAMS
federico.panini@fazland.com - CTO
REALLY ?!?!?
Software Development Lifecycle
federico.panini@fazland.com - CTO
Software Development Lifecycle
federico.panini@fazland.com - CTO
Our Experience with Vagrant
Ranting against Vagrant
federico.panini@fazland.com - CTO
What is not this talk about
Vagrant configuration
federico.panini@fazland.com - CTO
What is not this talk about
Vagrant provisioning
federico.panini@fazland.com - CTO
What is not this talk about
Docker, LXC, Ansible
federico.panini@fazland.com - CTO
What is not this talk about
let’s Begin!
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
Virtual Machines
federico.panini@fazland.com - CTO
Virtual Machines
Type 1 hypervisor: hypervisors run directly on the system
hardware. A “bare metal” embedded hypervisor
Type 2 hypervisor: hypervisors run on a host operating system
that provides virtualisation services, such as I/O device support
and memory management.
Vagrant is responsible for managing and build efficiently Virtual
Machines from the CLI. This is has been for years the most used tools
for DEVELOPERS to create consistent development environments.
federico.panini@fazland.com - CTO
What is Vagrant ?
Dependencies and Configuration Isolation
federico.panini@fazland.com - CTO
What is Vagrant ? (DEVS PofV)
All the dependencies and all the configurations files are
isolated from the host OS.
Single Disposable Environment
federico.panini@fazland.com - CTO
VM’s are managed in a single place by a single scripting file
What is Vagrant ? (DEVS PofV)
Consistent Environment
federico.panini@fazland.com - CTO
The guest environment could be recreated with ease by a bunch of
scripting files
What is Vagrant ? (DEVS PofV)
Testing Management Infrastructure
Scripts of your Consistent Workflows
federico.panini@fazland.com - CTO
What is Vagrant ? (OPS PofV)
You could test your infrastructure script with a solid, efficient
environment, you can tests your chef or puppet scripts. You can also
tests the same stuff on the cloud, AWS or other providers, which have
the same workflow.
VAGRANT
federico.panini@fazland.com - CTO
Recap #1
federico.panini@fazland.com - CTO
Recap #1
Vm’s and Vagrant
federico.panini@fazland.com - CTO
FAZLAND … the story so far
Fazland was born 6 years ago.
I joined Fazland 5 years ago.
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
No source control repo
source files managed in a folder backed up with ZIP files
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
No development environment
the very first source files were from another developer
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
1 developer, 1 CTO, 1 ops, 1 ….
just me!
F
A
Z
L
A
N
D
2
0
1
3
no need to change this stack….
FAZLAND … the story so far
wrong
federico.panini@fazland.com - CTO
A little bit of history
federico.panini@fazland.com - CTO
how to manage source files ?
how to manage development environment ?
what about server configuration ?
what about application library dependencies ?
how can I remember all the configurations lost ?
what about if my development MAC will crash ?
what about the time and cost of restoring all the environment ?
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
what about if my development MAC will
crash ?
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
immediately I implemented git as source control and a
virtual machine based on VirtualBox
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
I started managing source code consistently.
I started managing development environment consistently and
isolated…. A black box with all the “secrets” about configuration
& co. hidden to the developer. A solid env with clear
dependencies and configuration.
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.
config.vm.box = “ubuntu/precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :forwarded_port, guest: 80, host: 8383
config.vm.network :forwarded_port, guest: 3306, host: 3306
config.vm.network :forwarded_port, guest: 27017, host: 27017
config.vm.network :private_network, ip: "192.168.0.10"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/manifests"
end
end
application in 2013 — Monolith development stack and application
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
5
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.forward_agent = true
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.base_mac="0800271AB2AC"
config.vm.provider "virtualbox" do |vb|
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", “8192"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
end
application in 2015 — Monolith + first micro services
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
5
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
config.vm.box = “ubuntu/xenial64”
config.ssh.forward_agent = true
config.vm.network "private_network", ip: "192.168.33.50"
config.vm.base_mac="0800271AB2AC"
config.vm.synced_folder "./", "/vagrant", :nfs => true
config.vm.provider "virtualbox" do |vb|
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
end
application in 2016 —- monolith + microservices + DOCKER AS R&D project
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
NFS problems during 2016
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
N
O
W
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = “ubuntu/xenial64"
config.ssh.forward_agent = true
config.ssh.forward_x11 = true
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.base_mac="0800271AB2AC"
config.vm.synced_folder "./", "/vagrant", :nfs => true
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /
usr/share/zoneinfo/Europe/Rome /etc/localtime", run: "always"
config.vm.provision "shell", run: "always" do |s|
s.inline = '
sudo mount -t ramfs none /opt/sycache -o "mode=0777" ;
sudo service nginx restart
'
end
end
application in 2018 - monolith + microservices
federico.panini@fazland.com - CTO
F
A
Z
L
A
N
D
N
O
W
https://github.com/hashicorp/vagrant/issues/8788
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
https://github.com/hashicorp/vagrant/issues/8957
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
https://blog.docksal.io/do-not-update-to-macos-high-sierra-if-you-use-docksal-or-vagrant-3ea461805169
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
federico.panini@fazland.com - CTO
FAZLAND … the story so far quick recap
federico.panini@fazland.com - CTO
VAGRANT AND DOCKER
F
A
Z
L
A
N
D
N
O
W
Vagrant Docker
Virtualization Virtual machine Linux container
Resource isolation Strong Weak (shared kernel)
Startup time Minutes Seconds
Image build time 10+ minutes mins
Size 1GB+ 100MB+
Sharing Vagrant Cloud Docker Hub
• run on top of VM (hypervisor type 2)
• vagrant manage VM’s
• has complete ISOLATION, guest VM
• kernel separated from HOST VM
• it needs some GB of space
• turn on env in minutes
• Linux, Windows, OSX
federico.panini@fazland.com - CTO
VAGRANT AND DOCKER
F
A
Z
L
A
N
D
N
O
W
• uses containers, similar to LXC
• Docker manage container
• less isolation, process isolation
• shared kernel model
• lightweight environment
• turn on env in minutes
• Linux, OSX (slow),
federico.panini@fazland.com - CTO
Recap #2
Vagrant - FazlandVm’s and Vagrant
federico.panini@fazland.com - CTO
Deployment Pipeline
What is a deployment Pipeline ?
federico.panini@fazland.com - CTO
Deployment Pipeline
ANY IDEAS ?
federico.panini@fazland.com - CTO
Deployment Pipeline
“It is the process for getting software
from version control
into the hands of your users.”
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 

by David Farley; Jez Humble
federico.panini@fazland.com - CTO
Deployment Pipeline
federico.panini@fazland.com - CTO
Deployment Pipeline
federico.panini@fazland.com - CTO
Recap #3
Deployment Pipeline
Vm’s and Vagrant Vagrant - Fazland
What we have to do ?
federico.panini@fazland.com - CTO
The end :)
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
THANK YOU !
• Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment
Automation. by David Farley; Jez Humble

Published by Addison-Wesley Professional, 2010
• Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover
, Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June
2007
• https://www.vagrantup.com/intro/index.html
• https://en.wikipedia.org/wiki/Virtual_machine
• https://github.com/hashicorp/vagrant/issues/8788
• https://groups.google.com/forum/#!topic/vagrant-up/UgINc-ppptU
• http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines
• https://hackernoon.com/how-to-create-consistent-development-environments-that-just-
work-55be5417341b
• https://martinfowler.com/bliki/MicroservicePrerequisites.html
• https://martinfowler.com/bliki/MonolithFirst.html
federico.panini@fazland.com - CTO
References
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
Legacy NG + Api
2 different stacks living together
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
Legacy NG + Api
2 different stacks living together
both environments uses micro services for sending email,
manage notifications to browser or mobile app… etc
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. developers works on features tickets
2. developers tests their tickets
3. developers merge the feature tickets on develop branch.
4. Before merge a git pre-commit hook will be invoked and re-
executes all tests.
D
E
V
E
L
O
P
M
E
N
T
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
If tests fails the branch will not be merged.
D
E
V
E
L
O
P
M
E
N
T
if test succeed the feature branch will be merged on develop.
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. when features branches are merged on develop a web hook is invoked
and a stage environment on AWS will fetch the updates and re-create the
environment updated with the latests stuff.
2. during deployment on stage tests (unit, functional and integrations) are
executed
3. if the process succeed a new fresh Stage environment is ready to be
tested by our Product Team
4. When the Product team Validate the tickets a new release will be created,
the master branch will be updated with new stuff and a new tag is created.
S
T
A
G
E
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. every time a new Tag is pushed on remote, a web hook against AWS is
called. And through AWS CodePipeline we start to deploy on production the
new features.
2. the same thing happen with our legacy environment with the difference that
the deploy is done with Capistrano, on pure EC2 instances.if the process
succeed a new fresh Stage environment is ready to be tested by our Product
Team
3. AWS CodePipeline will fetch the new release, make the build (in fact re-
execute tests) and if they succeed update our AWS ECS, draining old images
and creating new ones.
P
R
O
D
U
C
T
I
O
N

More Related Content

PDF
44CON London 2015 - reverse reverse engineering
44CON
 
PPT
Windows: Having its ass kicked by Puppet and Powershell since 2012 #PuppetConf
Paul Stack
 
PDF
Don't screw it up: how to build durable web apis
Alessandro Cinelli (cirpo)
 
PDF
Transforming WebSockets
Arnout Kazemier
 
PDF
WebDev References
dynamis
 
PDF
Continuous Integration and Deployment Patterns for Magento
AOE
 
PDF
Firefox os how large open source project works
Fred Lin
 
PDF
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
Marco Cedaro
 
44CON London 2015 - reverse reverse engineering
44CON
 
Windows: Having its ass kicked by Puppet and Powershell since 2012 #PuppetConf
Paul Stack
 
Don't screw it up: how to build durable web apis
Alessandro Cinelli (cirpo)
 
Transforming WebSockets
Arnout Kazemier
 
WebDev References
dynamis
 
Continuous Integration and Deployment Patterns for Magento
AOE
 
Firefox os how large open source project works
Fred Lin
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
Marco Cedaro
 

What's hot (12)

PDF
Continuous Development and Deployment: Workflows and Patterns
AOE
 
KEY
jsDay - Javascript as a programming language
Marco Cedaro
 
PDF
How to Build a Pure Evil Magento Module
AOE
 
ODP
Containerize vs Virtualize? NGDC 2009
Andy d
 
PDF
Web (dis)assembly
Shakacon
 
PDF
Filip Rakowski "Web Performance in modern JavaScript world"
Fwdays
 
PDF
徒手打造自己的粉專客服機器人
Sasaya Hu
 
PDF
Magento Testing on all fronts
AOE
 
PDF
Svelte the future of frontend development
twilson63
 
PPTX
20 Wireframing Tools
donvito123
 
PDF
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
Fabien Potencier
 
PDF
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
Continuous Development and Deployment: Workflows and Patterns
AOE
 
jsDay - Javascript as a programming language
Marco Cedaro
 
How to Build a Pure Evil Magento Module
AOE
 
Containerize vs Virtualize? NGDC 2009
Andy d
 
Web (dis)assembly
Shakacon
 
Filip Rakowski "Web Performance in modern JavaScript world"
Fwdays
 
徒手打造自己的粉專客服機器人
Sasaya Hu
 
Magento Testing on all fronts
AOE
 
Svelte the future of frontend development
twilson63
 
20 Wireframing Tools
donvito123
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
Fabien Potencier
 
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
Ad

Similar to Long life to vagrant… Vagrant is dead (20)

PDF
OpenStack Murano introduction
Victor Zhang
 
PDF
Why we choose Symfony2
Merixstudio
 
PDF
Virtualization and Cloud Computing with Elastic Server On Demand
Yan Pritzker
 
PDF
Rock-solid Magento Deployments (and Development)
AOE
 
PDF
Building frameworks: from concept to completion
Ruben Goncalves
 
PDF
Dart on Arm - Flutter Bangalore June 2021
Chris Swan
 
PDF
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
PDF
Enjoying the full stack - Frontend 2010
Christian Heilmann
 
PPTX
Install MariaDB on IBM i - Tips, troubleshooting, and more
Rod Flohr
 
PDF
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
André Goliath
 
PDF
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
Marco Cedaro
 
PDF
Scale your Magento app with Elastic Beanstalk
Corley S.r.l.
 
PDF
X by orange; una telco en la nube
Juan Vicente Herrera Ruiz de Alejo
 
PDF
Vagrant - Team Development made easy
Marco Silva
 
PDF
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
VMware Tanzu
 
PDF
Trying and evaluating the new features of GlusterFS 3.5
Keisuke Takahashi
 
PPTX
Introduction Into Docker Ecosystem
Alexander Pastukhov, OCPJP, OCPJWSD
 
PDF
Magento 2: New and Innovative? - php[world] 2015
David Alger
 
PDF
Rock-solid Magento Development and Deployment Workflows
AOE
 
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
OpenStack Murano introduction
Victor Zhang
 
Why we choose Symfony2
Merixstudio
 
Virtualization and Cloud Computing with Elastic Server On Demand
Yan Pritzker
 
Rock-solid Magento Deployments (and Development)
AOE
 
Building frameworks: from concept to completion
Ruben Goncalves
 
Dart on Arm - Flutter Bangalore June 2021
Chris Swan
 
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
Enjoying the full stack - Frontend 2010
Christian Heilmann
 
Install MariaDB on IBM i - Tips, troubleshooting, and more
Rod Flohr
 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
André Goliath
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
Marco Cedaro
 
Scale your Magento app with Elastic Beanstalk
Corley S.r.l.
 
X by orange; una telco en la nube
Juan Vicente Herrera Ruiz de Alejo
 
Vagrant - Team Development made easy
Marco Silva
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
VMware Tanzu
 
Trying and evaluating the new features of GlusterFS 3.5
Keisuke Takahashi
 
Introduction Into Docker Ecosystem
Alexander Pastukhov, OCPJP, OCPJWSD
 
Magento 2: New and Innovative? - php[world] 2015
David Alger
 
Rock-solid Magento Development and Deployment Workflows
AOE
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
Ad

More from Federico Panini (8)

PDF
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Federico Panini
 
PDF
Vagrant boxes with x, export display, chrome headless
Federico Panini
 
PDF
Aws vpc : addressing cidr
Federico Panini
 
PDF
Git in pills : git stash
Federico Panini
 
PPTX
Symfony & Mailcatcher
Federico Panini
 
PDF
Elasticsearch quick Intro (English)
Federico Panini
 
PDF
Elasticsearch a quick introduction
Federico Panini
 
PDF
Elk - Elasticsearch Logstash Kibana stack explained
Federico Panini
 
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Federico Panini
 
Vagrant boxes with x, export display, chrome headless
Federico Panini
 
Aws vpc : addressing cidr
Federico Panini
 
Git in pills : git stash
Federico Panini
 
Symfony & Mailcatcher
Federico Panini
 
Elasticsearch quick Intro (English)
Federico Panini
 
Elasticsearch a quick introduction
Federico Panini
 
Elk - Elasticsearch Logstash Kibana stack explained
Federico Panini
 

Recently uploaded (20)

PPTX
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
PPTX
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
PPTX
谢尔丹学院毕业证购买|Sheridan文凭不见了怎么办谢尔丹学院成绩单
mookxk3
 
PPTX
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PDF
PDF document: World Game (s) Great Redesign.pdf
Steven McGee
 
PPT
1965 INDO PAK WAR which Pak will never forget.ppt
sanjaychief112
 
PDF
Project English Paja Jara Alejandro.jpdf
AlejandroAlonsoPajaJ
 
PDF
Cybersecurity Awareness Presentation ppt.
banodhaharshita
 
PPTX
Microsoft PowerPoint Student PPT slides.pptx
Garleys Putin
 
PDF
Latest Scam Shocking the USA in 2025.pdf
onlinescamreport4
 
PPTX
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
PDF
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
PDF
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PPTX
SEO Trends in 2025 | B3AITS - Bow & 3 Arrows IT Solutions
B3AITS - Bow & 3 Arrows IT Solutions
 
PDF
DNSSEC Made Easy, presented at PHNOG 2025
APNIC
 
PPTX
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PPTX
Blue and Dark Blue Modern Technology Presentation.pptx
ap177979
 
PDF
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
PPTX
Generics jehfkhkshfhskjghkshhhhlshluhueheuhuhhlhkhk.pptx
yashpavasiya892
 
PPTX
The Latest Scam Shocking the USA in 2025.pptx
onlinescamreport4
 
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
谢尔丹学院毕业证购买|Sheridan文凭不见了怎么办谢尔丹学院成绩单
mookxk3
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PDF document: World Game (s) Great Redesign.pdf
Steven McGee
 
1965 INDO PAK WAR which Pak will never forget.ppt
sanjaychief112
 
Project English Paja Jara Alejandro.jpdf
AlejandroAlonsoPajaJ
 
Cybersecurity Awareness Presentation ppt.
banodhaharshita
 
Microsoft PowerPoint Student PPT slides.pptx
Garleys Putin
 
Latest Scam Shocking the USA in 2025.pdf
onlinescamreport4
 
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
SEO Trends in 2025 | B3AITS - Bow & 3 Arrows IT Solutions
B3AITS - Bow & 3 Arrows IT Solutions
 
DNSSEC Made Easy, presented at PHNOG 2025
APNIC
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
Blue and Dark Blue Modern Technology Presentation.pptx
ap177979
 
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
Generics jehfkhkshfhskjghkshhhhlshluhueheuhuhhlhkhk.pptx
yashpavasiya892
 
The Latest Scam Shocking the USA in 2025.pptx
onlinescamreport4
 

Long life to vagrant… Vagrant is dead

  • 1. LONG LIFE TO VAGRANT… VAGRANT IS DEAD [email protected] - CTO Development boxes and modern software lifecycle development techniques. How our development team grew up and how we evolved our development stack.
  • 2. [email protected] - CTO Federico Panini CTO @Fazland.com Team Manager of 8 people PHP Developer with lots of years of experience …. Ops @Fazland.com
  • 3. [email protected] - CTO Maya CHO @Fazland.com Chief Happiness Officier Spreading love all over the company :)
  • 4. [email protected] - CTO Fazland is a marketplace where customers find the right professional for all their daily projects and smart professionals find new clients, while promoting quality, merit and transparency
  • 5. How many of you use Vagrant ? [email protected] - CTO
  • 6. How many of you don’t use Vagrant ? [email protected] - CTO
  • 7. [email protected] - CTO Martin Fawler “…This kind of delivery thinking has long been a forgotten corner of software development, falling into a hole between developers and operations teams. So it’s no surprise that the techniques in this book rest upon bringing these teams together—a harbinger of the nascent but growing DevOps movement.” Foreword by Martin Fawler in 
 Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 
 by David Farley; Jez Humble
  • 8. [email protected] - CTO Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover , Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June 2007
  • 9. [email protected] - CTO Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
 
 by David Farley; Jez Humble
 
 Published by Addison-Wesley Professional, 2010
  • 10. [email protected] - CTO What is this talk about Development Workstations
  • 12. [email protected] - CTO Development Workstations https://raygun.com/blog/developer-workstations/ https://nickcraver.com/desktop-build/ (StackOverflow)
  • 13. [email protected] - CTO Development TEAMS Operation TEAMS
  • 14. [email protected] - CTO REALLY ?!?!? Software Development Lifecycle
  • 15. [email protected] - CTO Software Development Lifecycle
  • 16. [email protected] - CTO Our Experience with Vagrant
  • 17. Ranting against Vagrant [email protected] - CTO What is not this talk about
  • 18. Vagrant configuration [email protected] - CTO What is not this talk about
  • 19. Vagrant provisioning [email protected] - CTO What is not this talk about
  • 20. Docker, LXC, Ansible [email protected] - CTO What is not this talk about
  • 23. [email protected] - CTO Virtual Machines Type 1 hypervisor: hypervisors run directly on the system hardware. A “bare metal” embedded hypervisor Type 2 hypervisor: hypervisors run on a host operating system that provides virtualisation services, such as I/O device support and memory management.
  • 24. Vagrant is responsible for managing and build efficiently Virtual Machines from the CLI. This is has been for years the most used tools for DEVELOPERS to create consistent development environments. [email protected] - CTO What is Vagrant ?
  • 25. Dependencies and Configuration Isolation [email protected] - CTO What is Vagrant ? (DEVS PofV) All the dependencies and all the configurations files are isolated from the host OS.
  • 26. Single Disposable Environment [email protected] - CTO VM’s are managed in a single place by a single scripting file What is Vagrant ? (DEVS PofV)
  • 27. Consistent Environment [email protected] - CTO The guest environment could be recreated with ease by a bunch of scripting files What is Vagrant ? (DEVS PofV)
  • 28. Testing Management Infrastructure Scripts of your Consistent Workflows [email protected] - CTO What is Vagrant ? (OPS PofV) You could test your infrastructure script with a solid, efficient environment, you can tests your chef or puppet scripts. You can also tests the same stuff on the cloud, AWS or other providers, which have the same workflow.
  • 30. [email protected] - CTO Recap #1 Vm’s and Vagrant
  • 31. [email protected] - CTO FAZLAND … the story so far Fazland was born 6 years ago. I joined Fazland 5 years ago. F A Z L A N D 2 0 1 3
  • 32. [email protected] - CTO No source control repo source files managed in a folder backed up with ZIP files F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 33. [email protected] - CTO No development environment the very first source files were from another developer F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 34. [email protected] - CTO 1 developer, 1 CTO, 1 ops, 1 …. just me! F A Z L A N D 2 0 1 3 no need to change this stack…. FAZLAND … the story so far
  • 35. wrong [email protected] - CTO A little bit of history
  • 36. [email protected] - CTO how to manage source files ? how to manage development environment ? what about server configuration ? what about application library dependencies ? how can I remember all the configurations lost ? what about if my development MAC will crash ? what about the time and cost of restoring all the environment ? F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 37. what about if my development MAC will crash ? [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 38. [email protected] - CTO immediately I implemented git as source control and a virtual machine based on VirtualBox F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 39. [email protected] - CTO I started managing source code consistently. I started managing development environment consistently and isolated…. A black box with all the “secrets” about configuration & co. hidden to the developer. A solid env with clear dependencies and configuration. F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 40. [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 41. [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # All Vagrant configuration is done here. The most common configuration # options are documented and commented below. For a complete reference, # please see the online documentation at vagrantup.com. config.vm.box = “ubuntu/precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.network :forwarded_port, guest: 80, host: 8383 config.vm.network :forwarded_port, guest: 3306, host: 3306 config.vm.network :forwarded_port, guest: 27017, host: 27017 config.vm.network :private_network, ip: "192.168.0.10" config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end config.vm.provision :puppet do |puppet| puppet.manifests_path = "puppet/manifests" end end
  • 42. application in 2013 — Monolith development stack and application [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 43. [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 5 # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" config.ssh.forward_agent = true config.vm.network "private_network", ip: "192.168.33.10" config.vm.base_mac="0800271AB2AC" config.vm.provider "virtualbox" do |vb| # vb.gui = true vb.customize ["modifyvm", :id, "--memory", “8192"] vb.customize ["modifyvm", :id, "--cpus", "4"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end end
  • 44. application in 2015 — Monolith + first micro services [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 5
  • 45. [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6 # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = “ubuntu/xenial64” config.ssh.forward_agent = true config.vm.network "private_network", ip: "192.168.33.50" config.vm.base_mac="0800271AB2AC" config.vm.synced_folder "./", "/vagrant", :nfs => true config.vm.provider "virtualbox" do |vb| # vb.gui = true vb.customize ["modifyvm", :id, "--memory", "4096"] vb.customize ["modifyvm", :id, "--cpus", "4"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end end
  • 46. application in 2016 —- monolith + microservices + DOCKER AS R&D project [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6
  • 47. [email protected] - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6
  • 48. [email protected] - CTO NFS problems during 2016 F A Z L A N D 2 0 1 6
  • 49. [email protected] - CTO FAZLAND … the story so far F A Z L A N D N O W # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = “ubuntu/xenial64" config.ssh.forward_agent = true config.ssh.forward_x11 = true config.vm.network "private_network", ip: "192.168.33.10" config.vm.base_mac="0800271AB2AC" config.vm.synced_folder "./", "/vagrant", :nfs => true config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "2"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s / usr/share/zoneinfo/Europe/Rome /etc/localtime", run: "always" config.vm.provision "shell", run: "always" do |s| s.inline = ' sudo mount -t ramfs none /opt/sycache -o "mode=0777" ; sudo service nginx restart ' end end
  • 50. application in 2018 - monolith + microservices [email protected] - CTO F A Z L A N D N O W
  • 54. [email protected] - CTO FAZLAND … the story so far quick recap
  • 55. [email protected] - CTO VAGRANT AND DOCKER F A Z L A N D N O W Vagrant Docker Virtualization Virtual machine Linux container Resource isolation Strong Weak (shared kernel) Startup time Minutes Seconds Image build time 10+ minutes mins Size 1GB+ 100MB+ Sharing Vagrant Cloud Docker Hub
  • 56. • run on top of VM (hypervisor type 2) • vagrant manage VM’s • has complete ISOLATION, guest VM • kernel separated from HOST VM • it needs some GB of space • turn on env in minutes • Linux, Windows, OSX [email protected] - CTO VAGRANT AND DOCKER F A Z L A N D N O W • uses containers, similar to LXC • Docker manage container • less isolation, process isolation • shared kernel model • lightweight environment • turn on env in minutes • Linux, OSX (slow),
  • 57. [email protected] - CTO Recap #2 Vagrant - FazlandVm’s and Vagrant
  • 58. [email protected] - CTO Deployment Pipeline What is a deployment Pipeline ?
  • 59. [email protected] - CTO Deployment Pipeline ANY IDEAS ?
  • 60. [email protected] - CTO Deployment Pipeline “It is the process for getting software from version control into the hands of your users.” Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 
 by David Farley; Jez Humble
  • 63. [email protected] - CTO Recap #3 Deployment Pipeline Vm’s and Vagrant Vagrant - Fazland
  • 64. What we have to do ? [email protected] - CTO The end :)
  • 67. • Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. by David Farley; Jez Humble
 Published by Addison-Wesley Professional, 2010 • Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover , Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June 2007 • https://www.vagrantup.com/intro/index.html • https://en.wikipedia.org/wiki/Virtual_machine • https://github.com/hashicorp/vagrant/issues/8788 • https://groups.google.com/forum/#!topic/vagrant-up/UgINc-ppptU • http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines • https://hackernoon.com/how-to-create-consistent-development-environments-that-just- work-55be5417341b • https://martinfowler.com/bliki/MicroservicePrerequisites.html • https://martinfowler.com/bliki/MonolithFirst.html [email protected] - CTO References
  • 68. [email protected] - CTO FAZLAND current Deployment Pipeline Legacy NG + Api 2 different stacks living together
  • 69. [email protected] - CTO FAZLAND current Deployment Pipeline Legacy NG + Api 2 different stacks living together both environments uses micro services for sending email, manage notifications to browser or mobile app… etc
  • 70. [email protected] - CTO FAZLAND current Deployment Pipeline 1. developers works on features tickets 2. developers tests their tickets 3. developers merge the feature tickets on develop branch. 4. Before merge a git pre-commit hook will be invoked and re- executes all tests. D E V E L O P M E N T
  • 71. [email protected] - CTO FAZLAND current Deployment Pipeline If tests fails the branch will not be merged. D E V E L O P M E N T if test succeed the feature branch will be merged on develop.
  • 72. [email protected] - CTO FAZLAND current Deployment Pipeline 1. when features branches are merged on develop a web hook is invoked and a stage environment on AWS will fetch the updates and re-create the environment updated with the latests stuff. 2. during deployment on stage tests (unit, functional and integrations) are executed 3. if the process succeed a new fresh Stage environment is ready to be tested by our Product Team 4. When the Product team Validate the tickets a new release will be created, the master branch will be updated with new stuff and a new tag is created. S T A G E
  • 73. [email protected] - CTO FAZLAND current Deployment Pipeline 1. every time a new Tag is pushed on remote, a web hook against AWS is called. And through AWS CodePipeline we start to deploy on production the new features. 2. the same thing happen with our legacy environment with the difference that the deploy is done with Capistrano, on pure EC2 instances.if the process succeed a new fresh Stage environment is ready to be tested by our Product Team 3. AWS CodePipeline will fetch the new release, make the build (in fact re- execute tests) and if they succeed update our AWS ECS, draining old images and creating new ones. P R O D U C T I O N