SlideShare uma empresa Scribd logo
1 de 129
Baixar para ler offline
Test Driven
Development!
for Puppet!
Puppet needs software development
Gareth Rushgrove
Who
(Who is this person?)
@garethr
UK Government
Digital Service
The problem
(This isn’t a rant, but…)
Who here is a
software developer?
Gareth Rushgrove
If you’re writing
Puppet code you’re a
software developer
Gareth Rushgrove
As a software
developer it’s your job
to learn software
engineering practices
Gareth Rushgrove
What is Test Driven
Development
(And why should you care)
A common practice in
software engineering
Gareth Rushgrove
Not just testing
Gareth Rushgrove
Encourages simple
designs and inspires
confidence
Gareth Rushgrove
First write an (initially
failing) automated
test case
Gareth Rushgrove
Then produce the
minimum amount of
code to pass that test
Gareth Rushgrove
And finally refactor
the new code to
acceptable standards
Gareth Rushgrove
Test Driven Design
Gareth Rushgrove
Gareth Rushgrove
Unit testing
with RSpec
and Guard
(Not puppet specific)
A unit is the smallest
testable part of an
application
Gareth Rushgrove
Testing puppet
requires a little Ruby
knowledge so we’ll
use Ruby examples
Gareth Rushgrove
class Person
def say(word)
end
end
Gareth Rushgrove
First lets write a test.
For this we use the
RSpec testing
framework
Gareth Rushgrove
require 'person'
!
describe Person, "#say" do
it "should say something" do
!
end
end
Gareth Rushgrove
require 'person'
!
describe Person, "#say" do
it "should say something" do
bob = Person.new
bob.say("hello").should 
eq("hello everyone")
end
end
Gareth Rushgrove
Now lets run our test.
It should fail
Gareth Rushgrove
rspec
Gareth Rushgrove
Failures:
1) Person#say should say something
Failure/Error: bob.say("hello").should
eq("hello everyone")
expected: "hello everyone"
got: nil
Finished in 0.00171 seconds
1 example, 1 failure
Gareth Rushgrove
Now lets write the
implementation
Gareth Rushgrove
class Person
def say(word)
word + " everyone"
end
end
Gareth Rushgrove
And run our test
again
Gareth Rushgrove
Person#say
should say something
!
Finished in 0.00199 seconds
1 example, 0 failures
Gareth Rushgrove
Why not have tests
automatically run
whenever you
change the code?
Gareth Rushgrove
That’s what Guard
does
Gareth Rushgrove
guard :rspec, cmd: 'bundle exec rspec' do
watch(%r{^spec/.+_spec.rb$})
watch(%r{^lib/.+.rb$}) { 'spec' }
end
Gareth Rushgrove
guard
Gareth Rushgrove
Lets see a quick
demo
Gareth Rushgrove
Why test puppet
code at all
(Testing declarative languages)
Modules increasingly
contain logic
Gareth Rushgrove
Modules increasingly
take arguments
Gareth Rushgrove
Modules increasingly
have interfaces with
other modules
Gareth Rushgrove
Modules increasingly
used in many
operating system and
version combinations
Gareth Rushgrove
Modules increasingly
used in many Ruby
and Puppet version
combinations
Gareth Rushgrove
Unit testing
puppet with
rspec-puppet
(Finally some puppet code)
Unit testing
for Puppet
A very simple puppet
class
Gareth Rushgrove
class sample {
}
Gareth Rushgrove
First write the test
Gareth Rushgrove
require 'spec_helper'
!
describe "sample" do
it { should create_file('/tmp/sample')}
end
Gareth Rushgrove
Then run the test
Gareth Rushgrove
sample
should contain File[/tmp/sample] (FAILED - 1)
!
Finished in 0.4584 seconds
1 example, 1 failure
Gareth Rushgrove
And then write the
(puppet) code to
make the test pass
Gareth Rushgrove
class sample {
file { "/tmp/sample":
ensure => present,
}
}
Gareth Rushgrove
sample
should contain File[/tmp/sample]
!
Finished in 0.3881 seconds
1 example, 0 failures
Gareth Rushgrove
Lets run the tests
automatically
whenever you
change anything
Gareth Rushgrove
guard :rspec, cmd: 'bundle exec rspec' do
watch(%r{^spec/.+_spec.rb$})
watch(%r{^manifests/.+.pp$}) { 'spec' }
end
Gareth Rushgrove
Lets see a quick
demo of that too
Gareth Rushgrove
You can also test
hosts, defines, facts,
functions, hieradata
Gareth Rushgrove
Syntax checking,
linting, oh my
(Creating a build process)
puppet-lint
Gareth Rushgrove
Puppet!
style guide
Available!
as a gem
puppet-lint --with-filename /etc/puppet/modules
foo/manifests/bar.pp: trailing whitespace found
on line 1 apache/manifests/server.pp: variable
not enclosed in {} on line 56
Gareth Rushgrove
puppet-syntax
Gareth Rushgrove
Validate Puppet
and ERB syntax
require 'puppet-syntax/tasks/puppet-syntax'
Gareth Rushgrove
rake syntax
---> syntax:manifests
---> syntax:templates
---> syntax:hiera:yaml
Gareth Rushgrove
What is Rake and
why do we use it
(Still no puppet)
Rake is a Ruby!
build tool
Gareth Rushgrove
It’s like Make but in
Ruby
Gareth Rushgrove
It’s very easy to
distribute Rake tasks
as Ruby gems
Gareth Rushgrove
rake
Gareth Rushgrove
rake <command>
Gareth Rushgrove
rake -T
Gareth Rushgrove
Lets make a
command to run lint,
syntax and spec
Gareth Rushgrove
task :test => [
:syntax,
:lint,
:spec,
]
Gareth Rushgrove
rake test
Gareth Rushgrove
Acceptance
testing with
beaker
(Living on the edge)
Acceptance
test against
real systems
Gareth Rushgrove
Test what actually
happens, not what is
meant to happen
Gareth Rushgrove
Build by
Gareth Rushgrove
Very new
Gareth Rushgrove
Test against different
operating systems
Gareth Rushgrove
HOSTS:
ubuntu-server-12042-x64:
roles:
- master
platform: ubuntu-server-12.04-amd64
box: ubuntu-server-12042-x64-vbox4210-nocm
box_url: http://puppet-vagrant-boxes.puppetlabs.com/u
hypervisor: vagrant
!
CONFIG:
log_level: verbose
type: foss
Gareth Rushgrove
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/
hypervisor : vagrant
!
CONFIG:
log_level: verbose
type: foss
Gareth Rushgrove
Supports multiple
hypervisors
Gareth Rushgrove
Vagrant
hypervisor
VSphere
hypervisor
Helpers to install
puppet and modules
Gareth Rushgrove
install_puppet
Gareth Rushgrove
puppet('module', 'install', 'puppetlabs-stdlib')
Gareth Rushgrove
Test that Puppet runs
without errors
Gareth Rushgrove
context 'default parameters' do
it 'should work with no errors' do
pp = “class { 'sample': }”
!
expect(apply_manifest(pp).exit_code).to_not eq(1)
end
end
Gareth Rushgrove
Test runs are
idempotent
Gareth Rushgrove
context 'default parameters' do
it 'should work with no errors' do
pp = “class { 'sample': }”
!
expect(apply_manifest(pp).exit_code).to_not eq(1)
expect(apply_manifest(pp).exit_code).to eq(0)
end
end
Gareth Rushgrove
Test that the module
installs packages, run
services, etc.
Gareth Rushgrove
Gareth Rushgrove
describe package('nginx') do
it { should be_installed }
end
!
describe service('nginx') do
it { should be_enabled }
it { should be_running }
end
!
describe port(80) do
it { should be_listening}
end
Gareth Rushgrove
Other useful tools
(and what we’re still missing)
Fixtures,
matchers
Gareth Rushgrove
Nice continuous
integration
Test pull request
branches too
---
language: ruby
bundler_args: --without development
before_install: rm Gemfile.lock || true
rvm:
- 1.8.7
- 1.9.3
- 2.0.0
script: bundle exec rake test
env:
- PUPPET_VERSION="~> 2.7.0"
- PUPPET_VERSION="~> 3.1.0"
- PUPPET_VERSION="~> 3.2.0"
- PUPPET_VERSION="~> 3.3.0"
- PUPPET_VERSION="~> 3.4.0"
Gareth Rushgrove
Official!
ruby
support
matrix:
exclude:
- rvm: 2.0.0
env: PUPPET_VERSION="~> 2.7.0"
- rvm: 2.0.0
env: PUPPET_VERSION="~> 3.1.0"
- rvm: 1.9.3
env: PUPPET_VERSION="~> 2.7.0"
Gareth Rushgrove
Experimental code
coverage support in
rspec-puppet master
Gareth Rushgrove
at_exit { RSpec::Puppet::Coverage.report! }
Gareth Rushgrove
Total resources: 24
Touched resources: 8
Resource coverage: 33.33%
!
Untouched resources:
Class[Nginx]
File[preferences.d]
Anchor[apt::update]
Class[Apt::Params]
File[sources.list]
Exec[Required packages: 'debian-keyring debian-arch
Anchor[apt::source::nginx]
Class[Apt::Update]
File[configure-apt-proxy]
Apt::Key[Add key: 7BD9BF62 from Apt::Source nginx]
Anchor[apt::key/Add key: 7BD9BF62 from Apt::Source
Anchor[apt::key 7BD9BF62 present]
File[nginx.list]Gareth Rushgrove
A puppet module
skeleton with
everything working
out of the box
Gareth Rushgrove
puppet module
skeleton
puppet module generate sample
Gareth Rushgrove
A pretty complete
example
(The Docker module)
Gareth Rushgrove
Gareth Rushgrove
Featured on
the Forge
Gareth Rushgrove
50 pull request
and counting
Gareth Rushgrove
Contributing
guidelines
Gareth Rushgrove
Gareth Rushgrove
Currently has
121 tests
6 classes, 2 defines,
413 lines of puppet
code, 387 lines of
test code
Gareth Rushgrove
Take away
(If all you remember is…)
Infrastructure as
code
Gareth Rushgrove
The first test is the
hardest
Gareth Rushgrove
Politely demand tests
for contributions
Gareth Rushgrove
Test the interface not
the implementation
Gareth Rushgrove
Questions?
(And thanks for listening)

Mais conteúdo relacionado

Mais procurados

20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
garrett honeycutt
 
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance TuningPyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
Graham Dumpleton
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
James Williams
 

Mais procurados (20)

20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
 
Antons Kranga Building Agile Infrastructures
Antons Kranga   Building Agile InfrastructuresAntons Kranga   Building Agile Infrastructures
Antons Kranga Building Agile Infrastructures
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your Organization
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet code
 
Troubleshooting Puppet
Troubleshooting PuppetTroubleshooting Puppet
Troubleshooting Puppet
 
Cooking Perl with Chef
Cooking Perl with ChefCooking Perl with Chef
Cooking Perl with Chef
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
 
Vagrant+Rouster at salesforce.com
Vagrant+Rouster at salesforce.comVagrant+Rouster at salesforce.com
Vagrant+Rouster at salesforce.com
 
Cooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packages
 
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
 
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
 
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance TuningPyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
 
Vagrant and CentOS 7
Vagrant and CentOS 7Vagrant and CentOS 7
Vagrant and CentOS 7
 
Testing with PostgreSQL
Testing with PostgreSQLTesting with PostgreSQL
Testing with PostgreSQL
 
Testing Your Automation Code (Docker Version)
Testing Your Automation Code (Docker Version)Testing Your Automation Code (Docker Version)
Testing Your Automation Code (Docker Version)
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012Exploring the Titanium CLI - Codestrong 2012
Exploring the Titanium CLI - Codestrong 2012
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 
Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013
Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013
Titanium 3.2 CLI - TiAppCamp2 - 11/2/2013
 
Learning Puppet Chapter 1
Learning Puppet Chapter 1Learning Puppet Chapter 1
Learning Puppet Chapter 1
 

Destaque

Morgue , helping better understand events by building a post mortem tool - Be...
Morgue , helping better understand events by building a post mortem tool - Be...Morgue , helping better understand events by building a post mortem tool - Be...
Morgue , helping better understand events by building a post mortem tool - Be...
Devopsdays
 
presentation on reducing Cost in Cloud Computing
 presentation on reducing Cost in Cloud Computing presentation on reducing Cost in Cloud Computing
presentation on reducing Cost in Cloud Computing
Muhammad Faheem ul Hassan
 
Data Center Virtualization @ Cisco
Data Center Virtualization @ CiscoData Center Virtualization @ Cisco
Data Center Virtualization @ Cisco
vmug
 
Optimization of Resource Provisioning Cost in Cloud Computing
Optimization of Resource Provisioning Cost in Cloud ComputingOptimization of Resource Provisioning Cost in Cloud Computing
Optimization of Resource Provisioning Cost in Cloud Computing
Aswin Kalarickal
 
Cost Optimization as Major Architectural Consideration for Cloud Application
Cost Optimization as Major Architectural Consideration for Cloud ApplicationCost Optimization as Major Architectural Consideration for Cloud Application
Cost Optimization as Major Architectural Consideration for Cloud Application
Udayan Banerjee
 

Destaque (20)

Guess who is this person
Guess who is this personGuess who is this person
Guess who is this person
 
Cloud Native Cost Optimization
Cloud Native Cost OptimizationCloud Native Cost Optimization
Cloud Native Cost Optimization
 
Building Cost-Aware Cloud Architectures - Jinesh Varia (AWS) and Adrian Cockc...
Building Cost-Aware Cloud Architectures - Jinesh Varia (AWS) and Adrian Cockc...Building Cost-Aware Cloud Architectures - Jinesh Varia (AWS) and Adrian Cockc...
Building Cost-Aware Cloud Architectures - Jinesh Varia (AWS) and Adrian Cockc...
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack Architecture
 
Morgue , helping better understand events by building a post mortem tool - Be...
Morgue , helping better understand events by building a post mortem tool - Be...Morgue , helping better understand events by building a post mortem tool - Be...
Morgue , helping better understand events by building a post mortem tool - Be...
 
presentation on reducing Cost in Cloud Computing
 presentation on reducing Cost in Cloud Computing presentation on reducing Cost in Cloud Computing
presentation on reducing Cost in Cloud Computing
 
Black Swan Based VM Placement and Migration Optimizations
Black Swan Based VM Placement and Migration OptimizationsBlack Swan Based VM Placement and Migration Optimizations
Black Swan Based VM Placement and Migration Optimizations
 
Final Review
Final ReviewFinal Review
Final Review
 
The 27th Australasian Conference on Information Systems
The 27th Australasian Conference  on Information SystemsThe 27th Australasian Conference  on Information Systems
The 27th Australasian Conference on Information Systems
 
Netflix Story of Embracing the Cloud
Netflix Story of Embracing the CloudNetflix Story of Embracing the Cloud
Netflix Story of Embracing the Cloud
 
Cost Optimization
Cost OptimizationCost Optimization
Cost Optimization
 
Data Center Virtualization @ Cisco
Data Center Virtualization @ CiscoData Center Virtualization @ Cisco
Data Center Virtualization @ Cisco
 
2016 Utah Cloud Summit: TCO & Cost Optimization
2016 Utah Cloud Summit: TCO & Cost Optimization2016 Utah Cloud Summit: TCO & Cost Optimization
2016 Utah Cloud Summit: TCO & Cost Optimization
 
Gartner 2013 it cost optimization strategy, best practices & risks
Gartner  2013 it cost optimization strategy, best practices & risksGartner  2013 it cost optimization strategy, best practices & risks
Gartner 2013 it cost optimization strategy, best practices & risks
 
Cloud computing: cost reduction
Cloud computing: cost reductionCloud computing: cost reduction
Cloud computing: cost reduction
 
Data Center Architecture Trends
Data Center Architecture TrendsData Center Architecture Trends
Data Center Architecture Trends
 
Data center network architectures v1.3
Data center network architectures v1.3Data center network architectures v1.3
Data center network architectures v1.3
 
Optimization of Resource Provisioning Cost in Cloud Computing
Optimization of Resource Provisioning Cost in Cloud ComputingOptimization of Resource Provisioning Cost in Cloud Computing
Optimization of Resource Provisioning Cost in Cloud Computing
 
Dell Data Center Networking Overview
Dell Data Center Networking OverviewDell Data Center Networking Overview
Dell Data Center Networking Overview
 
Cost Optimization as Major Architectural Consideration for Cloud Application
Cost Optimization as Major Architectural Consideration for Cloud ApplicationCost Optimization as Major Architectural Consideration for Cloud Application
Cost Optimization as Major Architectural Consideration for Cloud Application
 

Semelhante a Test Driven Development with Puppet

Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet
 
Boosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with GroovyBoosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with Groovy
James Williams
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016
Holden Karau
 

Semelhante a Test Driven Development with Puppet (20)

Test Driven Development with Puppet - PuppetConf 2014
Test Driven Development with Puppet - PuppetConf 2014Test Driven Development with Puppet - PuppetConf 2014
Test Driven Development with Puppet - PuppetConf 2014
 
Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the Forge
 
Continuously Testing Infrastructure - Beyond Module Testing - PuppetConf 2014
Continuously Testing Infrastructure - Beyond Module Testing - PuppetConf 2014Continuously Testing Infrastructure - Beyond Module Testing - PuppetConf 2014
Continuously Testing Infrastructure - Beyond Module Testing - PuppetConf 2014
 
The Challenges of Container Configuration
The Challenges of Container ConfigurationThe Challenges of Container Configuration
The Challenges of Container Configuration
 
Core java
Core javaCore java
Core java
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
 
The GO Language : From Beginners to Gophers
The GO Language : From Beginners to GophersThe GO Language : From Beginners to Gophers
The GO Language : From Beginners to Gophers
 
Automated Unit Testing
Automated Unit TestingAutomated Unit Testing
Automated Unit Testing
 
maXbox Starter 36 Software Testing
maXbox Starter 36 Software TestingmaXbox Starter 36 Software Testing
maXbox Starter 36 Software Testing
 
Unit testing of spark applications
Unit testing of spark applicationsUnit testing of spark applications
Unit testing of spark applications
 
Boosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with GroovyBoosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with Groovy
 
Javaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 GroovytestingJavaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 Groovytesting
 
Developer Test - Things to Know
Developer Test - Things to KnowDeveloper Test - Things to Know
Developer Test - Things to Know
 
Fighting Fear-Driven-Development With PHPUnit
Fighting Fear-Driven-Development With PHPUnitFighting Fear-Driven-Development With PHPUnit
Fighting Fear-Driven-Development With PHPUnit
 
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA142014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Puppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven DevelopmentPuppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven Development
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016
 
Introduzione al TDD
Introduzione al TDDIntroduzione al TDD
Introduzione al TDD
 

Mais de 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)

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
 
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
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav Hadzhiev
 

Último

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Test Driven Development with Puppet