SlideShare a Scribd company logo
1 of 47
Download to read offline
2014 
presented by 
Puppetizing 
Multi-Tier 
Architecture 
Reid Vandewiele 
Solutions Engineer | Puppet Labs
Monolithic Install Split Install
Monolithic Install Split Install
Agenda 
• Introduction 
Multi-Tier Challenges 
• How to Define 
• How to Classify 
• How to Deploy
Multi-Tier Challenges 
• How to Define 
• How to Classify 
• How to Deploy
Profiles
class 
puppet_enterprise 
( 
$interface, 
... 
) 
{ 
## 
REPRESENT 
THIS 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
}
Application Classes 
class 
pe 
( 
$puppetdb_port 
= 
8081, 
... 
) 
{ 
} 
class 
pe::puppet_master 
( 
$puppetdb_port 
= 
$pe::puppetdb_host, 
... 
) 
inherits 
pe 
{ 
... 
} 
class 
pe::puppetdb 
( 
$puppetdb_port 
= 
$pe::puppetdb_host, 
... 
) 
inherits 
pe 
{ 
... 
}
Application Class 
class 
pe 
( 
$puppet_master_host 
= 
undef, 
$puppet_master_port 
= 
undef, 
$puppet_console_host 
= 
undef, 
$puppet_console_port 
= 
undef, 
$puppetdb_database_host 
= 
undef, 
$puppetdb_database_port 
= 
undef, 
$puppetdb_database_name 
= 
undef, 
$puppetdb_database_username 
= 
undef, 
$puppetdb_database_password 
= 
undef, 
... 
) 
{ 
...
Application Component Profile 
class 
pe::puppet_master 
( 
$certificate_authority_host 
= 
$pe::certificate_authority_host, 
$certificate_authority_port 
= 
$pe::certificate_authority_port, 
$certificate_authority_proxy 
= 
true, 
$puppetdb_host 
= 
$pe::puppetdb_host, 
$puppetdb_port 
= 
$pe::puppetdb_port, 
$console_host 
= 
$pe::puppet_console_host, 
$console_port 
= 
$pe::puppet_console_port 
$reports 
= 
undef, 
$node_terminus 
= 
undef, 
) 
inherits 
pe 
{ 
...
Accomplished 
• Model the Application 
Not Yet Accomplished 
• Dynamism / Elasticity
?
Pool_member 
<<| 
filter 
|>> 
pool_member 
{ 
'master_1': 
} 
pool_member 
{ 
'master_2': 
} 
@@pool_member 
{ 
'master_1': 
} 
@@pool_member{ 
'master_2': 
} 
storeconfigs
storeconfigs 
class 
pe::load_balancer 
( 
... 
) 
inherits 
pe 
{ 
Pool_member 
<<| 
filter 
|>> 
... 
} 
class 
pe::puppet_master 
( 
... 
) 
inherits 
pe 
{ 
@@pool_member 
{ 
$::ipaddress: 
} 
... 
}
clientcert=www1 
app_pubkey= 
ensure keypair! 
clientcert=www1 
app_pubkey=abc123 
ensure keypair!
Multi-Tier Challenges 
• How to Define 
• How to Classify 
• How to Deploy
Set 
A 
collec+on 
of 
"things" 
(objects 
or 
numbers, 
etc). 
Each 
member 
is 
called 
an 
element 
of 
the 
set. 
There 
should 
be 
only 
one 
of 
each 
member 
(all 
members 
are 
unique).
Evaluation Order Matters 
• Works 
class 
{ 
'pe': 
instance_id 
=> 
'central'; 
} 
class 
{ 
'pe::puppet_master': 
} 
• Breaks 
class 
{ 
'pe::puppet_master': 
} 
class 
{ 
'pe': 
instance_id 
=> 
'central'; 
}
Hiera 
-­‐-­‐-­‐ 
:hierarchy: 
-­‐ 
"clientcert/%{clientcert}" 
-­‐ 
"app_instance/%{app_instance}" 
-­‐ 
"env_tier/%{env_tier}" 
-­‐ 
global 
:backends: 
-­‐ 
yaml 
:yaml: 
:datadir: 
"/etc/puppetlabs/puppet/environments/%{environment}/data"
Hiera 
All 
Managed 
Nodes 
env_tier=development 
env_tier=production 
appid=dev1 
appid=dev2 
appid=prod1 
appid=prod2
Application Class 
class 
pe 
( 
$puppet_master_host 
= 
undef, 
$puppet_master_port 
= 
undef, 
$puppet_console_host 
= 
undef, 
$puppet_console_port 
= 
undef, 
$puppetdb_database_host 
= 
undef, 
$puppetdb_database_port 
= 
undef, 
$puppetdb_database_name 
= 
undef, 
$puppetdb_database_username 
= 
undef, 
$puppetdb_database_password 
= 
undef, 
... 
) 
{ 
...
Application Class 
class 
pe 
( 
$puppet_master_host 
= 
$::puppet_master_host 
, 
$puppet_master_port 
= 
$::puppet_master_port 
, 
$puppet_console_host 
= 
$::puppet_console_host, 
$puppet_console_port 
= 
$::puppet_console_port 
, 
$puppetdb_database_host 
= 
$::puppetdb_database_host, 
$puppetdb_database_port 
= 
$::puppetdb_database_port, 
$puppetdb_database_name 
= 
$::puppetdb_database_name, 
$puppetdb_database_username 
= 
$::puppetdb_database_username, 
$puppetdb_database_password 
= 
$::puppetdb_database_password, 
... 
) 
{ 
...
Multi-Tier Challenges 
• How to Define 
• How to Classify 
• How to Deploy
1 2 Run Puppet! 
Run Puppet!
Run Puppet! 
Run Puppet! 
Run Puppet! 
Run Puppet! 
1 2 3 4
Puppetizing Multi-Tier Architecture 
Multi-Tier Challenges 
• How to Define 
• How to Classify 
• How to Deploy
Anchors 
class 
pe 
( 
... 
) 
{ 
# 
ANCHORS 
# 
When 
building 
a 
complex 
multi-­‐tier 
model, 
it 
is 
not 
known 
up 
front 
which 
# 
profiles 
will 
be 
deployed 
to 
a 
given 
node. 
However, 
some 
profiles 
when 
# 
deployed 
together 
have 
dependencies 
which 
must 
be 
expressed. 
For 
example, 
# 
the 
CA 
must 
be 
set 
up 
and 
configured 
before 
certificates 
can 
be 
requested. 
# 
Therefore 
the 
CA 
must 
be 
configured 
before 
any 
certificate-­‐requiring 
# 
service. 
Since 
the 
profiles 
cannot 
express 
those 
dependencies 
directly 
# 
against 
each 
other, 
since 
they 
may 
or 
may 
not 
exist 
in 
a 
given 
node's 
# 
catalog, 
we 
instead 
have 
them 
express 
dependencies 
against 
common 
anchors. 
anchor 
{ 
'barrier: 
pe 
certificate_authority': 
} 
-­‐> 
anchor 
{ 
'barrier: 
pe 
puppetdb_database': 
} 
-­‐> 
anchor 
{ 
'barrier: 
pe 
puppetdb': 
} 
-­‐> 
...
Puppetizing Multi-Tier Architecture 
• Model the app as a class 
– Most important consideration is the interface 
• Assign parameters to app, not just nodes 
– Complementary to the assignment of classes to nodes 
• Take central control of Puppet run schedule 
– Or else account for eventual consistency
Questions?

More Related Content

Similar to Puppetizing Multitier Architecture - PuppetConf 2014

modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet CampPuppet
 
Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013Simon McCartney
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoMatt Stine
 
PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodeSWIFTotter Solutions
 
Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetAchieve Internet
 
Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Puppet
 
From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011Carlos Sanchez
 
Refactor Dance - Puppet Labs 'Best Practices'
Refactor Dance - Puppet Labs 'Best Practices'Refactor Dance - Puppet Labs 'Best Practices'
Refactor Dance - Puppet Labs 'Best Practices'Gary Larizza
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011Carlos Sanchez
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOpsAgile Spain
 
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...Puppet
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Michelangelo van Dam
 
Julien Simon "Scaling ML from 0 to millions of users"
Julien Simon "Scaling ML from 0 to millions of users"Julien Simon "Scaling ML from 0 to millions of users"
Julien Simon "Scaling ML from 0 to millions of users"Fwdays
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffJAX London
 
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Michelangelo van Dam
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012Carlos Sanchez
 
DBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちDBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちRyo Miyake
 
Learning Puppet basic thing
Learning Puppet basic thing Learning Puppet basic thing
Learning Puppet basic thing DaeHyung Lee
 

Similar to Puppetizing Multitier Architecture - PuppetConf 2014 (20)

modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
 
Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
CakePHP
CakePHPCakePHP
CakePHP
 
PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better Code
 
Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and Puppet
 
Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011
 
From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011
 
Refactor Dance - Puppet Labs 'Best Practices'
Refactor Dance - Puppet Labs 'Best Practices'Refactor Dance - Puppet Labs 'Best Practices'
Refactor Dance - Puppet Labs 'Best Practices'
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOps
 
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
Doing the Refactor Dance - Making Your Puppet Modules More Modular - PuppetCo...
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
 
Julien Simon "Scaling ML from 0 to millions of users"
Julien Simon "Scaling ML from 0 to millions of users"Julien Simon "Scaling ML from 0 to millions of users"
Julien Simon "Scaling ML from 0 to millions of users"
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
 
DBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちDBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たち
 
Learning Puppet basic thing
Learning Puppet basic thing Learning Puppet basic thing
Learning Puppet basic thing
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

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 DevelopmentsTrustArc
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
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...Enterprise Knowledge
 
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...Martijn de Jong
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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.pptxMalak Abu Hammad
 
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 interpreternaman860154
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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 AutomationSafe Software
 
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.pdfEnterprise Knowledge
 

Recently uploaded (20)

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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
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...
 
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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - 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
 
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
 

Puppetizing Multitier Architecture - PuppetConf 2014

  • 1. 2014 presented by Puppetizing Multi-Tier Architecture Reid Vandewiele Solutions Engineer | Puppet Labs
  • 2.
  • 3.
  • 6.
  • 7.
  • 8. Agenda • Introduction Multi-Tier Challenges • How to Define • How to Classify • How to Deploy
  • 9. Multi-Tier Challenges • How to Define • How to Classify • How to Deploy
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. class puppet_enterprise ( $interface, ... ) { ## REPRESENT THIS # # # # # # # # # # }
  • 22.
  • 23.
  • 24. Application Classes class pe ( $puppetdb_port = 8081, ... ) { } class pe::puppet_master ( $puppetdb_port = $pe::puppetdb_host, ... ) inherits pe { ... } class pe::puppetdb ( $puppetdb_port = $pe::puppetdb_host, ... ) inherits pe { ... }
  • 25. Application Class class pe ( $puppet_master_host = undef, $puppet_master_port = undef, $puppet_console_host = undef, $puppet_console_port = undef, $puppetdb_database_host = undef, $puppetdb_database_port = undef, $puppetdb_database_name = undef, $puppetdb_database_username = undef, $puppetdb_database_password = undef, ... ) { ...
  • 26. Application Component Profile class pe::puppet_master ( $certificate_authority_host = $pe::certificate_authority_host, $certificate_authority_port = $pe::certificate_authority_port, $certificate_authority_proxy = true, $puppetdb_host = $pe::puppetdb_host, $puppetdb_port = $pe::puppetdb_port, $console_host = $pe::puppet_console_host, $console_port = $pe::puppet_console_port $reports = undef, $node_terminus = undef, ) inherits pe { ...
  • 27. Accomplished • Model the Application Not Yet Accomplished • Dynamism / Elasticity
  • 28. ?
  • 29. Pool_member <<| filter |>> pool_member { 'master_1': } pool_member { 'master_2': } @@pool_member { 'master_1': } @@pool_member{ 'master_2': } storeconfigs
  • 30. storeconfigs class pe::load_balancer ( ... ) inherits pe { Pool_member <<| filter |>> ... } class pe::puppet_master ( ... ) inherits pe { @@pool_member { $::ipaddress: } ... }
  • 31.
  • 32. clientcert=www1 app_pubkey= ensure keypair! clientcert=www1 app_pubkey=abc123 ensure keypair!
  • 33. Multi-Tier Challenges • How to Define • How to Classify • How to Deploy
  • 34. Set A collec+on of "things" (objects or numbers, etc). Each member is called an element of the set. There should be only one of each member (all members are unique).
  • 35. Evaluation Order Matters • Works class { 'pe': instance_id => 'central'; } class { 'pe::puppet_master': } • Breaks class { 'pe::puppet_master': } class { 'pe': instance_id => 'central'; }
  • 36. Hiera -­‐-­‐-­‐ :hierarchy: -­‐ "clientcert/%{clientcert}" -­‐ "app_instance/%{app_instance}" -­‐ "env_tier/%{env_tier}" -­‐ global :backends: -­‐ yaml :yaml: :datadir: "/etc/puppetlabs/puppet/environments/%{environment}/data"
  • 37. Hiera All Managed Nodes env_tier=development env_tier=production appid=dev1 appid=dev2 appid=prod1 appid=prod2
  • 38. Application Class class pe ( $puppet_master_host = undef, $puppet_master_port = undef, $puppet_console_host = undef, $puppet_console_port = undef, $puppetdb_database_host = undef, $puppetdb_database_port = undef, $puppetdb_database_name = undef, $puppetdb_database_username = undef, $puppetdb_database_password = undef, ... ) { ...
  • 39. Application Class class pe ( $puppet_master_host = $::puppet_master_host , $puppet_master_port = $::puppet_master_port , $puppet_console_host = $::puppet_console_host, $puppet_console_port = $::puppet_console_port , $puppetdb_database_host = $::puppetdb_database_host, $puppetdb_database_port = $::puppetdb_database_port, $puppetdb_database_name = $::puppetdb_database_name, $puppetdb_database_username = $::puppetdb_database_username, $puppetdb_database_password = $::puppetdb_database_password, ... ) { ...
  • 40. Multi-Tier Challenges • How to Define • How to Classify • How to Deploy
  • 41.
  • 42. 1 2 Run Puppet! Run Puppet!
  • 43. Run Puppet! Run Puppet! Run Puppet! Run Puppet! 1 2 3 4
  • 44. Puppetizing Multi-Tier Architecture Multi-Tier Challenges • How to Define • How to Classify • How to Deploy
  • 45. Anchors class pe ( ... ) { # ANCHORS # When building a complex multi-­‐tier model, it is not known up front which # profiles will be deployed to a given node. However, some profiles when # deployed together have dependencies which must be expressed. For example, # the CA must be set up and configured before certificates can be requested. # Therefore the CA must be configured before any certificate-­‐requiring # service. Since the profiles cannot express those dependencies directly # against each other, since they may or may not exist in a given node's # catalog, we instead have them express dependencies against common anchors. anchor { 'barrier: pe certificate_authority': } -­‐> anchor { 'barrier: pe puppetdb_database': } -­‐> anchor { 'barrier: pe puppetdb': } -­‐> ...
  • 46. Puppetizing Multi-Tier Architecture • Model the app as a class – Most important consideration is the interface • Assign parameters to app, not just nodes – Complementary to the assignment of classes to nodes • Take central control of Puppet run schedule – Or else account for eventual consistency