SlideShare une entreprise Scribd logo
1  sur  96
Télécharger pour lire hors ligne
Friday, August 23, 13
Data

Driven
Infrastructure

Friday, August 23, 13
Friday, August 23, 13
?

Friday, August 23, 13
?

http://git.io/UmUdKA
Friday, August 23, 13
Let me
Tell you
a story
Friday, August 23, 13
What is a

Cloud

Friday, August 23, 13
With the Cloud...

I don’t have to think about IT
Friday, August 23, 13
Friday, August 23, 13
Software
Platform
Infrastructure
Friday, August 23, 13

aaS
Friday, August 23, 13
Friday, August 23, 13
Where is
our cloud?

Friday, August 23, 13
Friday, August 23, 13
Utopia
Friday, August 23, 13
James Fryman

Friday, August 23, 13
Friday, August 23, 13
Auto
matio
ns
Junk
ie

Friday, August 23, 13
Are you

Crazy?
Friday, August 23, 13
What
Data? Goals?
Friday, August 23, 13
What
Data? Goals?
Friday, August 23, 13
What
Data? Goals?
Friday, August 23, 13
ne
hi
ac
M
le
ab
rs
Pa

Friday, August 23, 13
There is

Friday, August 23, 13

One System
gPanel

PuppetDB

Provisioning

Configuring

Destroying

Feedback
Friday, August 23, 13
Parts
of the
System
Friday, August 23, 13
provisioner
Friday, August 23, 13
Home
Grown
Friday, August 23, 13
Home Grown

Friday, August 23, 13
controller
Friday, August 23, 13
Lots O’ Models

Friday, August 23, 13
file { '/etc/facter/facts.d/quagga_manage_service':
ensure => present,
replace => false,
}
 
if $::quagga_manage_service {
$service_state[ensure] = running
$service_state[enable] = true
} else {
$service_state[ensure] = undef
$service_state[enable] = undef
}
 
service { 'quagga':
ensure => $service_state[ensure],
enable => $service_state[enable],
}
Friday, August 23, 13
orchestrator
Friday, August 23, 13
Chat
Ops
Friday, August 23, 13
Chat
Ops
Friday, August 23, 13
Feedback
of the
System
Friday, August 23, 13
&

Metrics
Monitoring
Friday, August 23, 13
begin
JSON.parse(RestClient.get(url)).each do |cache|
data["#{cache['target']}"] = 0
count = 0
cache["datapoints"].each do |point|
unless (point[0].nil?)
data["#{cache['target']}"] += point[0]
count += 1
end
end
data["#{cache['target']}"] /= count
data["total"] += data["#{cache['target']}"]
end
rescue ZeroDivisionError => e
puts "UNKNOWN metric not in graphite!"
exit EXIT_UNKNOWN
rescue => e
puts e.message
exit EXIT_CRITICAL
end

Friday, August 23, 13
begin
JSON.parse(RestClient.get(url)).each do |cache|
data["#{cache['target']}"] = 0
count = 0
cache["datapoints"].each do |point|
unless (point[0].nil?)
data["#{cache['target']}"] += point[0]
count += 1
end
end
data["#{cache['target']}"] /= count
data["total"] += data["#{cache['target']}"]
end
rescue ZeroDivisionError => e
puts "UNKNOWN metric not in graphite!"
exit EXIT_UNKNOWN
rescue => e
puts e.message
exit EXIT_CRITICAL
end

Friday, August 23, 13
event
Friday, August 23, 13
event
log

Friday, August 23, 13
event
log

Friday, August 23, 13

alert
event
log

Friday, August 23, 13

alert

error
Must self-correct

Friday, August 23, 13
gPanel

PuppetDB

Provisioning

Configuring

Destroying

Feedback
Friday, August 23, 13
Friday, August 23, 13
Deployable
using text files

Friday, August 23, 13
larity
odu
M

Friday, August 23, 13
haproxy::proxy
proxy
=>
mode
=>
ip
=>
port
=>
config
=>
balance =>
},
}

Friday, August 23, 13

{ $es_proxy_name:
'listen',
'http',
$::ipaddress_lo,
'9200',
{
'roundrobin',
haproxy::proxy
proxy
=>
mode
=>
ip
=>
port
=>
config
=>
balance =>
},
}

Friday, August 23, 13

{ $es_proxy_name:
'listen',
'http',
$::ipaddress_lo,
'9200',
{
'roundrobin',
haproxy::proxy::member { $es_proxy_name:
hostname => $::ec2_local_ipv4,
port
=> '9200',
param
=> [
'weight 1',
'maxconn 1000',
'check',
],
}

Friday, August 23, 13
collectd::plugin { [
'cpu',
'load',
'memory',
'swap',
'irq',
'exec',
'entropy',
]:
}
 

Friday, August 23, 13

collectd::plugin { [
'df',
'interface',
'protocols',
'disk',
]:
config => true
}
Level 4:
Templates

Friday, August 23, 13

Level 5:
Data Driven
Self
Authoritative

Friday, August 23, 13
def self.collect_resources(resource)
query = [
"and",
["=", "type", "File"],
["=", "exported", true],
["=", "tag", "nagios::object::#{resource}"],
["=", ["node", "active"], true]
]
self.search('/v2/resources', query.to_json)
end

Friday, August 23, 13
def self.collect_resources(resource)
query = [
"and",
["=", "type", "File"],
["=", "exported", true],
["=", "tag", "nagios::object::#{resource}"],
["=", ["node", "active"], true]
]
self.search('/v2/resources', query.to_json)
end

Friday, August 23, 13
# Seed the initial file with false, and enable
# on next run with gh-nagios enable_pager <hostname>
file { '/etc/facter/facts.d/enable_pager.txt':
ensure => file,
owner
=> 'root',
group
=> 'root',
mode
=> '0644',
content => 'enable_pager=false',
replace => false,
}

Friday, August 23, 13
}

@@file {
content
mode
group
notify

Friday, August 23, 13

"/etc/nagios/objects/${type}.d/${filename}.cfg":
=> template('nagios/etc/nagios/object.erb'),
=> '0444',
=> 'nagios',
=> Service['nagios'],
Tips

Friday, August 23, 13
ng
ri
to

ac
ef
R

Friday, August 23, 13
ng
ri
to

ac
ef
R

Friday, August 23, 13
least to most

specific
Friday, August 23, 13
frymanet.com

nginx

common

rails

ruby

mysql

admin

package repos
Friday, August 23, 13
graduate to

params
Friday, August 23, 13
class ntp::params {
  $defaults = {
package => {
version => ‘latest’,
},
config => {
servers => [‘pool.ntp.org’],
},
}
}
Friday, August 23, 13
externalize
Friday, August 23, 13
class ntp::params {
  $defaults = {
package => {
version =>
hiera(‘ntp_package_version’),
},
config => {
servers => hiera(‘ntp_servers’),
},
}
}

Friday, August 23, 13
Cloud
Forma

tion

Friday, August 23, 13
Cloud
Forma

tion

Friday, August 23, 13
"Resources": {
"RendererServerGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": "" },
"LaunchConfigurationName": { "Ref": "LaunchConfig" },
"MinSize": "2",
"MaxSize": "16",
"Tags": [
{ "Key": "Environment", "Value": "Production",
"PropagateAtLaunch": "true" },
{ "Key": "Role", "Value": "renderer",
"PropagateAtLaunch": "true" }
]
}
},
Friday, August 23, 13
ding
toloa
Au

Friday, August 23, 13
# autoloader.pp
class nagios::autoload_helpers {
$helpers = get_nagios_helpers()
case $::puppetversion {
/^3/: { include $helpers }
default: {
nagios::autoload_helpers::import_shim { $helpers: }

}
}
}

Friday, August 23, 13
# autoloader.pp
class nagios::autoload_helpers {
$helpers = get_nagios_helpers()
case $::puppetversion {
/^3/: { include $helpers }
default: {
nagios::autoload_helpers::import_shim { $helpers: }

}
}
}

Friday, August 23, 13
module Puppet::Parser::Functions
newfunction(:get_nagios_helpers,
:type => :rvalue,
:doc => "Grab all modules that have nagios helpers for
import") do
module_path = File.expand_path('..',
Puppet::Module.find('nagios',compiler.environment.to_s).path)
helpers = Dir["#{module_path}/**/nagios/helpers.pp"].map do |d|
"#{d.split('/')[-4]}::nagios::helpers"
done
helpers
end
end
Friday, August 23, 13
Modeling

Friday, August 23, 13
Be Dynamic
Friday, August 23, 13
Be Dynamic
Friday, August 23, 13
<%- if @comment -%>
### <%= @comment %>
<%- end -%>
<%= @type %> <% if @label %><%=
@label %><% end %> {
<%- @config.sort.reverse.each do |
key,value| -%>
<%- if value.class == Array -%>
<%- value.each do |element| %>
<%= key %>(<%= element %>);
<%- end -%>
<%- else -%>
<%= key %>(<%= value %>);
<%- end -%>
<%- end -%>
};
Friday, August 23, 13
ing
nc
e

F

Friday, August 23, 13

so
Re

es
rc
u
# Seed the initial file with false, and enable
# on next run with gh-nagios enable_pager <hostname>
file { '/etc/facter/facts.d/enable_pager.txt':
ensure => file,
owner
=> 'root',
group
=> 'root',
mode
=> '0644',
content => 'enable_pager=false',
replace => false,
}

Friday, August 23, 13
if $::enable_pager {
@@file { "/etc/nagios/objects/${type}.d/${filename}.cfg":
content => template('nagios/etc/nagios/object.erb'),
mode
=> '0444',
group
=> 'nagios',
notify => Service['nagios'],
}
}

Friday, August 23, 13
Buy it?

Friday, August 23, 13
Buy it?

Friday, August 23, 13
It’s About

Friday, August 23, 13
What’s
Missing?

Friday, August 23, 13
Language
Friday, August 23, 13
Predictive
Analysis
Friday, August 23, 13
g
in
m
o e
C
m
o
H

Friday, August 23, 13
What
Data? Goals?
Friday, August 23, 13
p
a
c

e
R

Systems

Thinking

Friday, August 23, 13
There is
ne
hi
ac
M
le
ab
rs
Pa

One System
Must be a

Self
Authoritative

Known
Quantity

Must self-correct
Friday, August 23, 13
Friday, August 23, 13
jfryman
fryman@github.com
Friday, August 23, 13
jfryman
fryman@github.com
Friday, August 23, 13
what’s next?

Friday, August 23, 13
what’s next?

Friday, August 23, 13

Contenu connexe

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

Plus de Puppet (20)

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
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James Pogran
 
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
 
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
 
Navigating the new normal with self healing infrastructure automation
Navigating the new normal with self healing infrastructure automationNavigating the new normal with self healing infrastructure automation
Navigating the new normal with self healing infrastructure automation
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 

Data Driven Infrastructure