SlideShare a Scribd company logo
Puppet and AWS is easy …… ?
Cara Crawford and Scott Coulton
Who are we?
DevOps/Infrastructure Manager
2	
  
Cara Crawford
•  8 + years development experience
•  6 + years operational sysadmin experience
•  Extensive experience across website solutions in both datacentre
and cloud solutions across Linux and Windows environments
	
  	
  
@cara_p
Who are we?
DevOps Solution Architect
3	
  
Scott Coulton
•  10 + years hosting solutions experience
•  Extensive experience in architecture across AWS, Puppet, Linux,
Docker and all things open source
Sc
	
  	
  
	
  	
  
h#ps://github.com/sco#y-­‐c	
  
h#ps://
registry.hub.docker.com
/repos/sco#yc/	
  
h#ps://forge.puppetlabs.com/
sco#yc	
  
@sco#coulton	
  
Who are we?
4	
  
Healthdirect Australia manages the following healthcare
service:
•  Healthdirect nurse helpline and health information
•  After hours GP helpline
•  Pregnancy, Birth and Baby
•  Mindhealthconnect
•  National Health Service Directory
•  My Aged Care
•  Video Call Consulting
	
  	
  
What we were trying to solve
August 2013
5	
  
•  Majority of servers located in AWS
•  Manual deployments
•  Cloning for provisioning
•  Inconsistent environments
•  No CD
•  No CI
•  No Infrastructure as code
•  No Automated testing
•  Very limited automation
	
  	
  
Deployments would take weeks or months with a high level of
developer input onto cloned servers
How did we solve it
6	
  
First Iteration – Nov 2013
•  Basic Combination approach of Boto and Python for AWS scripting
•  Basic Opensource Puppet for configuration, server management
Third Iteration – Jan 2015
•  AWS Puppet module with cloud formation
•  Advanced puppet coding standards with testing
•  Container services and schedulers

Second Iteration – Feb 2014
•  Improvements to scripts
•  Additional Puppet coding standards including upgrading to Enterprise
•  Heading towards 100% Puppet coverage
Our Environment
7	
  
5 development environments

3 Puppet masters
Dynamically controlling the 
VPC environments they are 
responsible for

Each environment the access
level reducing towards Stage
and Prod being automated
environments
So it all looks easy, Right !!!!!
8	
  
What have we learnt ?
9	
  
A solid foundation
-  Development … Where to start ???
-  Unit and acceptance testing frameworks
-  CD with Puppet
Deploying to AWS with Puppet
-  Tips and tricks
What we are working on now to take Puppet to the next level
Development, Where to start ?
10	
  
If you have never written a module start here !!!
11	
  
h#ps://forge.puppetlabs.com/	
  
Start with a solid development foundation !!!
12	
  
h#ps://github.com/mitchellh/vagrant	
  
A	
  must	
  have	
  for	
  any	
  Puppet	
  development	
  	
  
•  Quick	
  deployments	
  
•  A	
  massive	
  community	
  	
  
•  Supports	
  any	
  OS	
  you	
  do	
  	
  
•  You	
  can	
  deploy	
  a	
  single	
  machine	
  or	
  100	
  	
  
•  It	
  is	
  as	
  complex	
  or	
  simple	
  as	
  you	
  need	
  it	
  to	
  be	
  	
  
•  Its	
  all	
  Ruby	
  	
  	
  
If you have not developed Vagrant framework , Here are is a good one
13	
  
h#ps://github.com/adrienthebo/oscar	
  
What we have done with Vagrant
14	
  
•  Re	
  useable	
  VagrantFile	
  with	
  variables	
  
•  Yaml	
  box	
  configuraMon	
  	
  
•  MulM-­‐node	
  test	
  environments	
  with	
  both	
  open	
  source	
  and	
  Puppet	
  Enterprise	
  	
  
•  Full	
  Hiera	
  integraMon	
  	
  	
  
•  We	
  have	
  a	
  full	
  replicaMon	
  of	
  producMon	
  on	
  our	
  laptops	
  	
  	
  
VagrantFile
15	
  
Yaml backend
16	
  
Unit testing is a must !!!
17	
  
•  Picks	
  up	
  human	
  error	
  
•  Tests	
  module	
  dependancies	
  
•  EssenMal	
  for	
  the	
  CD/CI	
  process	
  	
  	
  
Tools for the job
h#p://rspec-­‐puppet.com/	
  
h#ps://github.com/rodjek/rspec-­‐puppet	
  
What do tests look like ?
18	
  
A	
  simple	
  example	
  
A	
  complex	
  example	
  
execute	
  the	
  test	
  
•  rake	
  spec_prep	
  &&	
  rspec	
  
But wait what don't test cover ?
19	
  
•  Package	
  versions,	
  If	
  a	
  file	
  exists	
  etc	
  
So we need acceptance testing
•  This	
  where	
  Vagrant	
  comes	
  back	
  in	
  	
  
Run the module !!!!
Puppetlabs	
  have	
  a	
  very	
  good	
  framework	
  for	
  this	
  h#ps://github.com/puppetlabs/beaker	
  
So now we have our working modules …
How do we integrate them with CD ?
20	
  
•  r10k	
  h#ps://github.com/puppetlabs/r10k	
  is	
  a	
  good	
  
place	
  to	
  start.	
  
This	
  will	
  give	
  you	
  a	
  great	
  transport	
  mechanism	
  from	
  source	
  
control	
  to	
  the	
  Puppet	
  master.	
  
But what if we are using a CD tool (ie Jenkins etc) ?
Puppet code deployment flow
21	
  
So some CD tricks and tips we use
22	
  
Every	
  module	
  has	
  its	
  own	
  repo	
  
So some CD tricks and tips we use
23	
  
Each	
  pipeline	
  runs	
  different	
  test	
  before	
  it	
  can	
  move	
  to	
  the	
  next	
  
AWS Deployment Tools
24	
  
…	
  And	
  because	
  we	
  are	
  not	
  big	
  fans	
  of	
  JSON	
  
h#ps://github.com/bazaarvoice/cloudformaMon-­‐ruby-­‐dsl	
  
Example of the AWS Puppet module
25	
  
Benefits of the AWS Puppet module
26	
  
•  Anyone	
  on	
  the	
  team	
  can	
  develop	
  a	
  new	
  AWS	
  instance,	
  elb	
  etc	
  
•  Out	
  of	
  the	
  box	
  we	
  have	
  great	
  unit	
  tesMng	
  coverage	
  
•  On	
  every	
  Puppet	
  run	
  reverts	
  the	
  environment	
  to	
  the	
  desired	
  state	
  
Number	
  1	
  2p	
  for	
  AWS	
  
h#ps://docs.puppetlabs.com/guides/rest_api.html	
  
The	
  HTTP	
  API	
  
AWS	
  SQS	
  +	
  Puppetlabs	
  HTTP	
  API	
  =	
  Happy	
  engineers	
  	
  	
  
27	
  
What we are working on to take Puppet and
AWS to the next level
28	
  
29	
  
require => Class['docker']
docker-compose.yml.erb
What we are working on now to take Puppet to the next level
30	
  
Docker	
  scheduling	
  with	
  Puppet	
  
Dynamic	
  Hiera	
  backend	
  and	
  service	
  discovery	
  
So that was easy right ????
31	
  
Questions
http://www.healthdirect.gov.au

More Related Content

PDF
Puppet Camp LA 2015: Server Management with Puppet on AWS for a fast-growing ...
PDF
Tp install anything
PDF
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
PDF
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
PDF
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
PPTX
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
PDF
Puppetconf 2015 - Puppet Reporting with Elasticsearch Logstash and Kibana
PPTX
High availability for puppet - 2016
Puppet Camp LA 2015: Server Management with Puppet on AWS for a fast-growing ...
Tp install anything
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppetconf 2015 - Puppet Reporting with Elasticsearch Logstash and Kibana
High availability for puppet - 2016

What's hot (19)

PDF
Masterless puppet
PDF
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PDF
Killer R10K Workflow - PuppetConf 2014
KEY
Avoiding surprises with Chef and Vagrant
ODP
Foreman in Your Data Center :OSDC 2015
PDF
Vagrant - the essence of DevOps in a tool
PDF
Open shift intro for Philly PUG
PPTX
Cooking the Cake for Nuget packages
PPTX
Composer JSON kills make files
PPTX
TYPO3 CMS deployment with Jenkins CI
PDF
TYPO3 Surf Introduction
ODP
Pywps a tutorial for beginners and developers
PDF
Git+jenkins+rex presentation
PPTX
Vagrant, Chef and TYPO3 - A Love Affair
PDF
Monitoring of OpenNebula installations
PDF
PPTX
Vagrant and Chef on FOSSASIA 2014
PDF
Fluentd and PHP
PDF
Whatthestack using Tempest for testing your OpenStack deployment
Masterless puppet
PuppetCamp Sydney 2012 - Building a Multimaster Environment
Killer R10K Workflow - PuppetConf 2014
Avoiding surprises with Chef and Vagrant
Foreman in Your Data Center :OSDC 2015
Vagrant - the essence of DevOps in a tool
Open shift intro for Philly PUG
Cooking the Cake for Nuget packages
Composer JSON kills make files
TYPO3 CMS deployment with Jenkins CI
TYPO3 Surf Introduction
Pywps a tutorial for beginners and developers
Git+jenkins+rex presentation
Vagrant, Chef and TYPO3 - A Love Affair
Monitoring of OpenNebula installations
Vagrant and Chef on FOSSASIA 2014
Fluentd and PHP
Whatthestack using Tempest for testing your OpenStack deployment
Ad

Similar to Puppet and AWS is Easy...? (20)

PDF
State of Big Data on ARM64 / AArch64 - Apache Bigtop
PPTX
How volkswagen used microservices and automation to develop self service solu...
PPTX
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
PPTX
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
PPTX
How bigtop leveraged docker for build automation and one click hadoop provis...
PDF
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
PPTX
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
PPTX
Free Mongo on OpenShift
ODP
devops@cineca
PDF
What we talk about when we talk about DevOps
PDF
OpenStack Ottawa Q2 MeetUp - May 31st 2017
PPTX
Making sense of Apache Bigtop's role in ODPi and how it matters to Apache Apex
PPTX
Fluo CICD OpenStack Summit
PDF
GitOps Testing in Kubernetes with Flux and Testkube.pdf
PPTX
Octopus Deploy @Erie Day of Code
PDF
Build an Infra Product with AWS Fargate
PDF
“Containerizing” applications with Docker: Ecosystem and Tools
PDF
Kubernetes Cloud Native Indonesia Meetup - June 2024
PPTX
Kubernetes 101
PPTX
Easily adapt Puppet Modules with PDK Convert 02/22/2018
State of Big Data on ARM64 / AArch64 - Apache Bigtop
How volkswagen used microservices and automation to develop self service solu...
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
How bigtop leveraged docker for build automation and one click hadoop provis...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
Free Mongo on OpenShift
devops@cineca
What we talk about when we talk about DevOps
OpenStack Ottawa Q2 MeetUp - May 31st 2017
Making sense of Apache Bigtop's role in ODPi and how it matters to Apache Apex
Fluo CICD OpenStack Summit
GitOps Testing in Kubernetes with Flux and Testkube.pdf
Octopus Deploy @Erie Day of Code
Build an Infra Product with AWS Fargate
“Containerizing” applications with Docker: Ecosystem and Tools
Kubernetes Cloud Native Indonesia Meetup - June 2024
Kubernetes 101
Easily adapt Puppet Modules with PDK Convert 02/22/2018
Ad

More from Puppet (20)

PPTX
Puppet Community Day: Planning the Future Together
PPTX
The Evolution of Puppet: Key Changes and Modernization Tips
PPTX
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
PPTX
Bolt Dynamic Inventory: Making Puppet Easier
PPTX
Customizing Reporting with the Puppet Report Processor
PPTX
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
PPTX
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
PPTX
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
PDF
Puppet camp2021 testing modules and controlrepo
PPTX
Puppetcamp r10kyaml
PDF
2021 04-15 operational verification (with notes)
PPTX
Puppet camp vscode
PDF
Modules of the twenties
PDF
Applying Roles and Profiles method to compliance code
PPTX
KGI compliance as-code approach
PDF
Enforce compliance policy with model-driven automation
PDF
Keynote: Puppet camp compliance
PPTX
Automating it management with Puppet + ServiceNow
PPTX
Puppet: The best way to harden Windows
PPTX
Simplified Patch Management with Puppet - Oct. 2020
Puppet Community Day: Planning the Future Together
The Evolution of Puppet: Key Changes and Modernization Tips
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Bolt Dynamic Inventory: Making Puppet Easier
Customizing Reporting with the Puppet Report Processor
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Puppet camp2021 testing modules and controlrepo
Puppetcamp r10kyaml
2021 04-15 operational verification (with notes)
Puppet camp vscode
Modules of the twenties
Applying Roles and Profiles method to compliance code
KGI compliance as-code approach
Enforce compliance policy with model-driven automation
Keynote: Puppet camp compliance
Automating it management with Puppet + ServiceNow
Puppet: The best way to harden Windows
Simplified Patch Management with Puppet - Oct. 2020

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Machine learning based COVID-19 study performance prediction
PDF
cuic standard and advanced reporting.pdf
PDF
KodekX | Application Modernization Development
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Electronic commerce courselecture one. Pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Empathic Computing: Creating Shared Understanding
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Building Integrated photovoltaic BIPV_UPV.pdf
Review of recent advances in non-invasive hemoglobin estimation
Per capita expenditure prediction using model stacking based on satellite ima...
The AUB Centre for AI in Media Proposal.docx
Machine learning based COVID-19 study performance prediction
cuic standard and advanced reporting.pdf
KodekX | Application Modernization Development
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Electronic commerce courselecture one. Pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
MIND Revenue Release Quarter 2 2025 Press Release
NewMind AI Weekly Chronicles - August'25 Week I
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Empathic Computing: Creating Shared Understanding
Diabetes mellitus diagnosis method based random forest with bat algorithm
Mobile App Security Testing_ A Comprehensive Guide.pdf
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
Understanding_Digital_Forensics_Presentation.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton

Puppet and AWS is Easy...?

  • 1. Puppet and AWS is easy …… ? Cara Crawford and Scott Coulton
  • 2. Who are we? DevOps/Infrastructure Manager 2   Cara Crawford •  8 + years development experience •  6 + years operational sysadmin experience •  Extensive experience across website solutions in both datacentre and cloud solutions across Linux and Windows environments     @cara_p
  • 3. Who are we? DevOps Solution Architect 3   Scott Coulton •  10 + years hosting solutions experience •  Extensive experience in architecture across AWS, Puppet, Linux, Docker and all things open source Sc         h#ps://github.com/sco#y-­‐c   h#ps:// registry.hub.docker.com /repos/sco#yc/   h#ps://forge.puppetlabs.com/ sco#yc   @sco#coulton  
  • 4. Who are we? 4   Healthdirect Australia manages the following healthcare service: •  Healthdirect nurse helpline and health information •  After hours GP helpline •  Pregnancy, Birth and Baby •  Mindhealthconnect •  National Health Service Directory •  My Aged Care •  Video Call Consulting    
  • 5. What we were trying to solve August 2013 5   •  Majority of servers located in AWS •  Manual deployments •  Cloning for provisioning •  Inconsistent environments •  No CD •  No CI •  No Infrastructure as code •  No Automated testing •  Very limited automation     Deployments would take weeks or months with a high level of developer input onto cloned servers
  • 6. How did we solve it 6   First Iteration – Nov 2013 •  Basic Combination approach of Boto and Python for AWS scripting •  Basic Opensource Puppet for configuration, server management Third Iteration – Jan 2015 •  AWS Puppet module with cloud formation •  Advanced puppet coding standards with testing •  Container services and schedulers Second Iteration – Feb 2014 •  Improvements to scripts •  Additional Puppet coding standards including upgrading to Enterprise •  Heading towards 100% Puppet coverage
  • 7. Our Environment 7   5 development environments 3 Puppet masters Dynamically controlling the VPC environments they are responsible for Each environment the access level reducing towards Stage and Prod being automated environments
  • 8. So it all looks easy, Right !!!!! 8  
  • 9. What have we learnt ? 9   A solid foundation -  Development … Where to start ??? -  Unit and acceptance testing frameworks -  CD with Puppet Deploying to AWS with Puppet -  Tips and tricks What we are working on now to take Puppet to the next level
  • 10. Development, Where to start ? 10  
  • 11. If you have never written a module start here !!! 11   h#ps://forge.puppetlabs.com/  
  • 12. Start with a solid development foundation !!! 12   h#ps://github.com/mitchellh/vagrant   A  must  have  for  any  Puppet  development     •  Quick  deployments   •  A  massive  community     •  Supports  any  OS  you  do     •  You  can  deploy  a  single  machine  or  100     •  It  is  as  complex  or  simple  as  you  need  it  to  be     •  Its  all  Ruby      
  • 13. If you have not developed Vagrant framework , Here are is a good one 13   h#ps://github.com/adrienthebo/oscar  
  • 14. What we have done with Vagrant 14   •  Re  useable  VagrantFile  with  variables   •  Yaml  box  configuraMon     •  MulM-­‐node  test  environments  with  both  open  source  and  Puppet  Enterprise     •  Full  Hiera  integraMon       •  We  have  a  full  replicaMon  of  producMon  on  our  laptops      
  • 17. Unit testing is a must !!! 17   •  Picks  up  human  error   •  Tests  module  dependancies   •  EssenMal  for  the  CD/CI  process       Tools for the job h#p://rspec-­‐puppet.com/   h#ps://github.com/rodjek/rspec-­‐puppet  
  • 18. What do tests look like ? 18   A  simple  example   A  complex  example   execute  the  test   •  rake  spec_prep  &&  rspec  
  • 19. But wait what don't test cover ? 19   •  Package  versions,  If  a  file  exists  etc   So we need acceptance testing •  This  where  Vagrant  comes  back  in     Run the module !!!! Puppetlabs  have  a  very  good  framework  for  this  h#ps://github.com/puppetlabs/beaker  
  • 20. So now we have our working modules … How do we integrate them with CD ? 20   •  r10k  h#ps://github.com/puppetlabs/r10k  is  a  good   place  to  start.   This  will  give  you  a  great  transport  mechanism  from  source   control  to  the  Puppet  master.   But what if we are using a CD tool (ie Jenkins etc) ?
  • 22. So some CD tricks and tips we use 22   Every  module  has  its  own  repo  
  • 23. So some CD tricks and tips we use 23   Each  pipeline  runs  different  test  before  it  can  move  to  the  next  
  • 24. AWS Deployment Tools 24   …  And  because  we  are  not  big  fans  of  JSON   h#ps://github.com/bazaarvoice/cloudformaMon-­‐ruby-­‐dsl  
  • 25. Example of the AWS Puppet module 25  
  • 26. Benefits of the AWS Puppet module 26   •  Anyone  on  the  team  can  develop  a  new  AWS  instance,  elb  etc   •  Out  of  the  box  we  have  great  unit  tesMng  coverage   •  On  every  Puppet  run  reverts  the  environment  to  the  desired  state   Number  1  2p  for  AWS   h#ps://docs.puppetlabs.com/guides/rest_api.html   The  HTTP  API   AWS  SQS  +  Puppetlabs  HTTP  API  =  Happy  engineers      
  • 27. 27   What we are working on to take Puppet and AWS to the next level
  • 28. 28  
  • 29. 29   require => Class['docker'] docker-compose.yml.erb
  • 30. What we are working on now to take Puppet to the next level 30   Docker  scheduling  with  Puppet   Dynamic  Hiera  backend  and  service  discovery  
  • 31. So that was easy right ???? 31