SlideShare a Scribd company logo
Cloud Infrastructure 
as Code 
Andrew Parker 
Puppet Labs 
@aparker42
In 1889
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Tickets please
Eureka !
Herman's Invention
Herman, grows a Mustache
The Tabulating Machine
Automation makes IT better!
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet 
A language and infrastructure
Puppet Resources 
• Describes the desired configuration state of 
individual elements of the system being 
managed 
user { 'henrik': # A user named 'henrik' 
ensure => present, # should exist 
shell => '/bin/bash' # with this shell 
}
Puppet Resources 
package{ 'apache2': # A packaged named 'apache2' 
ensure => present # should be installed 
}
Puppet Language 
• The Puppet Language has constructs to 
– compose sets of resources into classes 
– define order of operations on resources 
– define custom resources
Common Pattern; Package, File, 
Service 
class webserver { 
package{ 'apache2': 
ensure => present 
} 
file { '/etc/apache2/apache2.conf': 
content => template('apache2/apache2.erb'), 
require => Package['apache2'] 
} 
service { 'apache2': 
ensure => running, 
subscribe => File['/etc/apache2/apache2.conf'] 
} 
}
Presto – a Web Server 
• Now we can build a webserver with this: 
node kermit.example.com { 
include webserver 
}
Infra == Code == Text
Infra == Code == Text
Infra == Code == Text
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Cloud Infrastructure 
(as Code)
Turtles All The Way Down
Turtles All The Way Down 
Cloud
Google Compute Engine 
• Express infrastructure as 
– VM Instances 
– Networks 
– Firewalls 
– Disks
Build your own? 
puppet module install puppetlabs-gce_compute
A Disk 
gce_disk { 'mydisk': 
ensure => present, 
size_gb => '2' 
}
A Network 
gce_network { 'mynetwork': 
ensure => present, 
gateway => '10.0.1.1', 
range => '10.0.1.0/24' 
}
An Instance 
gce_instance { 'myinstance': 
ensure => present, 
zone => 'us-central1-a', 
machine => 'n1-standard-1', 
image => "${images}/ubuntu-12-04-v20120621" 
}
New Pattern; Network, Firewall, 
(Disk), Instance 
class app_stack { 
gce_network { 'appnet': 
ensure => present, 
range => '10.0.1.0/24' 
} -> 
gce_firewall { 'webhttp': 
ensure => present, 
allow => 'tcp:80', 
network => 'appnet' 
} -> 
gce_instance { 'server1': 
ensure => present, 
network => 'appnet' 
} 
}
Turtles All The Way Down 
Application 
Cloud
Modules & Classes 
gce_instance { 'myinstance': 
ensure => present, 
. . . 
modules => [ 'puppetlabs-mysql', 
'martasd/mediawiki', 
. . . 
], 
enc_classes => { 
mediawiki => {server_name => "$gce_external_ip"} 
} 
}
Turtles All The Way Down 
Puppet 
Cloud
Setting up a master 
gce_instance { 'pe-master': 
ensure => present, 
. . . 
startupscript => ‘puppet-enterprise.sh’, 
metadata => { 
‘pe_role’ => ‘master’, ‘pe_version’ => ‘3.6.1’ } 
} 
gce_instance { ‘agent-1’: 
ensure => present, 
. . . 
startupscript => ‘puppet-enterprise.sh’, 
metadata => { 
‘pe_role’ => ‘agent’, ‘pe_version’ => ‘3.6.1’, 
‘pe_master’ => ‘pe-master’ } 
}
Turtles All The Way Down 
Application 
Puppet 
Cloud
Security 90s Style 
Master 
Agent 
Agent
Autosign 
# Whether (and how) to autosign certificate requests. 
# This setting 
# is only relevant on a puppet master acting as a 
# certificate authority (CA). 
# 
# Valid values are true (autosigns all certificate 
# requests; not recommended), 
# false (disables autosigning certificates), or the 
# absolute path to a file. 
[master] 
autosign = true
Autosign 
# Whether (and how) to autosign certificate requests. 
# This setting 
# is only relevant on a puppet master acting as a 
# certificate authority (CA). 
# 
# Valid values are true (autosigns all certificate 
# requests; not recommended), 
# false (disables autosigning certificates), or the 
# absolute path to a file. 
[master] 
autosign = $confdir/autosign.conf
Autosign 
# Whether (and how) to autosign certificate requests. 
# This setting 
# is only relevant on a puppet master acting as a 
# certificate authority (CA). 
# 
# Valid values are true (autosigns all certificate 
# requests; not recommended), 
# false (disables autosigning certificates), or the 
# absolute path to a file. 
[master] 
autosign = $confdir/my_autosign 
trusted_node_data = true 
[agent] 
csr_attributes = $confdir/csr_attributes.yaml
Autosign 
# Produce attributes for the csr based on instance 
metadata 
MD="http://metadata/computeMetadata/v1/instance" 
INSTANCE=$(curl -fs -H "Metadata-Flavor: Google" 
$MD/zone) 
NAME=$(curl -fs -H "Metadata-Flavor: Google" 
$MD/attributes/puppet_instancename) 
UUID=$(curl -fs -H "Metadata-Flavor: Google" $MD/id) 
cat > $PUPPET_DIR/csr_attributes.yaml <<END
Autosign 
# Produce attributes for the csr based on instance 
metadata 
MD="http://metadata/computeMetadata/v1/instance" 
INSTANCE=$(curl -fs -H "Metadata-Flavor: Google" 
$MD/zone) 
NAME=$(curl -fs -H "Metadata-Flavor: Google" 
$MD/attributes/puppet_instancename) 
UUID=$(curl -fs -H "Metadata-Flavor: Google" $MD/id) 
cat > $PUPPET_DIR/csr_attributes.yaml <<END
Trust your data 
Master Agent 
CSR 
Certificate 
Facts/Certificate 
Catalog
Why do this? 
• How fast can you change? 
• How frequent? 
• At what cost? 
• What is your level of automation?
So what became of Herman Hollerith?
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
So what became of Herman Hollerith?
So what became of Herman Hollerith?
Questions ?
Puppetize!

More Related Content

PDF
Integrating icinga2 and the HashiCorp suite
PPTX
Ansible fest Presentation slides
KEY
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
PDF
Puppet and the HashiStack
ODP
Integrating icinga2 and the HashiCorp suite
PDF
Puppet at janrain
PDF
Hacking ansible
PPT
Google compute presentation puppet conf
Integrating icinga2 and the HashiCorp suite
Ansible fest Presentation slides
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Puppet and the HashiStack
Integrating icinga2 and the HashiCorp suite
Puppet at janrain
Hacking ansible
Google compute presentation puppet conf

What's hot (20)

PDF
More tips n tricks
PDF
Ansible leveraging 2.0
PDF
Puppet modules for Fun and Profit
PDF
Autoscaling with hashi_corp_nomad
PDF
Testing your infrastructure with litmus
PDF
Observability with Consul Connect
ODP
Europython 2011 - Playing tasks with Django & Celery
PDF
Rhebok, High Performance Rack Handler / Rubykaigi 2015
PDF
An Introduction to Celery
KEY
Django Celery
PDF
Celery - A Distributed Task Queue
PDF
Ansible Meetup Hamburg / Quickstart
PDF
Introduction to Celery
PPTX
Puppet camp chicago-automated_testing2
PPTX
Stack kicker devopsdays-london-2013
PDF
Django Celery - A distributed task queue
PDF
Why Task Queues - ComoRichWeb
PDF
AnsibleFest 2014 - Role Tips and Tricks
PDF
Introduction to Nodejs
PDF
DevOps(4) : Ansible(2) - (MOSG)
More tips n tricks
Ansible leveraging 2.0
Puppet modules for Fun and Profit
Autoscaling with hashi_corp_nomad
Testing your infrastructure with litmus
Observability with Consul Connect
Europython 2011 - Playing tasks with Django & Celery
Rhebok, High Performance Rack Handler / Rubykaigi 2015
An Introduction to Celery
Django Celery
Celery - A Distributed Task Queue
Ansible Meetup Hamburg / Quickstart
Introduction to Celery
Puppet camp chicago-automated_testing2
Stack kicker devopsdays-london-2013
Django Celery - A distributed task queue
Why Task Queues - ComoRichWeb
AnsibleFest 2014 - Role Tips and Tricks
Introduction to Nodejs
DevOps(4) : Ansible(2) - (MOSG)
Ad

Similar to Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code (20)

PPT
Rapid scaling in_the_cloud_with_puppet
PPT
PowerPoint Presentation
PDF
One-Man Ops
ODP
Puppet slides for intelligrape
PPT
vBACD - Introduction to Puppet, Configuration Management and IT Automation So...
PDF
PuppetConf 2017: Puppet & Google Cloud: From Nothing to Production in 10 minu...
PDF
Developing IT infrastructures with Puppet
ODP
Puppet and Apache CloudStack
ODP
Infrastructure as code with Puppet and Apache CloudStack
ODP
Puppet and CloudStack
PDF
SCM Puppet: from an intro to the scaling
PPTX
Puppet atbazaarvoice
ODP
Puppetpreso
PDF
Systems Automation with Puppet
KEY
Puppet for dummies - PHPBenelux UG edition
PPTX
Configuration Management in the Cloud - Cloud Phoenix Meetup Feb 2014
PDF
Infrastructure as code with Puppet and Apache CloudStack
PDF
ApacheCloudStack
PDF
Puppet Camp Berlin 2015: Nigel Kersten | Puppet Keynote
PDF
Puppet Camp Berlin 2015: Puppet Keynote
Rapid scaling in_the_cloud_with_puppet
PowerPoint Presentation
One-Man Ops
Puppet slides for intelligrape
vBACD - Introduction to Puppet, Configuration Management and IT Automation So...
PuppetConf 2017: Puppet & Google Cloud: From Nothing to Production in 10 minu...
Developing IT infrastructures with Puppet
Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
Puppet and CloudStack
SCM Puppet: from an intro to the scaling
Puppet atbazaarvoice
Puppetpreso
Systems Automation with Puppet
Puppet for dummies - PHPBenelux UG edition
Configuration Management in the Cloud - Cloud Phoenix Meetup Feb 2014
Infrastructure as code with Puppet and Apache CloudStack
ApacheCloudStack
Puppet Camp Berlin 2015: Nigel Kersten | Puppet Keynote
Puppet Camp Berlin 2015: Puppet Keynote
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
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Digital Strategies for Manufacturing Companies
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
history of c programming in notes for students .pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Transform Your Business with a Software ERP System
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
AI in Product Development-omnex systems
PPTX
ai tools demonstartion for schools and inter college
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Which alternative to Crystal Reports is best for small or large businesses.pdf
Softaken Excel to vCard Converter Software.pdf
Digital Strategies for Manufacturing Companies
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
How to Choose the Right IT Partner for Your Business in Malaysia
history of c programming in notes for students .pptx
Design an Analysis of Algorithms II-SECS-1021-03
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Odoo Companies in India – Driving Business Transformation.pdf
Navsoft: AI-Powered Business Solutions & Custom Software Development
Wondershare Filmora 15 Crack With Activation Key [2025
L1 - Introduction to python Backend.pptx
Transform Your Business with a Software ERP System
How Creative Agencies Leverage Project Management Software.pdf
ManageIQ - Sprint 268 Review - Slide Deck
AI in Product Development-omnex systems
ai tools demonstartion for schools and inter college
How to Migrate SBCGlobal Email to Yahoo Easily
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...

Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code

  • 1. Cloud Infrastructure as Code Andrew Parker Puppet Labs @aparker42
  • 8. Herman, grows a Mustache
  • 22. Puppet A language and infrastructure
  • 23. Puppet Resources • Describes the desired configuration state of individual elements of the system being managed user { 'henrik': # A user named 'henrik' ensure => present, # should exist shell => '/bin/bash' # with this shell }
  • 24. Puppet Resources package{ 'apache2': # A packaged named 'apache2' ensure => present # should be installed }
  • 25. Puppet Language • The Puppet Language has constructs to – compose sets of resources into classes – define order of operations on resources – define custom resources
  • 26. Common Pattern; Package, File, Service class webserver { package{ 'apache2': ensure => present } file { '/etc/apache2/apache2.conf': content => template('apache2/apache2.erb'), require => Package['apache2'] } service { 'apache2': ensure => running, subscribe => File['/etc/apache2/apache2.conf'] } }
  • 27. Presto – a Web Server • Now we can build a webserver with this: node kermit.example.com { include webserver }
  • 28. Infra == Code == Text
  • 29. Infra == Code == Text
  • 30. Infra == Code == Text
  • 33. Turtles All The Way Down
  • 34. Turtles All The Way Down Cloud
  • 35. Google Compute Engine • Express infrastructure as – VM Instances – Networks – Firewalls – Disks
  • 36. Build your own? puppet module install puppetlabs-gce_compute
  • 37. A Disk gce_disk { 'mydisk': ensure => present, size_gb => '2' }
  • 38. A Network gce_network { 'mynetwork': ensure => present, gateway => '10.0.1.1', range => '10.0.1.0/24' }
  • 39. An Instance gce_instance { 'myinstance': ensure => present, zone => 'us-central1-a', machine => 'n1-standard-1', image => "${images}/ubuntu-12-04-v20120621" }
  • 40. New Pattern; Network, Firewall, (Disk), Instance class app_stack { gce_network { 'appnet': ensure => present, range => '10.0.1.0/24' } -> gce_firewall { 'webhttp': ensure => present, allow => 'tcp:80', network => 'appnet' } -> gce_instance { 'server1': ensure => present, network => 'appnet' } }
  • 41. Turtles All The Way Down Application Cloud
  • 42. Modules & Classes gce_instance { 'myinstance': ensure => present, . . . modules => [ 'puppetlabs-mysql', 'martasd/mediawiki', . . . ], enc_classes => { mediawiki => {server_name => "$gce_external_ip"} } }
  • 43. Turtles All The Way Down Puppet Cloud
  • 44. Setting up a master gce_instance { 'pe-master': ensure => present, . . . startupscript => ‘puppet-enterprise.sh’, metadata => { ‘pe_role’ => ‘master’, ‘pe_version’ => ‘3.6.1’ } } gce_instance { ‘agent-1’: ensure => present, . . . startupscript => ‘puppet-enterprise.sh’, metadata => { ‘pe_role’ => ‘agent’, ‘pe_version’ => ‘3.6.1’, ‘pe_master’ => ‘pe-master’ } }
  • 45. Turtles All The Way Down Application Puppet Cloud
  • 46. Security 90s Style Master Agent Agent
  • 47. Autosign # Whether (and how) to autosign certificate requests. # This setting # is only relevant on a puppet master acting as a # certificate authority (CA). # # Valid values are true (autosigns all certificate # requests; not recommended), # false (disables autosigning certificates), or the # absolute path to a file. [master] autosign = true
  • 48. Autosign # Whether (and how) to autosign certificate requests. # This setting # is only relevant on a puppet master acting as a # certificate authority (CA). # # Valid values are true (autosigns all certificate # requests; not recommended), # false (disables autosigning certificates), or the # absolute path to a file. [master] autosign = $confdir/autosign.conf
  • 49. Autosign # Whether (and how) to autosign certificate requests. # This setting # is only relevant on a puppet master acting as a # certificate authority (CA). # # Valid values are true (autosigns all certificate # requests; not recommended), # false (disables autosigning certificates), or the # absolute path to a file. [master] autosign = $confdir/my_autosign trusted_node_data = true [agent] csr_attributes = $confdir/csr_attributes.yaml
  • 50. Autosign # Produce attributes for the csr based on instance metadata MD="http://metadata/computeMetadata/v1/instance" INSTANCE=$(curl -fs -H "Metadata-Flavor: Google" $MD/zone) NAME=$(curl -fs -H "Metadata-Flavor: Google" $MD/attributes/puppet_instancename) UUID=$(curl -fs -H "Metadata-Flavor: Google" $MD/id) cat > $PUPPET_DIR/csr_attributes.yaml <<END
  • 51. Autosign # Produce attributes for the csr based on instance metadata MD="http://metadata/computeMetadata/v1/instance" INSTANCE=$(curl -fs -H "Metadata-Flavor: Google" $MD/zone) NAME=$(curl -fs -H "Metadata-Flavor: Google" $MD/attributes/puppet_instancename) UUID=$(curl -fs -H "Metadata-Flavor: Google" $MD/id) cat > $PUPPET_DIR/csr_attributes.yaml <<END
  • 52. Trust your data Master Agent CSR Certificate Facts/Certificate Catalog
  • 53. Why do this? • How fast can you change? • How frequent? • At what cost? • What is your level of automation?
  • 54. So what became of Herman Hollerith?
  • 56. So what became of Herman Hollerith?
  • 57. So what became of Herman Hollerith?

Editor's Notes

  • #2: Like to take you back – before Cloud, and to a time when Infrastructure meant Railroads. More precisely, I like to take you back to 1889.
  • #3: The first number of Wall Street Journal was published, and all business news thereafter was printed on pink paper. In April, only a few days apart, Charlie Chaplin, and Adolf Hitler were born. The Eiffel Tower was inaugurated and served as the entrance to the 1889 Paris World's Fair. Seattle Burned Down in the great fire and was rebuilt...on floor lower than the current street level. The Nintendo Company is formed, publishing HANA FUDA Playing Cards. Harry Nyquist is born 26 juni - I Norge införs 7-årig skolplikt. Det fastslås även att den norska folkskolan skall benämnas "folkeskole" och inte "allmueskole" 12 oktober - Gillis Bildt avgår som svensk statsminister och efterträds av Gustaf Åkerhielm.[3] Dette året utvandrer omkring 29 000 nordmenn til USA. Dette er det største antall utvandringer registrert i ett enkelt år
  • #4: But more specifically, lets start with Herman, on one specific morning in 1889. That morning when Herman woke up… he had not slept well as he was mulling on a problem. Every 10 years the United States performs a census enumerating the population. Herman's problem this morning was that United States Census office where Herman worked as a stati stic ian needed to do more with less. The census of 1880 had so many questions that it took about 8 years to count and publish the results from the 50 million population. And for the upcoming census there were going to be even more questions and the population had grown to 63 million (as they were about to find out). Estimates were that it would take 13 years to tabulate the data. ----- drop the rest 1889 – An Electric Tabulating System 1890 The United States decennial census (enumerating the population every 10 years) – the next is 2020
  • #5: This morning, Herman had a train to catch. It was incredibly busy. And Herman found it hard to concentrate.
  • #6: This man changed everything
  • #7: Herman was intrigued by the cuts made in his ticket – and he had an idea !
  • #8: And this is what Herman Invented – a card on which the answers to the census questions could be recorded by punching holes. Herman wasn’t the first to have the idea of punching holes into a card. It had been used for a long time to control looms and music players, but Herman had the novel idea of putting it to use for data. At this point we could go off on a long tangent of data as code and code as data....but let’s try to keep our eye on the prize. Herman realized that In order to punch the holes and then be able to read the answers – someone had to invent the machinery to do so, and then build and supply these machines. So what did Herman do?
  • #9: Considers a neck beard, but decides on a stylish mustache – now that he is about to start his own business building hardware…
  • #10: He named his invention "The tabulating machine". It was a huge success – the 1890 census was finished in under 1 year with far fewer staff – more than a 10x performance boost. So what has this got to do with Clouds-Infrastructure as Code ?
  • #11: The simple moral of the story is THAT WITH THE RIGHT TOOLS YOU CAN DO THINGS FASTER AND MORE ACCURATELY. Not only should you be automating IT, but also automating the making of the automation  LETS FAST FORWARD
  • #12: Do you really build something like this manually ? You would be surprised to amount of companies that maintain infrastructure at this scale with technology where a Tabulating Machine would be high tech! (I am told this picture is from Google)
  • #13: This is also google – we can only guess at the level of automation
  • #14: Or how long it takes to get anything deployed – or improved in this infrastructure.
  • #15: Maybe your manually hacked system infrastructure isn't as bad as this? Imagine what it looks like on the inside – is this a secure system? So what are you going to do?
  • #16: LETS MOVE TO THE CLOUD ! Now you have a new set of problems. Just because you can't see the wiring and the boxes does not mean that the complexities went away. ALL THOSE CABLES ARE NOW INSTRUCTIONS TO A COMPUTER – OUR INFRASTRUCTURE HAS BECOME CODE ! Now your infrastructure only exists because you provided instructions to a computer.
  • #17: Code is naturally something we write down so we don't forget – so we can follow the instructions later… On velum of course
  • #18: Everyone in IT is known for their penmanship and writing skills.
  • #19: And sometimes people collaborate and integrate all their favorite scripts.
  • #20: nhaggggghhhhhhhh uuuuhhhhhhhh As everyone can see, this cat is suffering from a complexity overdose.
  • #21: COMPLEXITY OVERDOSE….
  • #22: Let’s start over How would (or should) you do this now?
  • #29: THE BEST PRACTICES FROM SOFTWARE DEVELOPMENT version control review of changes
  • #30: THE BEST PRACTICES FROM SOFTWARE DEVELOPMENT testing
  • #31: THE BEST PRACTICES FROM SOFTWARE DEVELOPMENT build tools artifacts
  • #32: Wait a second...back up! I started out with the promise of getting away from all of those cables and other hardware into the promised land of the cloud. What does that have to do with files and packages and web servers? Let’s think about it a little. What is the cloud?
  • #34: Let’s think about it a little. What is the cloud? Ok, that question may be unanswerable. Let’s stick to something more concrete. What is EC2 or GCE? They are APIs to create resources. And we have resources that hold other resources!
  • #35: So let’s start at the bottom of this stack. At the layer we’ll call “Cloud”...because well, that is what we are talking about.
  • #37: The GCE module is really well documented, so I won’t rehash everything here.
  • #42: The next level up is what we are going to do on those instances. There are two ways we can approach this. Mastered or masterless. Let’s take a look at masterless first.
  • #43: This will make sure that we have an instance, it will install puppet, those modules, and then apply those classes. If that is all that we wanted to do, then we would be done. However life isn’t often that simple and we need some more central control, or there is information that we can’t put on every instance (for security purposes).
  • #44: Lets take a different path this time. Instead of going straight for software on the instance, let’s setup a management infrastructure. The GCE module makes this pretty easy since it has some scripts built into it to install puppet agents and puppet master (open source as well as PE).
  • #45: The GCE module makes this pretty easy since it has some scripts built into it to install puppet agents and puppet master (open source as well as PE).
  • #46: Once you have your puppet master infrastructure all set up, you can now start controlling those GCE instances by deploying manifests to your master and using the PE classifier to classify your nodes (instances).
  • #47: 1890s that is. Look, this software is written in portland. They really are living the dream of the 90s. What’s the situation? Well, say you are like a lot of organizations and you have part of your infrastructure out in the cloud and part of it in datacenters you control. So how do you handle this?
  • #48: This will make sure that we have an instance, it will install puppet, those modules, and then apply those classes. If that is all that we wanted to do, then we would be done. However life isn’t often that simple and we need some more central control, or there is information that we can’t put on every instance (for security purposes).
  • #49: This will make sure that we have an instance, it will install puppet, those modules, and then apply those classes. If that is all that we wanted to do, then we would be done. However life isn’t often that simple and we need some more central control, or there is information that we can’t put on every instance (for security purposes).
  • #50: This will make sure that we have an instance, it will install puppet, those modules, and then apply those classes. If that is all that we wanted to do, then we would be done. However life isn’t often that simple and we need some more central control, or there is information that we can’t put on every instance (for security purposes).
  • #51: This is cribbed from the gce_compute module. It has this built in, but you can built out your own based on how this works. The basic idea is that there is a source of truth that you can trust. By passing through some known information the master can now know that it is communicating with one of your real instances and can automatically let it into the system!
  • #52: This is cribbed from the gce_compute module. It has this built in, but you can built out your own based on how this works. The basic idea is that there is a source of truth that you can trust. By passing through some known information the master can now know that it is communicating with one of your real instances and can automatically let it into the system! Custom attributes are only part of the certificate request. Extension requests will be preserved as part of the signed certificate.
  • #53: This is cribbed from the gce_compute module. It has this built in, but you can built out your own based on how this works. The basic idea is that there is a source of truth that you can trust. By passing through some known information the master can now know that it is communicating with one of your real instances and can automatically let it into the system!
  • #54: Why did Herman start making his machines? Because he needed to keep up with the change in his country. Automation got him there.
  • #55: People didn’t like that there were only 63 million people. They wanted it to be 65 million. The New York Herald: SLIPSHOD WORK HAS SPOILED THE CENSUS MISMANAGEMENT THE RULE The number was right. And his machines were used for the next 2 censuses and in various other countries around the world.
  • #56: Eventually his company started to merge with competitors.
  • #57: That company eventually became known as “Business International Machines”....no....”International Business Machines”
  • #58: … AND BECAME A HIPSTER!