SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Table of Contents 
William Hill Puppet Training v1.0.0 1 ©2014 Puppet Labs
Who am I? 
Good question! 
One of Puppet Labs London based Professional 
Service Engineers, coming from a background 
in the London start up community with a 
heavy leaning towards a the devops culture. 
The need to support my coffee addiction has 
taken me around the world working with and 
supporting all manner of development teams. 
The same addiction supported me through 
long nights of fire fighting and launch 
management for various game titles within EA, 
before I joined Puppet Labs. 
Feel free to buy me a coffee! 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 2 ©2014 Puppet Labs
Know Before You Push 'Go' 
Using the Beaker Acceptance Test Framework to Test Your Puppet 
Module Infrastructure 
Beaker is an acceptance testing harness for Puppet PE and other Puppet Projects. A 
workshop to demonstrate Beaker usage and Beaker-rspec integration with module 
development. Demonstrating node environments, and quick start and reusability with 
module skeleton. 
The slide deck is available at https://github.com/abuxton/kbypg, you'll need Showoff 
to run it. 
William Hill Puppet Training v1.0.0 3 ©2014 Puppet Labs
Workshop Activities 
What are we going to do? 
• Demo, how hard can it be? 
• Beaker, well this is what your interested in. 
• Tools to make your lives easier, we hope! 
• Pulling all of these together. 
William Hill Puppet Training v1.0.0 4 ©2014 Puppet Labs
Our First Demo! 
How hard can it be? and what is involved? 
William Hill Puppet Training v1.0.0 5 ©2014 Puppet Labs
Objective of this Demo 
Demonstrating reusable components of Beaker and some valuable 
companion tool. 
• Puppetlabs/Beaker. 
• Testing environments, nodes and Vagrant. 
• rspec_beaker tests. 
• Reusability features. 
• A working demonstration, Puppetlabs-mysql. 
• Using supported modules. 
William Hill Puppet Training v1.0.0 6 ©2014 Puppet Labs
Installation 
Bundler makes it easy 
Bundler provides a consistent environment for Ruby projects 
by tracking and installing the exact gems and versions that 
are needed. - bundler 
You don't have to use it, but it does make your life easier, repeatable and more 
dependable. 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 7 ©2014 Puppet Labs
Test Environment 
Vagrant for when you have to fake it, but fake it well. 
Beaker utilises the concept of Nodes for test environments, for the demo were using 
Vagrant. 
Repeatable, dependable and distributable environments. 
William Hill Puppet Training v1.0.0 8 ©2014 Puppet Labs
Demo 
Puppetlabs-mysql 
Puppetlabs-mysql is being used for the demo. 
• Puppetlabs supported module. 
• Built in Gemfile for Bundler. 
• Default use of centos-64 for nodesets/default.yaml using Vagrant. 
• Examples of classes, acceptance, and unit test. 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 9 ©2014 Puppet Labs
Beaker 
Rspec testing and a whole lot more! 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 10 ©2014 Puppet Labs
Objectives 
Lets discuss what makes up Beaker! 
• Test environments with nodesets. 
• Domain Spcecific language (DSL). 
• rspec-beaker. 
• Command line tool. 
William Hill Puppet Training v1.0.0 11 ©2014 Puppet Labs
Test Environments 
SUTs (Systems Under Test) 
HOSTS: 
centos-64-x64: 
roles: 
- master 
platform: el-6-x86_64 
box : centos-64-x64-vbox4210-nocm 
box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box 
hypervisor : vagrant 
CONFIG: 
type: foss 
Supports ec2, Docker, virtual machines, and physical hardware. 
Yaml for configuration and reuse, with default support for install at build time, can 
utilise both both PE and Poss. 
Notes: 
Creating A Test Environment 
William Hill Puppet Training v1.0.0 12 ©2014 Puppet Labs
DSL 
What another language to learn? 
OK, so not every one love to learn a new language, and if your new to testing were 
actually getting you to learn 2 languages, 3 if this is your first mis adventure in 
Puppet, and possibly 4 if you've never learned ruby and want to go that far. 
Don't be scared, there are good reasons, honestly.. 
• Portability. 
• Extending the functionality in a like for like manner. 
• Actually breaking down the barriers between languages. 
Notes: 
git doco RDOC 
William Hill Puppet Training v1.0.0 13 ©2014 Puppet Labs
Domain Specific Language 
OK, so what is it? 
manifest = "file { '#{target}': source => '#{source}', ensure => present }" 
apply_manifest_on agent, manifest, { :catch_failures => true } 
• Its the way weve chosen to ensure your tests are contained in a portable 
manner. 
• Its the way we have constrained tests to allow you to extend functionality in a 
repeatable way. 
• It allows us to provide an interface to Puppet and its tools, which is after all 
the ultimate goal here. 
Notes: 
git doco RDOC 
William Hill Puppet Training v1.0.0 14 ©2014 Puppet Labs
Beaker-Rspec 
Same as all the rest but different 
• Exposes some new variables for Beaker, related to both Beaker and its 
interaction with your SUT or nodeset. 
• Reflects the RSpec you are or are not familiar with, so easy to pick up and lots 
of sources for guidance and examples. 
describe 'creating a database' do 
# Using puppet_apply as a helper 
it 'should work with no errors' do 
pp = <<-EOS 
class { 'mysql::server': root_password => 'password' } 
mysql::db { 'spec1': 
user => 'root1', 
password => 'password', 
} 
EOS 
end 
end 
William Hill Puppet Training v1.0.0 15 ©2014 Puppet Labs
Spec Helpers 
Extract the repeatable bits! 
Update spec_helper_acceptance.rb to reflect the module under 
test. You will need to set the correct module name and add 
any module dependencies. Place the file in the /spec 
directory. spec helper 
We use the spec helper for any set up tasks that we want to repeat that are not 
directly part of the SUT, sometimes this gets a little confused. But what ever works for 
you. 
Notes: 
https://github.com/puppetlabs/beaker/wiki/How-to-Write-a-Beaker-Test-for-a-Module#create-the-spechelperacceptancerb 
William Hill Puppet Training v1.0.0 16 ©2014 Puppet Labs
Command Line Interface 
Some times you just want to run the test! 
I don't believe any thing ever turned up polished? 
Beaker is no exception and so you can choose to run your tests individually and 
increment them with out the overheads of all the set up. 
So the command line client is always available https://github.com/puppetlabs/beaker/ 
wiki/The-Command-Line. 
Notes: 
https://github.com/puppetlabs/beaker/wiki/The-Command-Line 
William Hill Puppet Training v1.0.0 17 ©2014 Puppet Labs
Running the tests 
Pressing Go before you know! 
So how do we run the tests? let us start with the following; 
# beaker --help 
or preferably 
# bundle exec rspec spec/<testfolder> 
The latter line is the current preferable usage, and what we invoked in the demo. 
William Hill Puppet Training v1.0.0 18 ©2014 Puppet Labs
So Another Demo 
I don't think so lets just look at what we did again. 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 19 ©2014 Puppet Labs
Tools & Reusability 
Lets just do it once ok 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 20 ©2014 Puppet Labs
Objectives 
Lets introduce some useful things! 
• Bundler. 
• Rake. 
• Puppets Module Skeletons. 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 21 ©2014 Puppet Labs
Bundler 
Managing Ruby application dependancys 
Things you want to do; 
• Test the thing. 
• Repeat the test. 
• Save your self reinstalling every time and documenting all the things! 
Bundler is one part of how we do the above, Bundler provides a consistent 
environment for Ruby projects by tracking and installing the 
exact gems and versions that are needed. The Gemspec becomes part 
of your module files and all you need to do is document installing Bundler, or maybe 
you just do that with Puppet too! 
Notes: 
http://bundler.io/ Install Bundler, we will use it later 
William Hill Puppet Training v1.0.0 22 ©2014 Puppet Labs
Rake 
Lets build some things to help 
Rake is a Make-like program implemented in Ruby! 
What does that mean for us, well in this case it just means were going to use it to 
provide some Ruby based extensions and functionality, and also to make use of 
functionality in dependencies of Beaker. 
https://rubygems.org/gems/rake 
rake beaker # Run beaker acceptance tests 
rake beaker_nodes # List available beaker nodesets 
rake build # Build puppet module package 
rake clean # Clean a built module package 
rake coverage # Generate code coverage information 
rake help # Display the list of available rake tasks 
rake lint # Check puppet manifests with puppet-lint 
rake spec # Run spec tests in a clean fixtures directory 
rake spec_clean # Clean up the fixtures directory 
rake spec_prep # Create the fixtures directory 
rake spec_standalone # Run spec tests on an existing fixtures directory 
rake syntax # Check puppet manifest syntax 
rake validate # Validate manifests, templates, and ruby files in lib 
Notes: 
https://rubygems.org/gems/rake 
William Hill Puppet Training v1.0.0 23 ©2014 Puppet Labs
Puppets Module Skeleton 
Your out the box starter for 10! 
When you run puppet module generate name-module you get given the 
following. 
a-module/ 
├── README.md 
├── Rakefile 
├── manifests 
│ └── init.pp 
├── metadata.json 
├── spec 
│ ├── classes 
│ │ └── init_spec.rb 
│ └── spec_helper.rb 
└── tests 
└── init.pp 
We are not sure this is enough! But its more than you used to get. 
William Hill Puppet Training v1.0.0 24 ©2014 Puppet Labs
Puppet Module Skeletons 
So how do we share all this love and reusability? 
Well lets take a little from here, and a little from there and add a little extra. 
As a feature, puppet module tool will use ~/.puppet/var/ 
puppet-module/skeleton as template for its generate command. 
The files provided here are meant to be better templates for 
use with the puppet module tool. 
So lets take a few things and add them to our module skeleton then!, but what? 
• Gemfile 
• Rakefile 
Well this gives us a base functionality tested and working we can build on. but what 
else? 
Notes: 
puppet moduel skeleton code morethan seven excellent blog 
William Hill Puppet Training v1.0.0 25 ©2014 Puppet Labs
Module Skeleton Spec folder 
Lets have some more reusability goodness! 
So what else? How about all some templated tests, spec helpers and nodesets! More 
Than Seven Garetsh excellent blog post on teh subject. 
#tree .puppet/var/puppet-module/skeleton/spec 
├── acceptance 
│ ├── class_spec.rb.erb 
│ └── nodesets 
│ ├── centos-64-x64.yml 
│ ├── default.yml 
│ └── ubuntu-server-12042-x64.yml 
├── classes 
│ ├── coverage_spec.rb 
│ └── example_spec.rb.erb 
├── spec_helper.rb 
└── spec_helper_acceptance.rb.erb 
Notes: 
credits: https://github.com/garethr/puppet-module-skeleton https://forge.puppetlabs.com/supported 
https://github.com/abuxton/module_skeleton 
William Hill Puppet Training v1.0.0 26 ©2014 Puppet Labs
Demo Module Skeleton 
So how do we use it! 
• Lets put the skeleton in place. https://github.com/abuxton/module_skeleton 
• Lets generate a module. puppet module generate a-test 
• Lets see some the unit tests. 
Notes: 
All the command you need are in the slides or these notes. 
William Hill Puppet Training v1.0.0 27 ©2014 Puppet Labs
Putting it all together. 
How do we use this in anger? 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 28 ©2014 Puppet Labs
Final Objectives 
What do we do with it all! 
Lets use what we've seen, to go from nothing to test. 
• Install the module skeleton. 
• Generate a module. 
• Run the initial tests 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 29 ©2014 Puppet Labs
Installation 
Putting the pieces in place. 
So what do we need for this? 
• Puppet. 
• Vagrant. 
• Bundler. 
• Module Skeleton. 
William Hill Puppet Training v1.0.0 30 ©2014 Puppet Labs
Nodes or SUTs 
Lets virtualise some hardware 
We need nodes to test against, or servers under test (SUT). The module skeleton now 
provides those too. 
tree ~/.puppet/var/puppet-module/skeleton/spec/acceptance/nodesets/ 
/Users/abuxton/.puppet/var/puppet-module/skeleton/spec/acceptance/nodesets/ 
├── centos-64-x64.yml 
├── default.yml 
└── ubuntu-server-12042-x64.yml 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 31 ©2014 Puppet Labs
Module to test. 
What could go wrong! 
We all know live demos are so successful. So lets keep this simple. 
• Were going to generate a module (NTP). 
• Were going to take a look at the out put. 
• Were going to run the tests. 
Whats the worst that can go wrong! 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 32 ©2014 Puppet Labs
Can I get a real Drink now 
Yes I mean Coffee. 
Notes: 
this will be additional in print 
William Hill Puppet Training v1.0.0 33 ©2014 Puppet Labs
So what did we do? 
What comes next? 
In summary, We actually managed 3 workshops in one. 
• How to test Puppets supported modules. 
• How to use and make use of the Puppet Module tool & Puppet module 
skeleton. 
• How to generate a module and test that code. 
What do we do with all this. 
• Read some more Beaker, https://github.com/puppetlabs/beaker/wiki 
• Run some tests https://forge.puppetlabs.com/ 
modules?endorsements=supported to forge supported list. 
• Run this at home and try extend it into your working day. 
• https://github.com/abuxton/kbypg my presentation on git 
William Hill Puppet Training v1.0.0 34 ©2014 Puppet Labs
Thank you 
I hope you learned a little something to take away. 
William Hill Puppet Training v1.0.0 35 ©2014 Puppet Labs
Credits 
Heres all the links. 
Beaker and useful links. 
• https://github.com/puppetlabs/beaker link to Beaker 
• http://www.morethanseven.net/2014/02/05/a-template-for-puppet-modules/ 
link to Gareths blog 
• https://forge.puppetlabs.com/modules?endorsements=supported link to Forge. 
• https://github.com/abuxton/kbypg this talk. 
Additional credits: 
• http://www.charlottemoss.co.uk/ profile image. 
• http://2014.puppetconf.com/ There is a threat you may be eventiually able to 
find audio of this session. 
William Hill Puppet Training v1.0.0 36 ©2014 Puppet Labs

Mais conteúdo relacionado

Mais procurados

Test driven infrastructure
Test driven infrastructureTest driven infrastructure
Test driven infrastructureXPeppers
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflowTomas Doran
 
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecTest Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecYury Tsarev
 
Continuous infrastructure testing
Continuous infrastructure testingContinuous infrastructure testing
Continuous infrastructure testingDaniel Paulus
 
Ansible 實戰:top down 觀點
Ansible 實戰:top down 觀點Ansible 實戰:top down 觀點
Ansible 實戰:top down 觀點William Yeh
 
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Carlos Sanchez
 
Antons Kranga Building Agile Infrastructures
Antons Kranga   Building Agile InfrastructuresAntons Kranga   Building Agile Infrastructures
Antons Kranga Building Agile InfrastructuresAntons Kranga
 
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Puppet
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Łukasz Proszek
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Puppet
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with DjangoRoger Barnes
 
Python virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesPython virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesLarry Cai
 
Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleStein Inge Morisbak
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Chu-Siang Lai
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdminsPuppet
 

Mais procurados (20)

Test driven infrastructure
Test driven infrastructureTest driven infrastructure
Test driven infrastructure
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecTest Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
 
Continuous infrastructure testing
Continuous infrastructure testingContinuous infrastructure testing
Continuous infrastructure testing
 
Ansible 實戰:top down 觀點
Ansible 實戰:top down 觀點Ansible 實戰:top down 觀點
Ansible 實戰:top down 觀點
 
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
 
Antons Kranga Building Agile Infrastructures
Antons Kranga   Building Agile InfrastructuresAntons Kranga   Building Agile Infrastructures
Antons Kranga Building Agile Infrastructures
 
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
Perlbrew
PerlbrewPerlbrew
Perlbrew
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
 
Python virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesPython virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutes
 
Tp install anything
Tp install anythingTp install anything
Tp install anything
 
Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdmins
 

Semelhante a Beaker Acceptance Testing Framework

V mware
V mwareV mware
V mwaredvmug1
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwaresubtitle
 
Scaling to-5000-nodes
Scaling to-5000-nodesScaling to-5000-nodes
Scaling to-5000-nodesPhilip Watts
 
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...Puppet
 
Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014Puppet
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Puppet
 
Continuous integration of_puppet_code
Continuous integration of_puppet_codeContinuous integration of_puppet_code
Continuous integration of_puppet_codeDevoteam Revolve
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Edureka!
 
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...Baruch Sadogursky
 
Puppet getting started by Dirk Götz
Puppet getting started by Dirk GötzPuppet getting started by Dirk Götz
Puppet getting started by Dirk GötzNETWAYS
 
Drupal VM for Drupal 8 Dev - MidCamp 2017
Drupal VM for Drupal 8 Dev - MidCamp 2017Drupal VM for Drupal 8 Dev - MidCamp 2017
Drupal VM for Drupal 8 Dev - MidCamp 2017Jeff Geerling
 
Portable infrastructure with puppet
Portable infrastructure with puppetPortable infrastructure with puppet
Portable infrastructure with puppetlkanies
 
Leveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioningLeveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioningEvans Ye
 
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioningLeveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioningDataWorks Summit
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationErica Windisch
 
Ansible top 10 - 2018
Ansible top 10 -  2018Ansible top 10 -  2018
Ansible top 10 - 2018Viresh Doshi
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareLaura Frank Tacho
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Productiondevopsdaysaustin
 

Semelhante a Beaker Acceptance Testing Framework (20)

V mware
V mwareV mware
V mware
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMware
 
Scaling to-5000-nodes
Scaling to-5000-nodesScaling to-5000-nodes
Scaling to-5000-nodes
 
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...
Puppet Camp New York 2015: Puppet Enterprise Scaling Lessons Learned (Interme...
 
Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
 
Virtualenv
VirtualenvVirtualenv
Virtualenv
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
 
Continuous integration of_puppet_code
Continuous integration of_puppet_codeContinuous integration of_puppet_code
Continuous integration of_puppet_code
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
 
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
 
Puppet getting started by Dirk Götz
Puppet getting started by Dirk GötzPuppet getting started by Dirk Götz
Puppet getting started by Dirk Götz
 
Drupal VM for Drupal 8 Dev - MidCamp 2017
Drupal VM for Drupal 8 Dev - MidCamp 2017Drupal VM for Drupal 8 Dev - MidCamp 2017
Drupal VM for Drupal 8 Dev - MidCamp 2017
 
Portable infrastructure with puppet
Portable infrastructure with puppetPortable infrastructure with puppet
Portable infrastructure with puppet
 
Leveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioningLeveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioning
 
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioningLeveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 
Ansible top 10 - 2018
Ansible top 10 -  2018Ansible top 10 -  2018
Ansible top 10 - 2018
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
 

Mais de Puppet

Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
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
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
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 codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
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 automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
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 WindowsPuppet
 
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. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
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 ReeuwijkPuppet
 
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 groundPuppet
 
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 SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
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 MaludyPuppet
 
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 ReeuwijkPuppet
 

Mais de Puppet (20)

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
 
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
 

Último

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Último (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Beaker Acceptance Testing Framework

  • 1. Table of Contents William Hill Puppet Training v1.0.0 1 ©2014 Puppet Labs
  • 2. Who am I? Good question! One of Puppet Labs London based Professional Service Engineers, coming from a background in the London start up community with a heavy leaning towards a the devops culture. The need to support my coffee addiction has taken me around the world working with and supporting all manner of development teams. The same addiction supported me through long nights of fire fighting and launch management for various game titles within EA, before I joined Puppet Labs. Feel free to buy me a coffee! Notes: this will be additional in print William Hill Puppet Training v1.0.0 2 ©2014 Puppet Labs
  • 3. Know Before You Push 'Go' Using the Beaker Acceptance Test Framework to Test Your Puppet Module Infrastructure Beaker is an acceptance testing harness for Puppet PE and other Puppet Projects. A workshop to demonstrate Beaker usage and Beaker-rspec integration with module development. Demonstrating node environments, and quick start and reusability with module skeleton. The slide deck is available at https://github.com/abuxton/kbypg, you'll need Showoff to run it. William Hill Puppet Training v1.0.0 3 ©2014 Puppet Labs
  • 4. Workshop Activities What are we going to do? • Demo, how hard can it be? • Beaker, well this is what your interested in. • Tools to make your lives easier, we hope! • Pulling all of these together. William Hill Puppet Training v1.0.0 4 ©2014 Puppet Labs
  • 5. Our First Demo! How hard can it be? and what is involved? William Hill Puppet Training v1.0.0 5 ©2014 Puppet Labs
  • 6. Objective of this Demo Demonstrating reusable components of Beaker and some valuable companion tool. • Puppetlabs/Beaker. • Testing environments, nodes and Vagrant. • rspec_beaker tests. • Reusability features. • A working demonstration, Puppetlabs-mysql. • Using supported modules. William Hill Puppet Training v1.0.0 6 ©2014 Puppet Labs
  • 7. Installation Bundler makes it easy Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed. - bundler You don't have to use it, but it does make your life easier, repeatable and more dependable. Notes: this will be additional in print William Hill Puppet Training v1.0.0 7 ©2014 Puppet Labs
  • 8. Test Environment Vagrant for when you have to fake it, but fake it well. Beaker utilises the concept of Nodes for test environments, for the demo were using Vagrant. Repeatable, dependable and distributable environments. William Hill Puppet Training v1.0.0 8 ©2014 Puppet Labs
  • 9. Demo Puppetlabs-mysql Puppetlabs-mysql is being used for the demo. • Puppetlabs supported module. • Built in Gemfile for Bundler. • Default use of centos-64 for nodesets/default.yaml using Vagrant. • Examples of classes, acceptance, and unit test. Notes: this will be additional in print William Hill Puppet Training v1.0.0 9 ©2014 Puppet Labs
  • 10. Beaker Rspec testing and a whole lot more! Notes: this will be additional in print William Hill Puppet Training v1.0.0 10 ©2014 Puppet Labs
  • 11. Objectives Lets discuss what makes up Beaker! • Test environments with nodesets. • Domain Spcecific language (DSL). • rspec-beaker. • Command line tool. William Hill Puppet Training v1.0.0 11 ©2014 Puppet Labs
  • 12. Test Environments SUTs (Systems Under Test) HOSTS: centos-64-x64: roles: - master platform: el-6-x86_64 box : centos-64-x64-vbox4210-nocm box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box hypervisor : vagrant CONFIG: type: foss Supports ec2, Docker, virtual machines, and physical hardware. Yaml for configuration and reuse, with default support for install at build time, can utilise both both PE and Poss. Notes: Creating A Test Environment William Hill Puppet Training v1.0.0 12 ©2014 Puppet Labs
  • 13. DSL What another language to learn? OK, so not every one love to learn a new language, and if your new to testing were actually getting you to learn 2 languages, 3 if this is your first mis adventure in Puppet, and possibly 4 if you've never learned ruby and want to go that far. Don't be scared, there are good reasons, honestly.. • Portability. • Extending the functionality in a like for like manner. • Actually breaking down the barriers between languages. Notes: git doco RDOC William Hill Puppet Training v1.0.0 13 ©2014 Puppet Labs
  • 14. Domain Specific Language OK, so what is it? manifest = "file { '#{target}': source => '#{source}', ensure => present }" apply_manifest_on agent, manifest, { :catch_failures => true } • Its the way weve chosen to ensure your tests are contained in a portable manner. • Its the way we have constrained tests to allow you to extend functionality in a repeatable way. • It allows us to provide an interface to Puppet and its tools, which is after all the ultimate goal here. Notes: git doco RDOC William Hill Puppet Training v1.0.0 14 ©2014 Puppet Labs
  • 15. Beaker-Rspec Same as all the rest but different • Exposes some new variables for Beaker, related to both Beaker and its interaction with your SUT or nodeset. • Reflects the RSpec you are or are not familiar with, so easy to pick up and lots of sources for guidance and examples. describe 'creating a database' do # Using puppet_apply as a helper it 'should work with no errors' do pp = <<-EOS class { 'mysql::server': root_password => 'password' } mysql::db { 'spec1': user => 'root1', password => 'password', } EOS end end William Hill Puppet Training v1.0.0 15 ©2014 Puppet Labs
  • 16. Spec Helpers Extract the repeatable bits! Update spec_helper_acceptance.rb to reflect the module under test. You will need to set the correct module name and add any module dependencies. Place the file in the /spec directory. spec helper We use the spec helper for any set up tasks that we want to repeat that are not directly part of the SUT, sometimes this gets a little confused. But what ever works for you. Notes: https://github.com/puppetlabs/beaker/wiki/How-to-Write-a-Beaker-Test-for-a-Module#create-the-spechelperacceptancerb William Hill Puppet Training v1.0.0 16 ©2014 Puppet Labs
  • 17. Command Line Interface Some times you just want to run the test! I don't believe any thing ever turned up polished? Beaker is no exception and so you can choose to run your tests individually and increment them with out the overheads of all the set up. So the command line client is always available https://github.com/puppetlabs/beaker/ wiki/The-Command-Line. Notes: https://github.com/puppetlabs/beaker/wiki/The-Command-Line William Hill Puppet Training v1.0.0 17 ©2014 Puppet Labs
  • 18. Running the tests Pressing Go before you know! So how do we run the tests? let us start with the following; # beaker --help or preferably # bundle exec rspec spec/<testfolder> The latter line is the current preferable usage, and what we invoked in the demo. William Hill Puppet Training v1.0.0 18 ©2014 Puppet Labs
  • 19. So Another Demo I don't think so lets just look at what we did again. Notes: this will be additional in print William Hill Puppet Training v1.0.0 19 ©2014 Puppet Labs
  • 20. Tools & Reusability Lets just do it once ok Notes: this will be additional in print William Hill Puppet Training v1.0.0 20 ©2014 Puppet Labs
  • 21. Objectives Lets introduce some useful things! • Bundler. • Rake. • Puppets Module Skeletons. Notes: this will be additional in print William Hill Puppet Training v1.0.0 21 ©2014 Puppet Labs
  • 22. Bundler Managing Ruby application dependancys Things you want to do; • Test the thing. • Repeat the test. • Save your self reinstalling every time and documenting all the things! Bundler is one part of how we do the above, Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed. The Gemspec becomes part of your module files and all you need to do is document installing Bundler, or maybe you just do that with Puppet too! Notes: http://bundler.io/ Install Bundler, we will use it later William Hill Puppet Training v1.0.0 22 ©2014 Puppet Labs
  • 23. Rake Lets build some things to help Rake is a Make-like program implemented in Ruby! What does that mean for us, well in this case it just means were going to use it to provide some Ruby based extensions and functionality, and also to make use of functionality in dependencies of Beaker. https://rubygems.org/gems/rake rake beaker # Run beaker acceptance tests rake beaker_nodes # List available beaker nodesets rake build # Build puppet module package rake clean # Clean a built module package rake coverage # Generate code coverage information rake help # Display the list of available rake tasks rake lint # Check puppet manifests with puppet-lint rake spec # Run spec tests in a clean fixtures directory rake spec_clean # Clean up the fixtures directory rake spec_prep # Create the fixtures directory rake spec_standalone # Run spec tests on an existing fixtures directory rake syntax # Check puppet manifest syntax rake validate # Validate manifests, templates, and ruby files in lib Notes: https://rubygems.org/gems/rake William Hill Puppet Training v1.0.0 23 ©2014 Puppet Labs
  • 24. Puppets Module Skeleton Your out the box starter for 10! When you run puppet module generate name-module you get given the following. a-module/ ├── README.md ├── Rakefile ├── manifests │ └── init.pp ├── metadata.json ├── spec │ ├── classes │ │ └── init_spec.rb │ └── spec_helper.rb └── tests └── init.pp We are not sure this is enough! But its more than you used to get. William Hill Puppet Training v1.0.0 24 ©2014 Puppet Labs
  • 25. Puppet Module Skeletons So how do we share all this love and reusability? Well lets take a little from here, and a little from there and add a little extra. As a feature, puppet module tool will use ~/.puppet/var/ puppet-module/skeleton as template for its generate command. The files provided here are meant to be better templates for use with the puppet module tool. So lets take a few things and add them to our module skeleton then!, but what? • Gemfile • Rakefile Well this gives us a base functionality tested and working we can build on. but what else? Notes: puppet moduel skeleton code morethan seven excellent blog William Hill Puppet Training v1.0.0 25 ©2014 Puppet Labs
  • 26. Module Skeleton Spec folder Lets have some more reusability goodness! So what else? How about all some templated tests, spec helpers and nodesets! More Than Seven Garetsh excellent blog post on teh subject. #tree .puppet/var/puppet-module/skeleton/spec ├── acceptance │ ├── class_spec.rb.erb │ └── nodesets │ ├── centos-64-x64.yml │ ├── default.yml │ └── ubuntu-server-12042-x64.yml ├── classes │ ├── coverage_spec.rb │ └── example_spec.rb.erb ├── spec_helper.rb └── spec_helper_acceptance.rb.erb Notes: credits: https://github.com/garethr/puppet-module-skeleton https://forge.puppetlabs.com/supported https://github.com/abuxton/module_skeleton William Hill Puppet Training v1.0.0 26 ©2014 Puppet Labs
  • 27. Demo Module Skeleton So how do we use it! • Lets put the skeleton in place. https://github.com/abuxton/module_skeleton • Lets generate a module. puppet module generate a-test • Lets see some the unit tests. Notes: All the command you need are in the slides or these notes. William Hill Puppet Training v1.0.0 27 ©2014 Puppet Labs
  • 28. Putting it all together. How do we use this in anger? Notes: this will be additional in print William Hill Puppet Training v1.0.0 28 ©2014 Puppet Labs
  • 29. Final Objectives What do we do with it all! Lets use what we've seen, to go from nothing to test. • Install the module skeleton. • Generate a module. • Run the initial tests Notes: this will be additional in print William Hill Puppet Training v1.0.0 29 ©2014 Puppet Labs
  • 30. Installation Putting the pieces in place. So what do we need for this? • Puppet. • Vagrant. • Bundler. • Module Skeleton. William Hill Puppet Training v1.0.0 30 ©2014 Puppet Labs
  • 31. Nodes or SUTs Lets virtualise some hardware We need nodes to test against, or servers under test (SUT). The module skeleton now provides those too. tree ~/.puppet/var/puppet-module/skeleton/spec/acceptance/nodesets/ /Users/abuxton/.puppet/var/puppet-module/skeleton/spec/acceptance/nodesets/ ├── centos-64-x64.yml ├── default.yml └── ubuntu-server-12042-x64.yml Notes: this will be additional in print William Hill Puppet Training v1.0.0 31 ©2014 Puppet Labs
  • 32. Module to test. What could go wrong! We all know live demos are so successful. So lets keep this simple. • Were going to generate a module (NTP). • Were going to take a look at the out put. • Were going to run the tests. Whats the worst that can go wrong! Notes: this will be additional in print William Hill Puppet Training v1.0.0 32 ©2014 Puppet Labs
  • 33. Can I get a real Drink now Yes I mean Coffee. Notes: this will be additional in print William Hill Puppet Training v1.0.0 33 ©2014 Puppet Labs
  • 34. So what did we do? What comes next? In summary, We actually managed 3 workshops in one. • How to test Puppets supported modules. • How to use and make use of the Puppet Module tool & Puppet module skeleton. • How to generate a module and test that code. What do we do with all this. • Read some more Beaker, https://github.com/puppetlabs/beaker/wiki • Run some tests https://forge.puppetlabs.com/ modules?endorsements=supported to forge supported list. • Run this at home and try extend it into your working day. • https://github.com/abuxton/kbypg my presentation on git William Hill Puppet Training v1.0.0 34 ©2014 Puppet Labs
  • 35. Thank you I hope you learned a little something to take away. William Hill Puppet Training v1.0.0 35 ©2014 Puppet Labs
  • 36. Credits Heres all the links. Beaker and useful links. • https://github.com/puppetlabs/beaker link to Beaker • http://www.morethanseven.net/2014/02/05/a-template-for-puppet-modules/ link to Gareths blog • https://forge.puppetlabs.com/modules?endorsements=supported link to Forge. • https://github.com/abuxton/kbypg this talk. Additional credits: • http://www.charlottemoss.co.uk/ profile image. • http://2014.puppetconf.com/ There is a threat you may be eventiually able to find audio of this session. William Hill Puppet Training v1.0.0 36 ©2014 Puppet Labs