SlideShare a Scribd company logo
1 of 89
Download to read offline
Take Home Your Very Own
Free Vagrant CFML
Dev Environment
Presented By: Gavin Pickin
dev.Objective() 2016
Who Am I?
★Gavin Pickin – developing Web Apps since late 90s
○Ortus Solutions Software Consultant
○ContentBox Evangelist
★What else do you need to know?
○CFMLRepo.com http://www.cfmlrepo.com
○Blog - http://gpickin.com
○Twitter – http://tw.gavinpickin.com
○Github - https://github.com/gpickin
○Linked In: http://li.gavinpickin.com/
★Lets get on with the show.
The Problem
From developers, designers, managers, everyone working on your app, needs a
way to run dev versions of your app, on their machines.
The problem is, you might have:
● different OSes,
● different file systems,
● different web servers
● different app servers
● different db servers
● manager dns and ips
● a million dependencies to manage
● Windows
● CentOS / RHEL
● Ubuntu
● Other?
What OS do you use?
What Web Server do you use?
● IIS
● Apache
● Nginx
What CFML Server do you use?
● Railo
● Lucee 4.5
● Lucee 5
● ColdFusion 9
● ColdFusion 10
● ColdFusion 11
● ColdFusion 12 2016
What DB do you use?
● MSSql
● MySql
● PostgreSql
● Oracle
● Couchbase
● CouchDB
● Reddis
● Mongo
● Local Storage
● Cookies
● MS Access
● Excel
● CSV
● Text
The Solution
A simple vm that can be
up and running in minutes
that gives the developer
the same dev
environment as everyone
else, regardless of
platform, tools, engines,
os etc
The Solution
" Vagrant provides easy to configure,
reproducible, and portable work
environments built on top of industry-
standard technology and controlled by a
single consistent workflow to help
maximize the productivity and flexibility of
you and your team."
https://www.vagrantup.com/docs/why-vagrant/
Is Vagrant Perfect???
● nothing is perfect
● there are a lot of pros and cons
● it might be overkill for
small or simple projects
Alternatives to Vagrant
● CommandBox
● Docker - Containers
● Chef / Puppet / Ansible
CommandBox - Pros
● love it
● cross platform
● Simple
● multi engine
● it's cfml and json
● always improving
CommandBox - Cons
● undertow not a full web server
● It's dependent on your os
● limited host support
● limited rewrites etc
● it's dependent on your
libraries tools etc
Docker / Chef / Puppet / Ansible - Pros
● Lots of great alternative options
● Lots of great features and benefits
but...
Docker / Chef / Puppet / Ansible - Cons
● Another set of fast moving tools to learn
● Each have their own strengths and weaknesses
● New configuration options, syntax and DSL
● How easy is it really to drop a CFML site in and go
Disclaimer: I’m going to several docker sessions this week,
so hopefully I will know more
Why use Vagrant?
● automated configuration for team environments, perfect example,
SAP connector or image magick plugins
● automated mappings, data sources, other settings
● automated dependencies and library versions
● easy switching in and out between os, web servers etc
● source control for sharing and maintaining the specs / automation
● solid cross platform compat
● dev like local, test like staging
As a CFML Dev - So why should I use vagrant
then?
With the setup I am going to show you:
● It reduces the barriers to entry
● Gives you a great starting point
● No requirement for learning vagrant
We can also work together to better this vagrant tool, offer
more options, and share our successes.
Installing Vagrant
Installing Vagrant is easy
Visit Download page and select the
appropriate OS package
https://www.vagrantup.com/downloads.html
Installation will add ‘vagrant’ to your path.
Logout and login again if necessary
Providers
Providers is the underlying tool that your VM runs on.
While Vagrant ships out of the box with support for
VirtualBox, Hyper-V, and Docker, you can install others.
2 common use cases
● Virtual Box - https://www.virtualbox.org/wiki/Downloads
○ Free
● VM Ware
○ Commercial
Providers
You can switch out a provider in the vagrant file, or
on vagrant up
$ vagrant up --provider=vmware_fusion
$ vagrant up --provider=aws
Boxes
Instead of building a virtual machine from
scratch, which would be a slow and tedious
process, Vagrant uses a base image to quickly
clone a virtual machine.
You can also share your vagrant file and
provisioners, like I am today
Provisioners
Provisioners in Vagrant allow you to automatically install
software, alter configurations, and more on the machine as
part of the vagrant up process.
This is where you can automate your process to make it
repeatable, sharable, and this is where the value of Vagrant
really kicks in.
You can provision with a lot of different tools.
Plugins
Once Vagrant is installed, or if it already is, it's highly
recommended that you install the following Vagrant plugins:
● vagrant-hostsupdater
$ vagrant plugin install vagrant-hostsupdater
● vagrant-vbguest
$ vagrant plugin install vagrant-vbguest
Command Line Interface - CLI
Although you have options to add, edit and remove boxes, and a lot more,
in this session, we're talking about using existing Vagrant setups that we
have built, and we're sharing with you.
Common Commands that you will use with these setups would be
● vagrant up
● vagrant halt
● vagrant reload
● vagrant provision
● vagrant reload --provision
● vagrant ssh
● vagrant destroy
● vagrant share
CLI Command: vagrant up
This command creates and configures guest machines
according to your Vagrantfile.
This is the single most important command in Vagrant, since
it is how any Vagrant machine is created. Anyone using
Vagrant must use this command on a day-to-day basis.
CLI Command: vagrant halt
This command shuts down the running machine Vagrant is
managing.
Vagrant will first attempt to gracefully shut down the machine
by running the guest OS shutdown mechanism. If this fails, or
if the --force flag is specified, Vagrant will effectively just shut
off power to the machine.
CLI Command: vagrant reload
The equivalent of running a halt followed by an up.
This command is usually required for changes made in the
Vagrantfile to take effect. After making any modifications to
the Vagrantfile, a reload should be called.
The configured provisioners will not run again, by default. You
can force the provisioners to re-run by specifying the --
provision flag.
CLI Command: vagrant provision
Runs any configured provisioners against the running
Vagrant managed machine.
This command is a great way to quickly test any provisioners.
You can just make simple modifications to the provisioning
scripts on your machine, run a vagrant provision, and check
for the desired results. Rinse and repeat.
CLI Command: vagrant reload --provision
The equivalent of running a halt followed by an up and forcing
provisioners to run.
After making any modifications to the Vagrantfile, or the
Provisioners, a reload should be called.
CLI Command: vagrant ssh
This will SSH into a running Vagrant machine and give you
access to a shell.
Note: On Windows you need a TTY terminal for full shell
interactivity, one option is ConEmu.
CLI Command: vagrant destroy
This command stops the running machine Vagrant is managing and destroys all
resources that were created during the machine creation process. After running
this command, your computer should be left at a clean state, as if you never
created the guest machine in the first place.
Warning: If you do a destroy, the next time you ‘vagrant up’ - you will have a long
wait before the VM is ready
CLI Command: vagrant share
The share command initializes a Vagrant Share session,
allowing you to share your Vagrant environment with anyone
in the world, enabling collaboration directly in your Vagrant
environment in almost any network environment.
This is not perfect, and you should not rely on it. I will try and
demo this later, but it might go down in flames, be warned.
Learning Curve
The title of this session promised a free cfml dev
environment, do I have to do everything myself?
Thankfully no… thanks to members of the CFML community,
you have some ready to go vagrant images.
Lets look at one, and see how it works.
Vagrant-centos-lucee
Github Repo: https://github.com/Ortus-Solutions/vagrant-
centos-lucee
Big thanks to: Dan Skaggs, Luis Majano, Brad Wood, and
Evagoras Charalambous
Lets look at the readme.md
What’s in the repo?
● vagrant/ : Run all vagrant commands from this directory.
○ artifacts/ : Where downloaded installers will be placed
○ provisioners/ : The provisionning bash scripts for the box
○ configs/ : Configuration files for Nginx, Lucee, etc
○ Vagrantfile/ : The vagrant configuration file
○ log/ : Where a log file is stored that documents the last provisioning
process.
○ Sample_VagrantConfig.yaml : A sample configuration file for new sites.
See "Configuring Sites".
● www/ : Code for the small, default site that shows you the status of your
configuration
Why this setup is awesome
● mappings etc
● cfml customization
● built on commandbox
● you can have fusion reactor built in
● dev config can match staging & production
● Ties into cfml engine to settings & config
Customizations I have made before
● updated lucee version
● updated or specific version or nginx
● SES rewrite support
● installing image magick
● installing and r3 adapter for SAP
● config files that match staging and
production - storage
Deep dive into the r3 adapter install
● copy jars
● copy *.so files
● you, installing lib.std.c++5.0
● copying an so file to the right folder /usr/var
● creating and ldconfig conf file with paths to jars
and so files
● running the ldconfig to load the dynamic library
Let's look at vagrant up and running
I’m not dumb enough to do a full live demo without slides.
Screenshots, so we can stop and talk about each one
Fingers crossed, we’ll try a live demo too.
Add a new site to this setup
The conventions for this setup are fairly simple
Create a folder to put your VM stuff in
Inside that:
● clone your vagrant repo
● Add your websites
● Add VagrantConfig folder to your websites
● Add vagrant credentials folder**
** Vagrant Credentials Folder - optional but recommended
Add your Website
You can take 2 approaches to adding your files
Flat structure Nested structure
Website Vagrant Config File
● Yaml file - Tabs and spaces matter
● Location: VagrantConfig / settings.yaml
● Site settings to help vagrant spin up your
website automatically
Vagrant Config - Page 1
# name of the app
name: coldboxRest
# Path to web root relative to the repo root
webroot: www
# SES Rewrites - True or False
sesrewrites: false
# List of domains to be added to the Host machine's and VM's "hosts" file
hosts:
- coldboxrest.gpickin.com
Vagrant Config - Page 2
# List of CF Mappings to create relative to the repo root or drive root if starts with a /
cfmappings:
- virtual: '/storage/coldboxrest/'
physical: '/opt/storage/coldboxrest/'
# List of Nginx Mappings to create
nginxmappings:
- virtual: '/storage/coldboxrest/'
physical: '/opt/storage/coldboxrest/'
Vagrant Config - Page 3
# List of datasources to create
datasources:
- name: coldboxapp_client
database: coldboxapp_Client
host: mydb.gpickin.com
port: 1433
class: com.microsoft.jdbc.sqlserver.SQLServerDriver
dsn: jdbc:sqlserver://{host}:{port};DATABASENAME={database};
sendStringParametersAsUnicode=true;SelectMethod=direct
storage: true
password: topsecret
username: gavin
Provisioning your Websites
Vagrant provision or vagrant reload --provision
Vagrant Mini Web Status Page
What is the Vagrant Credentials folder
This is a convention for an external location to store your username and
passwords for your datasources.
VagrantCredentials / DB.yaml
Provisioner looks in this file when generating the datasources for your applications
If you do not have a record for a datasource in the DB.yaml - it will create one for
you and warn you in the provisioner
If you do not have username and password in the app settings yaml, you need a
DB.yaml file, or the provisioner will error.
Why use Vagrant Credentials
Security:
This keeps the usernames and passwords out of your app
source control
Flexibility:
It allows users to have their own usernames and passwords
myDatasource: {username: gavin, password:
topsecretpassword}
Reprovision Vagrant
Vagrant provision or vagrant reload --provision
Now our sites work
The Site List Mini Website
Vagrant File
The vagrant file is the core of vagrant, with all the details, on what should run,
when, and how.
https://github.com/Ortus-Solutions/vagrant-centos-
lucee/blob/master/vagrant/Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Require YAML module
require 'yaml'
Vagrant File - Server Configuration
# server configuration
vm_ip_address = "192.168.60.35"
vm_naked_hostname = "lucee.dev"
vm_name = "Lucee-CFML"
vm_max_memory = 1024
vm_num_cpus = 2
vm_max_host_cpu_cap = "100"
Vagrant File - Synced Folders
# synced folder configuration
synced_webroot_local = "../www"
synced_webroot_box = "/var/wwwDefault/"
synced_webroot_id = "wwwDefault"
synced_webroot_owner = "vagrant"
synced_webroot_group = "vagrant"
synced_parent_local = "../../"
synced_parent_box = "/vagrant-parent"
synced_parent_id = "vagrant-parent"
synced_parent_owner = "vagrant"
synced_parent_group = "vagrant"
Vagrant File - do Config
Vagrant.configure("2") do |config|
config.vm.box = "centos-7-x64"
config.vm.box_url = "https://github.com/holms/vagrant-centos7-
box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box"
config.vm.boot_timeout = 180
Vagrant File - Provider Do
config.vm.provider "virtualbox" do |v|
# set name of vm
v.name = vm_name
# no matter how much cpu is used in vm, use no more than
vm_max_host_cpu_cap amount
v.customize ["modifyvm", :id, "--cpuexecutioncap", vm_max_host_cpu_cap]
# set max amount of host machine ram allotted for vm to use
v.customize ["modifyvm", :id, "--memory", vm_max_memory]
# set number of cpus from host machine that vm is allowed to use
v.customize ["modifyvm", :id, "--cpus", vm_num_cpus]
……...
Vagrant File - Provider Do - Cont.
# the next two settings enable using the host computer's dns inside the
vagrant box
# enable dns proxy in nat mode
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
# use the host's resolver as a dns proxy in nat mode
v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
Vagrant File - Network Setup
# set vm ip address and add auto_correct on forwarded port so it doesn't
collide with other vagrant boxes
config.vm.network :private_network, ip: vm_ip_address
# config.vm.network :forwarded_port, guest: 22, host: 2223, auto_correct: true
Vagrant File - The Web Hosts
# An array of hosts that need configured on the host machine to access the VM
hosts = []
# Look for other sites checked out in the same directory as this repo that have a
"VagrantConfig.yaml" in their root.
siteConfigs = Dir["../../*/VagrantConfig/*.yaml"]
Vagrant File - The Web Hosts - Cont.
siteConfigs.each do |config|
if File.read(config).length > 0
thisConfig = YAML.load_file( config )
puts "Found '#{thisConfig["name"]}' in #{config.sub! '../../', ''}"
hosts.concat thisConfig["hosts"]
else
puts "Found '#{config}' but it was empty!"
end
end
Vagrant File - Host Updater
if Vagrant.has_plugin?("vagrant-hostsupdater")
# set vm hostname
config.vm.hostname = vm_naked_hostname
config.hostsupdater.aliases = hosts
end
Vagrant File - Provisioners
# Init log file
config.vm.provision :shell, :path => "provisioners/setup-log.sh", :privileged => true
# set vm timezone and do some cleanup before installations
config.vm.provision :shell, :path => "provisioners/set-vm-timezone.sh", :privileged
=> true
# install miscellaneous utilities
config.vm.provision :shell, :path => "provisioners/install-utilities.sh", :privileged =>
true
Vagrant File - Provisioners
# install/configure nginx
config.vm.provision :shell, :path => "provisioners/install-nginx.sh", :privileged =>
true
# install/configure Oracle JDK
config.vm.provision :shell, :path => "provisioners/install-jdk.sh", :privileged => true
Vagrant File - Provisioners
# install/configure CommandBox
config.vm.provision :shell, :path => "provisioners/install-commandbox.sh", :
privileged => true
# install/configure lucee
config.vm.provision :shell, :path => "provisioners/install-lucee.sh", :privileged =>
true, :args => [
vm_name, vm_naked_hostname, vm_ip_address
]
Gotchas - The hard lessons learned
● Hosts plugin, killing vagrant can leave them in your hosts file
● Vpn access can mess with your
host files, and sometimes your
Vagrant
● Case sensitivity
Gotchas - The hard lessons learned
● Sometimes I forgot if it was running...
● Or which vagrant was running
● Fs plugin only works for 1 share
● vagrant reload
vs
vagrant reload --provision
Gotchas - The hard lessons learned
● Hosts plugin, killing vagrant can leave them in your hosts file
● Vpn access can mess with your host files, and sometimes your
vagrant
● Sometimes I forgot if it was running... Or which vagrant was
running
● Case sensitivity
● Fs plugin only works for 1 share
● Vagrant reload vs vagrant reload --provision
CentOS Lucee Nginx Vagrant
● This is the vagrant box used today
● Please go fork it, star it, and subscribe
● Clone it, spin it up and try it out
Github repo: https://github.com/Ortus-Solutions/vagrant-
centos-lucee
Ubuntu Lucee Nginx Vagrant
● This is the vagrant box I have not completed converting
yet
● Please go fork it, star it, and watch it for more information.
Github repo: https://github.com/Ortus-Solutions/vagrant-
ubuntu-lucee
ColdFusion 11 Vagrant Box
George Murphy has a CF11 Vagrant running on CentOS.
Presented on it at Into The Box, and some User Groups
https://github.com/murpg/centos-coldfusion-vagrant
More Vagrant Flavors
Using the survey from earlier, I want to prioritize the building
of vagrant boxes with different combinations
Some options can be a flag in the vagrant file
Consistent use across OSes and Webservers with the
conventions
How do you find them all?
Not just installation files any more
Adding IDE and IDE tools / plugins
Adding Vagrant and Docker images & getting started guides
Lets all pitch in and make our lives easier - http://www.cfmlrepo.com
Blog post and new site coming soon
Q & A
● Questions
● Comments
● Insults?
● Come try some chocolate
Richy & Creamy
● Keep an eye on http://www.gpickin.com/ for slides, blog posts and updates
● Linked In - http://li.gavinpickin.com/
Thanks everyone

More Related Content

What's hot

Can you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and YouCan you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and YouColdFusionConference
 
Productivity 101: Making a Easily Re-deployable Dev Environment with Subversion
Productivity 101: Making a Easily Re-deployable Dev Environment with SubversionProductivity 101: Making a Easily Re-deployable Dev Environment with Subversion
Productivity 101: Making a Easily Re-deployable Dev Environment with Subversionryanduff
 
Windows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareWindows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareElton Stoneman
 
Continuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleContinuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleJulia Mateo
 
Vagrant + Ansible + Docker
Vagrant + Ansible + DockerVagrant + Ansible + Docker
Vagrant + Ansible + DockerVijay Selvaraj
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016ColdFusionConference
 
Domino on docker version 2
Domino on docker version 2Domino on docker version 2
Domino on docker version 2Slobodan Lohja
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing dockerSascha Brinkmann
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Arun prasath
 
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As Code
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As CodeDevops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As Code
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As CodeIsrael Shirk
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVNLorna Mitchell
 
An Introduction to Vagrant and Docker
An Introduction to Vagrant and DockerAn Introduction to Vagrant and Docker
An Introduction to Vagrant and DockerScott Lowe
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeSascha Möllering
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .netIbon Landa
 
A crash course in scaling wordpress
A crash course inscaling wordpress A crash course inscaling wordpress
A crash course in scaling wordpress GovLoop
 

What's hot (19)

Keep Applications Online
Keep Applications OnlineKeep Applications Online
Keep Applications Online
 
Can you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and YouCan you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and You
 
Productivity 101: Making a Easily Re-deployable Dev Environment with Subversion
Productivity 101: Making a Easily Re-deployable Dev Environment with SubversionProductivity 101: Making a Easily Re-deployable Dev Environment with Subversion
Productivity 101: Making a Easily Re-deployable Dev Environment with Subversion
 
Windows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareWindows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should Care
 
Continuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleContinuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscale
 
Command box
Command boxCommand box
Command box
 
Securing Legacy CFML Code
Securing Legacy CFML CodeSecuring Legacy CFML Code
Securing Legacy CFML Code
 
Vagrant + Ansible + Docker
Vagrant + Ansible + DockerVagrant + Ansible + Docker
Vagrant + Ansible + Docker
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016
 
Working in harmony
Working in harmonyWorking in harmony
Working in harmony
 
Domino on docker version 2
Domino on docker version 2Domino on docker version 2
Domino on docker version 2
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing docker
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
 
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As Code
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As CodeDevops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As Code
Devops Boise - Israel Shirk - Pragmatic Migration to Infrastructure As Code
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVN
 
An Introduction to Vagrant and Docker
An Introduction to Vagrant and DockerAn Introduction to Vagrant and Docker
An Introduction to Vagrant and Docker
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as Code
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .net
 
A crash course in scaling wordpress
A crash course inscaling wordpress A crash course inscaling wordpress
A crash course in scaling wordpress
 

Similar to Take home your very own free Vagrant CFML Dev Environment - Presented at dev.Objective() June 17, 2016

Vagrant workshop 2015
Vagrant workshop 2015Vagrant workshop 2015
Vagrant workshop 2015Haifa Ftirich
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechChristopher Bumgardner
 
Vagrant step-by-step guide for Beginners
Vagrant step-by-step guide for BeginnersVagrant step-by-step guide for Beginners
Vagrant step-by-step guide for BeginnersSagar Acharya
 
Vagrant are you still develop in a non-virtual environment-
Vagrant  are you still develop in a non-virtual environment-Vagrant  are you still develop in a non-virtual environment-
Vagrant are you still develop in a non-virtual environment-Anatoly Bubenkov
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezAnthony Alvarez
 
Vagrant for local and team WordPress Development
Vagrant for local and team WordPress DevelopmentVagrant for local and team WordPress Development
Vagrant for local and team WordPress DevelopmentAnthony Alvarez
 
Automating with ansible (Part B)
Automating with ansible (Part B)Automating with ansible (Part B)
Automating with ansible (Part B)iman darabi
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized DevelopmentAdam Culp
 
CloudOpen North America 2013: Vagrant & CFEngine
CloudOpen North America 2013: Vagrant & CFEngineCloudOpen North America 2013: Vagrant & CFEngine
CloudOpen North America 2013: Vagrant & CFEngineNick Anderson
 
Crikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopCrikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopVelocidex Enterprises
 
Volunteering at YouSee on Technology Support
Volunteering at YouSee on Technology SupportVolunteering at YouSee on Technology Support
Volunteering at YouSee on Technology SupportYouSee
 
Quick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with VagrantQuick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with VagrantJoe Ferguson
 
Puppet Provisioning Vagrant Virtual Machine
Puppet Provisioning Vagrant Virtual MachinePuppet Provisioning Vagrant Virtual Machine
Puppet Provisioning Vagrant Virtual MachineArpit Aggarwal
 
Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016David Brattoli
 
Powering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with VagrantPowering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with VagrantCoen Jacobs
 
Local development environment through virtualisation
Local development environment through virtualisationLocal development environment through virtualisation
Local development environment through virtualisationRadu Barbu
 
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrantDevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrantFelipe
 
Development with Vagrant
Development with VagrantDevelopment with Vagrant
Development with VagrantJohn Coggeshall
 

Similar to Take home your very own free Vagrant CFML Dev Environment - Presented at dev.Objective() June 17, 2016 (20)

Vagrant workshop 2015
Vagrant workshop 2015Vagrant workshop 2015
Vagrant workshop 2015
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ Benetech
 
Vagrant step-by-step guide for Beginners
Vagrant step-by-step guide for BeginnersVagrant step-by-step guide for Beginners
Vagrant step-by-step guide for Beginners
 
Vagrant are you still develop in a non-virtual environment-
Vagrant  are you still develop in a non-virtual environment-Vagrant  are you still develop in a non-virtual environment-
Vagrant are you still develop in a non-virtual environment-
 
Vagrantfordevops
VagrantfordevopsVagrantfordevops
Vagrantfordevops
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
 
Keep calm and vagrant up
Keep calm and vagrant upKeep calm and vagrant up
Keep calm and vagrant up
 
Vagrant for local and team WordPress Development
Vagrant for local and team WordPress DevelopmentVagrant for local and team WordPress Development
Vagrant for local and team WordPress Development
 
Automating with ansible (Part B)
Automating with ansible (Part B)Automating with ansible (Part B)
Automating with ansible (Part B)
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized Development
 
CloudOpen North America 2013: Vagrant & CFEngine
CloudOpen North America 2013: Vagrant & CFEngineCloudOpen North America 2013: Vagrant & CFEngine
CloudOpen North America 2013: Vagrant & CFEngine
 
Crikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopCrikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor Workshop
 
Volunteering at YouSee on Technology Support
Volunteering at YouSee on Technology SupportVolunteering at YouSee on Technology Support
Volunteering at YouSee on Technology Support
 
Quick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with VagrantQuick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with Vagrant
 
Puppet Provisioning Vagrant Virtual Machine
Puppet Provisioning Vagrant Virtual MachinePuppet Provisioning Vagrant Virtual Machine
Puppet Provisioning Vagrant Virtual Machine
 
Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016Varying wordpressdevelopmentenvironment wp-campus2016
Varying wordpressdevelopmentenvironment wp-campus2016
 
Powering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with VagrantPowering Development and Testing Environments with Vagrant
Powering Development and Testing Environments with Vagrant
 
Local development environment through virtualisation
Local development environment through virtualisationLocal development environment through virtualisation
Local development environment through virtualisation
 
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrantDevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
 
Development with Vagrant
Development with VagrantDevelopment with Vagrant
Development with Vagrant
 

More from Gavin Pickin

Itb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin PickinItb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin PickinGavin Pickin
 
Containerizing ContentBox CMS
Containerizing ContentBox CMSContainerizing ContentBox CMS
Containerizing ContentBox CMSGavin Pickin
 
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...Gavin Pickin
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEGavin Pickin
 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION APIGavin Pickin
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016Gavin Pickin
 
BDD Testing and Automating from the trenches - Presented at Into The Box June...
BDD Testing and Automating from the trenches - Presented at Into The Box June...BDD Testing and Automating from the trenches - Presented at Into The Box June...
BDD Testing and Automating from the trenches - Presented at Into The Box June...Gavin Pickin
 
How do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and ClientHow do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and ClientGavin Pickin
 
Just Mock It - Mocks and Stubs
Just Mock It - Mocks and StubsJust Mock It - Mocks and Stubs
Just Mock It - Mocks and StubsGavin Pickin
 
How do I write Testable Javascript?
How do I write Testable Javascript?How do I write Testable Javascript?
How do I write Testable Javascript?Gavin Pickin
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into CordovaGavin Pickin
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionGavin Pickin
 

More from Gavin Pickin (12)

Itb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin PickinItb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin Pickin
 
Containerizing ContentBox CMS
Containerizing ContentBox CMSContainerizing ContentBox CMS
Containerizing ContentBox CMS
 
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
 
BDD Testing and Automating from the trenches - Presented at Into The Box June...
BDD Testing and Automating from the trenches - Presented at Into The Box June...BDD Testing and Automating from the trenches - Presented at Into The Box June...
BDD Testing and Automating from the trenches - Presented at Into The Box June...
 
How do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and ClientHow do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and Client
 
Just Mock It - Mocks and Stubs
Just Mock It - Mocks and StubsJust Mock It - Mocks and Stubs
Just Mock It - Mocks and Stubs
 
How do I write Testable Javascript?
How do I write Testable Javascript?How do I write Testable Javascript?
How do I write Testable Javascript?
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into Cordova
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
 

Recently uploaded

Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 

Recently uploaded (20)

Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 

Take home your very own free Vagrant CFML Dev Environment - Presented at dev.Objective() June 17, 2016

  • 1. Take Home Your Very Own Free Vagrant CFML Dev Environment Presented By: Gavin Pickin dev.Objective() 2016
  • 2. Who Am I? ★Gavin Pickin – developing Web Apps since late 90s ○Ortus Solutions Software Consultant ○ContentBox Evangelist ★What else do you need to know? ○CFMLRepo.com http://www.cfmlrepo.com ○Blog - http://gpickin.com ○Twitter – http://tw.gavinpickin.com ○Github - https://github.com/gpickin ○Linked In: http://li.gavinpickin.com/ ★Lets get on with the show.
  • 3. The Problem From developers, designers, managers, everyone working on your app, needs a way to run dev versions of your app, on their machines. The problem is, you might have: ● different OSes, ● different file systems, ● different web servers ● different app servers ● different db servers ● manager dns and ips ● a million dependencies to manage
  • 4. ● Windows ● CentOS / RHEL ● Ubuntu ● Other? What OS do you use?
  • 5. What Web Server do you use? ● IIS ● Apache ● Nginx
  • 6. What CFML Server do you use? ● Railo ● Lucee 4.5 ● Lucee 5 ● ColdFusion 9 ● ColdFusion 10 ● ColdFusion 11 ● ColdFusion 12 2016
  • 7. What DB do you use? ● MSSql ● MySql ● PostgreSql ● Oracle ● Couchbase ● CouchDB ● Reddis ● Mongo ● Local Storage ● Cookies ● MS Access ● Excel ● CSV ● Text
  • 8. The Solution A simple vm that can be up and running in minutes that gives the developer the same dev environment as everyone else, regardless of platform, tools, engines, os etc
  • 9. The Solution " Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry- standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team." https://www.vagrantup.com/docs/why-vagrant/
  • 10. Is Vagrant Perfect??? ● nothing is perfect ● there are a lot of pros and cons ● it might be overkill for small or simple projects
  • 11. Alternatives to Vagrant ● CommandBox ● Docker - Containers ● Chef / Puppet / Ansible
  • 12. CommandBox - Pros ● love it ● cross platform ● Simple ● multi engine ● it's cfml and json ● always improving
  • 13. CommandBox - Cons ● undertow not a full web server ● It's dependent on your os ● limited host support ● limited rewrites etc ● it's dependent on your libraries tools etc
  • 14. Docker / Chef / Puppet / Ansible - Pros ● Lots of great alternative options ● Lots of great features and benefits but...
  • 15. Docker / Chef / Puppet / Ansible - Cons ● Another set of fast moving tools to learn ● Each have their own strengths and weaknesses ● New configuration options, syntax and DSL ● How easy is it really to drop a CFML site in and go Disclaimer: I’m going to several docker sessions this week, so hopefully I will know more
  • 16. Why use Vagrant? ● automated configuration for team environments, perfect example, SAP connector or image magick plugins ● automated mappings, data sources, other settings ● automated dependencies and library versions ● easy switching in and out between os, web servers etc ● source control for sharing and maintaining the specs / automation ● solid cross platform compat ● dev like local, test like staging
  • 17. As a CFML Dev - So why should I use vagrant then? With the setup I am going to show you: ● It reduces the barriers to entry ● Gives you a great starting point ● No requirement for learning vagrant We can also work together to better this vagrant tool, offer more options, and share our successes.
  • 18. Installing Vagrant Installing Vagrant is easy Visit Download page and select the appropriate OS package https://www.vagrantup.com/downloads.html Installation will add ‘vagrant’ to your path. Logout and login again if necessary
  • 19. Providers Providers is the underlying tool that your VM runs on. While Vagrant ships out of the box with support for VirtualBox, Hyper-V, and Docker, you can install others. 2 common use cases ● Virtual Box - https://www.virtualbox.org/wiki/Downloads ○ Free ● VM Ware ○ Commercial
  • 20. Providers You can switch out a provider in the vagrant file, or on vagrant up $ vagrant up --provider=vmware_fusion $ vagrant up --provider=aws
  • 21. Boxes Instead of building a virtual machine from scratch, which would be a slow and tedious process, Vagrant uses a base image to quickly clone a virtual machine. You can also share your vagrant file and provisioners, like I am today
  • 22. Provisioners Provisioners in Vagrant allow you to automatically install software, alter configurations, and more on the machine as part of the vagrant up process. This is where you can automate your process to make it repeatable, sharable, and this is where the value of Vagrant really kicks in. You can provision with a lot of different tools.
  • 23. Plugins Once Vagrant is installed, or if it already is, it's highly recommended that you install the following Vagrant plugins: ● vagrant-hostsupdater $ vagrant plugin install vagrant-hostsupdater ● vagrant-vbguest $ vagrant plugin install vagrant-vbguest
  • 24. Command Line Interface - CLI Although you have options to add, edit and remove boxes, and a lot more, in this session, we're talking about using existing Vagrant setups that we have built, and we're sharing with you. Common Commands that you will use with these setups would be ● vagrant up ● vagrant halt ● vagrant reload ● vagrant provision ● vagrant reload --provision ● vagrant ssh ● vagrant destroy ● vagrant share
  • 25. CLI Command: vagrant up This command creates and configures guest machines according to your Vagrantfile. This is the single most important command in Vagrant, since it is how any Vagrant machine is created. Anyone using Vagrant must use this command on a day-to-day basis.
  • 26. CLI Command: vagrant halt This command shuts down the running machine Vagrant is managing. Vagrant will first attempt to gracefully shut down the machine by running the guest OS shutdown mechanism. If this fails, or if the --force flag is specified, Vagrant will effectively just shut off power to the machine.
  • 27. CLI Command: vagrant reload The equivalent of running a halt followed by an up. This command is usually required for changes made in the Vagrantfile to take effect. After making any modifications to the Vagrantfile, a reload should be called. The configured provisioners will not run again, by default. You can force the provisioners to re-run by specifying the -- provision flag.
  • 28. CLI Command: vagrant provision Runs any configured provisioners against the running Vagrant managed machine. This command is a great way to quickly test any provisioners. You can just make simple modifications to the provisioning scripts on your machine, run a vagrant provision, and check for the desired results. Rinse and repeat.
  • 29. CLI Command: vagrant reload --provision The equivalent of running a halt followed by an up and forcing provisioners to run. After making any modifications to the Vagrantfile, or the Provisioners, a reload should be called.
  • 30. CLI Command: vagrant ssh This will SSH into a running Vagrant machine and give you access to a shell. Note: On Windows you need a TTY terminal for full shell interactivity, one option is ConEmu.
  • 31. CLI Command: vagrant destroy This command stops the running machine Vagrant is managing and destroys all resources that were created during the machine creation process. After running this command, your computer should be left at a clean state, as if you never created the guest machine in the first place. Warning: If you do a destroy, the next time you ‘vagrant up’ - you will have a long wait before the VM is ready
  • 32. CLI Command: vagrant share The share command initializes a Vagrant Share session, allowing you to share your Vagrant environment with anyone in the world, enabling collaboration directly in your Vagrant environment in almost any network environment. This is not perfect, and you should not rely on it. I will try and demo this later, but it might go down in flames, be warned.
  • 33. Learning Curve The title of this session promised a free cfml dev environment, do I have to do everything myself? Thankfully no… thanks to members of the CFML community, you have some ready to go vagrant images. Lets look at one, and see how it works.
  • 34. Vagrant-centos-lucee Github Repo: https://github.com/Ortus-Solutions/vagrant- centos-lucee Big thanks to: Dan Skaggs, Luis Majano, Brad Wood, and Evagoras Charalambous Lets look at the readme.md
  • 35. What’s in the repo? ● vagrant/ : Run all vagrant commands from this directory. ○ artifacts/ : Where downloaded installers will be placed ○ provisioners/ : The provisionning bash scripts for the box ○ configs/ : Configuration files for Nginx, Lucee, etc ○ Vagrantfile/ : The vagrant configuration file ○ log/ : Where a log file is stored that documents the last provisioning process. ○ Sample_VagrantConfig.yaml : A sample configuration file for new sites. See "Configuring Sites". ● www/ : Code for the small, default site that shows you the status of your configuration
  • 36. Why this setup is awesome ● mappings etc ● cfml customization ● built on commandbox ● you can have fusion reactor built in ● dev config can match staging & production ● Ties into cfml engine to settings & config
  • 37. Customizations I have made before ● updated lucee version ● updated or specific version or nginx ● SES rewrite support ● installing image magick ● installing and r3 adapter for SAP ● config files that match staging and production - storage
  • 38. Deep dive into the r3 adapter install ● copy jars ● copy *.so files ● you, installing lib.std.c++5.0 ● copying an so file to the right folder /usr/var ● creating and ldconfig conf file with paths to jars and so files ● running the ldconfig to load the dynamic library
  • 39. Let's look at vagrant up and running I’m not dumb enough to do a full live demo without slides. Screenshots, so we can stop and talk about each one Fingers crossed, we’ll try a live demo too.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54. Add a new site to this setup The conventions for this setup are fairly simple Create a folder to put your VM stuff in Inside that: ● clone your vagrant repo ● Add your websites ● Add VagrantConfig folder to your websites ● Add vagrant credentials folder** ** Vagrant Credentials Folder - optional but recommended
  • 55. Add your Website You can take 2 approaches to adding your files Flat structure Nested structure
  • 56. Website Vagrant Config File ● Yaml file - Tabs and spaces matter ● Location: VagrantConfig / settings.yaml ● Site settings to help vagrant spin up your website automatically
  • 57. Vagrant Config - Page 1 # name of the app name: coldboxRest # Path to web root relative to the repo root webroot: www # SES Rewrites - True or False sesrewrites: false # List of domains to be added to the Host machine's and VM's "hosts" file hosts: - coldboxrest.gpickin.com
  • 58. Vagrant Config - Page 2 # List of CF Mappings to create relative to the repo root or drive root if starts with a / cfmappings: - virtual: '/storage/coldboxrest/' physical: '/opt/storage/coldboxrest/' # List of Nginx Mappings to create nginxmappings: - virtual: '/storage/coldboxrest/' physical: '/opt/storage/coldboxrest/'
  • 59. Vagrant Config - Page 3 # List of datasources to create datasources: - name: coldboxapp_client database: coldboxapp_Client host: mydb.gpickin.com port: 1433 class: com.microsoft.jdbc.sqlserver.SQLServerDriver dsn: jdbc:sqlserver://{host}:{port};DATABASENAME={database}; sendStringParametersAsUnicode=true;SelectMethod=direct storage: true password: topsecret username: gavin
  • 60. Provisioning your Websites Vagrant provision or vagrant reload --provision
  • 61. Vagrant Mini Web Status Page
  • 62. What is the Vagrant Credentials folder This is a convention for an external location to store your username and passwords for your datasources. VagrantCredentials / DB.yaml Provisioner looks in this file when generating the datasources for your applications If you do not have a record for a datasource in the DB.yaml - it will create one for you and warn you in the provisioner If you do not have username and password in the app settings yaml, you need a DB.yaml file, or the provisioner will error.
  • 63. Why use Vagrant Credentials Security: This keeps the usernames and passwords out of your app source control Flexibility: It allows users to have their own usernames and passwords myDatasource: {username: gavin, password: topsecretpassword}
  • 64. Reprovision Vagrant Vagrant provision or vagrant reload --provision
  • 66. The Site List Mini Website
  • 67. Vagrant File The vagrant file is the core of vagrant, with all the details, on what should run, when, and how. https://github.com/Ortus-Solutions/vagrant-centos- lucee/blob/master/vagrant/Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : # Require YAML module require 'yaml'
  • 68. Vagrant File - Server Configuration # server configuration vm_ip_address = "192.168.60.35" vm_naked_hostname = "lucee.dev" vm_name = "Lucee-CFML" vm_max_memory = 1024 vm_num_cpus = 2 vm_max_host_cpu_cap = "100"
  • 69. Vagrant File - Synced Folders # synced folder configuration synced_webroot_local = "../www" synced_webroot_box = "/var/wwwDefault/" synced_webroot_id = "wwwDefault" synced_webroot_owner = "vagrant" synced_webroot_group = "vagrant" synced_parent_local = "../../" synced_parent_box = "/vagrant-parent" synced_parent_id = "vagrant-parent" synced_parent_owner = "vagrant" synced_parent_group = "vagrant"
  • 70. Vagrant File - do Config Vagrant.configure("2") do |config| config.vm.box = "centos-7-x64" config.vm.box_url = "https://github.com/holms/vagrant-centos7- box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box" config.vm.boot_timeout = 180
  • 71. Vagrant File - Provider Do config.vm.provider "virtualbox" do |v| # set name of vm v.name = vm_name # no matter how much cpu is used in vm, use no more than vm_max_host_cpu_cap amount v.customize ["modifyvm", :id, "--cpuexecutioncap", vm_max_host_cpu_cap] # set max amount of host machine ram allotted for vm to use v.customize ["modifyvm", :id, "--memory", vm_max_memory] # set number of cpus from host machine that vm is allowed to use v.customize ["modifyvm", :id, "--cpus", vm_num_cpus] ……...
  • 72. Vagrant File - Provider Do - Cont. # the next two settings enable using the host computer's dns inside the vagrant box # enable dns proxy in nat mode v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] # use the host's resolver as a dns proxy in nat mode v.customize ["modifyvm", :id, "--natdnsproxy1", "on"] end
  • 73. Vagrant File - Network Setup # set vm ip address and add auto_correct on forwarded port so it doesn't collide with other vagrant boxes config.vm.network :private_network, ip: vm_ip_address # config.vm.network :forwarded_port, guest: 22, host: 2223, auto_correct: true
  • 74. Vagrant File - The Web Hosts # An array of hosts that need configured on the host machine to access the VM hosts = [] # Look for other sites checked out in the same directory as this repo that have a "VagrantConfig.yaml" in their root. siteConfigs = Dir["../../*/VagrantConfig/*.yaml"]
  • 75. Vagrant File - The Web Hosts - Cont. siteConfigs.each do |config| if File.read(config).length > 0 thisConfig = YAML.load_file( config ) puts "Found '#{thisConfig["name"]}' in #{config.sub! '../../', ''}" hosts.concat thisConfig["hosts"] else puts "Found '#{config}' but it was empty!" end end
  • 76. Vagrant File - Host Updater if Vagrant.has_plugin?("vagrant-hostsupdater") # set vm hostname config.vm.hostname = vm_naked_hostname config.hostsupdater.aliases = hosts end
  • 77. Vagrant File - Provisioners # Init log file config.vm.provision :shell, :path => "provisioners/setup-log.sh", :privileged => true # set vm timezone and do some cleanup before installations config.vm.provision :shell, :path => "provisioners/set-vm-timezone.sh", :privileged => true # install miscellaneous utilities config.vm.provision :shell, :path => "provisioners/install-utilities.sh", :privileged => true
  • 78. Vagrant File - Provisioners # install/configure nginx config.vm.provision :shell, :path => "provisioners/install-nginx.sh", :privileged => true # install/configure Oracle JDK config.vm.provision :shell, :path => "provisioners/install-jdk.sh", :privileged => true
  • 79. Vagrant File - Provisioners # install/configure CommandBox config.vm.provision :shell, :path => "provisioners/install-commandbox.sh", : privileged => true # install/configure lucee config.vm.provision :shell, :path => "provisioners/install-lucee.sh", :privileged => true, :args => [ vm_name, vm_naked_hostname, vm_ip_address ]
  • 80. Gotchas - The hard lessons learned ● Hosts plugin, killing vagrant can leave them in your hosts file ● Vpn access can mess with your host files, and sometimes your Vagrant ● Case sensitivity
  • 81. Gotchas - The hard lessons learned ● Sometimes I forgot if it was running... ● Or which vagrant was running ● Fs plugin only works for 1 share ● vagrant reload vs vagrant reload --provision
  • 82. Gotchas - The hard lessons learned ● Hosts plugin, killing vagrant can leave them in your hosts file ● Vpn access can mess with your host files, and sometimes your vagrant ● Sometimes I forgot if it was running... Or which vagrant was running ● Case sensitivity ● Fs plugin only works for 1 share ● Vagrant reload vs vagrant reload --provision
  • 83. CentOS Lucee Nginx Vagrant ● This is the vagrant box used today ● Please go fork it, star it, and subscribe ● Clone it, spin it up and try it out Github repo: https://github.com/Ortus-Solutions/vagrant- centos-lucee
  • 84. Ubuntu Lucee Nginx Vagrant ● This is the vagrant box I have not completed converting yet ● Please go fork it, star it, and watch it for more information. Github repo: https://github.com/Ortus-Solutions/vagrant- ubuntu-lucee
  • 85. ColdFusion 11 Vagrant Box George Murphy has a CF11 Vagrant running on CentOS. Presented on it at Into The Box, and some User Groups https://github.com/murpg/centos-coldfusion-vagrant
  • 86. More Vagrant Flavors Using the survey from earlier, I want to prioritize the building of vagrant boxes with different combinations Some options can be a flag in the vagrant file Consistent use across OSes and Webservers with the conventions How do you find them all?
  • 87. Not just installation files any more Adding IDE and IDE tools / plugins Adding Vagrant and Docker images & getting started guides Lets all pitch in and make our lives easier - http://www.cfmlrepo.com Blog post and new site coming soon
  • 88. Q & A ● Questions ● Comments ● Insults?
  • 89. ● Come try some chocolate Richy & Creamy ● Keep an eye on http://www.gpickin.com/ for slides, blog posts and updates ● Linked In - http://li.gavinpickin.com/ Thanks everyone