SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Tom Limoncelli, SRE
Safer Puppet in
4 quick demos
@YesThatTom
EverythingSysadmin.com
Synonyms
• Source Code Repository:
• Source Code Control System, Revision Control
System, etc.
• Ex: Git, Mercurial, Perforce, Subversion, etc.
• CI System:
• Continuous Integration Automation
• Ex: TeamCity TravisCI, Jenkins, etc
3
Automation Anxiety
4
What if... ?
• ...I make a change that messes everything up?
• ...I create a system that only I can manage?
5
We're only human
• I'm human.
• I make mistakes.
• I forget.
6
Git Server
1 2
3 4
Part 1: Git
Using a Source Code Control
System
8
Larry
Mary
Sherry
Kerri
Barry
HarryJerry
9
Git
Client
Git Server
$::kernel {
'Linux': {
class { "$
{title}::linux":
Demo
11
Benefits:
• History of what changed
• Log of who made changes
• Revert some or all changes
19
Don’t fear Git
• It is powerful (confusing)
• But you only need to learn the basics
• Tip: Use what your developers use.
Git Server
1 2
3 4
Git Server
1 2
3 4
Part 2: CI
Continuous Integration
23
Before a deploy I should...
• Run syntax checker ("puppet parser validate")
• Run unit tests ("rake spec")
• I forget.
24
Better would be...
• I make a change.
• Something automatically runs the tests.
• IF the tests pass, copy the files to Puppet Master
25
Continuous Integration and
Delivery
• Continuous: like a math function (no gaps)
• Integration: Integrate the latest changes
• Delivery: Deliver results to beta or production
26
CI Software
• TeamCity
• TravisCI
• Jenkins/Hudson
• Bamboo
• BuildBot
• BuildForge
• CircleCI
• CruiseControl
• GoCI
• Tinderbox
27
Demo
28
StackOverflow testing
• Started small:
• Syntax checks
• "puppet parser validate"
• Added new tests over time
• JSON syntax.
39
Fixes…
• Automation that has to be run from Larry's account.
• Automation that anyone can use, only if you can
remember the command.
• People skip steps (ignorance or laziness)
40
Works for more than Puppet
• Software package builds
• Infrastructure descriptions
• DNS zone file updates
• Anything you store as source code
41
Git Server
1 2
3 4
Git Server
1 2
3 4
Part 3: Vagrant
Personal Sandboxes
44
When to use
• Big changes / Starting new modules
• Need fast iterations
• Experiments that intentionally break things
45
Sandbox
• A place where I can experiment, try things out.
• A place where I can be free to fail in private.
(“Place” == Machines)
46
Option A:
Buy hardware
• Duplicate the environment in hardware.
• Time to buy, rack mount, install, configure
• 2 months
• Just kidding. Your boss won't approve this.
47
Option B:
Use your VMware Cluster
• Might require approvals, allocations, etc.
• Not so separate from the rest of the company.
• Re-creating from scratch may take a while.
48
Option C:
VMs on your laptop
• Do it now.
• Tear down and rebuild any time you want.
49
Vagrant
• Open source project
that makes it easy to set
up test environments.
• Describes the VM at a
high level "IP address,
memory size, etc"
• Does the right thing
whether you use
VirtualBox, VMware,
Hyper-V, Docker.
50
Demo: Use Vagrant to set up a
private Puppet Master and Client
• master1: CentOS7, 172.28.19.20
• client1: CentOS7, 172.28.19.22
51
52
53
54
55
56
57
Vagrant + VirtualBox
• VirtualBox: Developed by Sun Microsystems, acquired by Oracle
• Vagrant and VirtualBox are both open source, available for free
• Vagrant also supports:
• VirtualBox
• VMware
• Docker
• Hyper-V
58
Puppet directory linked from
laptop to VM
• Use my favorite editor on my laptop…
• …changes appear on the Puppet master’s /etc/
puppet
• On my laptop: ~/gitwork/puppet
• On master1: /etc/puppet/environments/vagrant
59
60
Demo
61
Other benefits
• VMs can be rebuilt from scratch in 5-10 minutes.
• Create many Vagrantfiles, one for each
environment
62
Git Server
1 2
3 4
Git Server
1 2
3 4
Part 4: Environments
Test against production
(without affecting production)
65
test == production?
• In theory, you can make your Vagrant environment
look “just like production”
• But what about slight differences?
• Hostnames, network IPs, unpatched OS, etc?
66
Puppet Environments
• Lets you use different Puppet source on different
machines.
• Git branch “production” (production servers)
• Git branch “dev” (dev servers)
67
Or, use temporary branches!
• Create a git branch with specific changes.
• Use that branch (environment) on specific
machines
68
Enabling Technologies
• Branches are cheap in “git”
• R10K makes each “branch” its own “environment”
• StackExchange built a home-brew solution
Demo
70
Benefits
• Reveals actual changes in real environment
• Useful for refactoring (no changes expected)
74
Summary
Source Code Control:
• Track changes
• Undo/revert changes
• Ex: Git
Continuous Integration:
• Automate processes
related to source code
changes
• Add more testing over
time
• Ex: TravisCI, TeamCity,
Jenkins, etc.
Sandboxes:
• Your own development
environment, free.
• http://vagrantup.com
Environments:
• Test and run code from a
Git branch
• Ex: R10K or homegrown
75
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)

Mais conteúdo relacionado

Mais procurados

Dockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at RackspaceDockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at Rackspace
dotCloud
 
Package Management on Windows with Chocolatey
Package Management on Windows with ChocolateyPackage Management on Windows with Chocolatey
Package Management on Windows with Chocolatey
Puppet
 
Source andassetcontrolingamedev
Source andassetcontrolingamedevSource andassetcontrolingamedev
Source andassetcontrolingamedev
Matt Benic
 
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph GaluschkaOpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
NETWAYS
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
VladLica
 

Mais procurados (20)

Dockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at RackspaceDockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at Rackspace
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2
 
Package Management on Windows with Chocolatey
Package Management on Windows with ChocolateyPackage Management on Windows with Chocolatey
Package Management on Windows with Chocolatey
 
Source andassetcontrolingamedev
Source andassetcontrolingamedevSource andassetcontrolingamedev
Source andassetcontrolingamedev
 
Hudson
HudsonHudson
Hudson
 
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph GaluschkaOpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
OpenNebula Conf 2014: CentOS, QA an OpenNebula - Christoph Galuschka
 
Owning windows 8 with human interface devices
Owning windows 8 with human interface devicesOwning windows 8 with human interface devices
Owning windows 8 with human interface devices
 
Steelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trashSteelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trash
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
 
ITP Spacebrew Workshop - Spring 2014
ITP Spacebrew Workshop - Spring 2014ITP Spacebrew Workshop - Spring 2014
ITP Spacebrew Workshop - Spring 2014
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butler
 
More fun using Kautilya
More fun using KautilyaMore fun using Kautilya
More fun using Kautilya
 
Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13
 
Vagrant & Docker
Vagrant & DockerVagrant & Docker
Vagrant & Docker
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
Computer, end program
Computer, end programComputer, end program
Computer, end program
 
Apache Flink Crash Course by Slim Baltagi and Srini Palthepu
Apache Flink Crash Course by Slim Baltagi and Srini PalthepuApache Flink Crash Course by Slim Baltagi and Srini Palthepu
Apache Flink Crash Course by Slim Baltagi and Srini Palthepu
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Android build on windows
Android build on windowsAndroid build on windows
Android build on windows
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
 

Destaque

Destaque (6)

From silos to circles
From silos to circlesFrom silos to circles
From silos to circles
 
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
 
Demystifying puppet
Demystifying puppetDemystifying puppet
Demystifying puppet
 
Being an Engineer in a Company That Makes a Product for Engineers
Being an Engineer in a Company That Makes a Product for EngineersBeing an Engineer in a Company That Makes a Product for Engineers
Being an Engineer in a Company That Makes a Product for Engineers
 
Software Configuration Management And CVS
Software Configuration Management And CVSSoftware Configuration Management And CVS
Software Configuration Management And CVS
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
 

Semelhante a Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)

The Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter DeploymentThe Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter Deployment
Frederick Reiss
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Release
elliando dias
 

Semelhante a Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner) (20)

Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Opening last bits of the infrastructure
Opening last bits of the infrastructureOpening last bits of the infrastructure
Opening last bits of the infrastructure
 
The New Frontend Toolchain
The New Frontend ToolchainThe New Frontend Toolchain
The New Frontend Toolchain
 
Git preso to valtech cfml team
Git preso to valtech cfml teamGit preso to valtech cfml team
Git preso to valtech cfml team
 
Lrug
LrugLrug
Lrug
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
The Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter DeploymentThe Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter Deployment
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Release
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
Why you should be using Aegir: The Drupal-oriented hosting system
Why you should be using Aegir: The Drupal-oriented hosting systemWhy you should be using Aegir: The Drupal-oriented hosting system
Why you should be using Aegir: The Drupal-oriented hosting system
 
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?
 
Deployment of WebObjects applications on CentOS Linux
Deployment of WebObjects applications on CentOS LinuxDeployment of WebObjects applications on CentOS Linux
Deployment of WebObjects applications on CentOS Linux
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
Hacking the way you work
Hacking the way you workHacking the way you work
Hacking the way you work
 

Mais de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

Mais de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)

  • 1. Tom Limoncelli, SRE Safer Puppet in 4 quick demos @YesThatTom EverythingSysadmin.com
  • 2.
  • 3. Synonyms • Source Code Repository: • Source Code Control System, Revision Control System, etc. • Ex: Git, Mercurial, Perforce, Subversion, etc. • CI System: • Continuous Integration Automation • Ex: TeamCity TravisCI, Jenkins, etc 3
  • 5. What if... ? • ...I make a change that messes everything up? • ...I create a system that only I can manage? 5
  • 6. We're only human • I'm human. • I make mistakes. • I forget. 6
  • 8. Part 1: Git Using a Source Code Control System 8
  • 10. Git Client Git Server $::kernel { 'Linux': { class { "$ {title}::linux":
  • 12. Benefits: • History of what changed • Log of who made changes • Revert some or all changes 19
  • 13. Don’t fear Git • It is powerful (confusing) • But you only need to learn the basics • Tip: Use what your developers use.
  • 16. Part 2: CI Continuous Integration 23
  • 17. Before a deploy I should... • Run syntax checker ("puppet parser validate") • Run unit tests ("rake spec") • I forget. 24
  • 18. Better would be... • I make a change. • Something automatically runs the tests. • IF the tests pass, copy the files to Puppet Master 25
  • 19. Continuous Integration and Delivery • Continuous: like a math function (no gaps) • Integration: Integrate the latest changes • Delivery: Deliver results to beta or production 26
  • 20. CI Software • TeamCity • TravisCI • Jenkins/Hudson • Bamboo • BuildBot • BuildForge • CircleCI • CruiseControl • GoCI • Tinderbox 27
  • 22. StackOverflow testing • Started small: • Syntax checks • "puppet parser validate" • Added new tests over time • JSON syntax. 39
  • 23. Fixes… • Automation that has to be run from Larry's account. • Automation that anyone can use, only if you can remember the command. • People skip steps (ignorance or laziness) 40
  • 24. Works for more than Puppet • Software package builds • Infrastructure descriptions • DNS zone file updates • Anything you store as source code 41
  • 27. Part 3: Vagrant Personal Sandboxes 44
  • 28. When to use • Big changes / Starting new modules • Need fast iterations • Experiments that intentionally break things 45
  • 29. Sandbox • A place where I can experiment, try things out. • A place where I can be free to fail in private. (“Place” == Machines) 46
  • 30. Option A: Buy hardware • Duplicate the environment in hardware. • Time to buy, rack mount, install, configure • 2 months • Just kidding. Your boss won't approve this. 47
  • 31. Option B: Use your VMware Cluster • Might require approvals, allocations, etc. • Not so separate from the rest of the company. • Re-creating from scratch may take a while. 48
  • 32. Option C: VMs on your laptop • Do it now. • Tear down and rebuild any time you want. 49
  • 33. Vagrant • Open source project that makes it easy to set up test environments. • Describes the VM at a high level "IP address, memory size, etc" • Does the right thing whether you use VirtualBox, VMware, Hyper-V, Docker. 50
  • 34. Demo: Use Vagrant to set up a private Puppet Master and Client • master1: CentOS7, 172.28.19.20 • client1: CentOS7, 172.28.19.22 51
  • 35. 52
  • 36. 53
  • 37. 54
  • 38. 55
  • 39. 56
  • 40. 57
  • 41. Vagrant + VirtualBox • VirtualBox: Developed by Sun Microsystems, acquired by Oracle • Vagrant and VirtualBox are both open source, available for free • Vagrant also supports: • VirtualBox • VMware • Docker • Hyper-V 58
  • 42. Puppet directory linked from laptop to VM • Use my favorite editor on my laptop… • …changes appear on the Puppet master’s /etc/ puppet • On my laptop: ~/gitwork/puppet • On master1: /etc/puppet/environments/vagrant 59
  • 43. 60
  • 45. Other benefits • VMs can be rebuilt from scratch in 5-10 minutes. • Create many Vagrantfiles, one for each environment 62
  • 48. Part 4: Environments Test against production (without affecting production) 65
  • 49. test == production? • In theory, you can make your Vagrant environment look “just like production” • But what about slight differences? • Hostnames, network IPs, unpatched OS, etc? 66
  • 50. Puppet Environments • Lets you use different Puppet source on different machines. • Git branch “production” (production servers) • Git branch “dev” (dev servers) 67
  • 51. Or, use temporary branches! • Create a git branch with specific changes. • Use that branch (environment) on specific machines 68
  • 52. Enabling Technologies • Branches are cheap in “git” • R10K makes each “branch” its own “environment” • StackExchange built a home-brew solution
  • 54. Benefits • Reveals actual changes in real environment • Useful for refactoring (no changes expected) 74
  • 55. Summary Source Code Control: • Track changes • Undo/revert changes • Ex: Git Continuous Integration: • Automate processes related to source code changes • Add more testing over time • Ex: TravisCI, TeamCity, Jenkins, etc. Sandboxes: • Your own development environment, free. • http://vagrantup.com Environments: • Test and run code from a Git branch • Ex: R10K or homegrown 75