Upload
puppet-labs
View
552
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Node Classifier Fundamentals - Dan Lidral-Porter, Puppet Labs
Citation preview
Presented by
Introducing theNode Classifier
Dan Lidral-PorterSoftware Engineer | Puppet Labs@aperiodic
Node Manager
Presented by
Webservers
The Node Hierarchy
Debian Boxes
Default
Monitoring
Presented by
Classification FieldsInherited FieldsValidated Fields
{id: “8fced701-3e3b-44c…”, name: “Spaceships”, parent: “00000000-0000…”, rule: [“=”, [“fact”,…] …], environment: “space”, variables: { “fleet”: “Starfleet” }, classes: { “warp-core”: {
“maximum-warp”: 9.7 } }}
environment: “space”, variables: { “fleet”: “Starfleet” }, classes: { “warp-core”: {
“maximum-warp”: 9.7 }
rule: [“=”, [“fact”,…] …],
variables: { “fleet”: “Starfleet” }, classes: { “warp-core”: {
“maximum-warp”: 9.7 } }
environment: “space”,
classes: { “warp-core”: {
“maximum-warp”: 9.7 } }
Node Groups
Presented by
“pressure-hull”: {}
classes: { “warp-drive”: {}, }
“pressure-hull”: {}
classes: { }
“pressure-hull”: {}
Spaceships
SpaceDwellings
Group Inheritance - Classes
Presented by
classes: { “pressure-hull”: { “decks”: 40,
}}
“pressure-hull”: { “layers”: 3 }
“pressure-hull”: { “layers”: 3 }
classes: {
}
“pressure-hull”: { “layers”: 3 }
Spaceships
SpaceDwellings
Group Inheritance - Classes
Presented by
“pressure-hull”: { “layers”: 3 }
classes: { “pressure-hull”: { “decks”: 40, “layers”: 3 }}
“pressure-hull”: { “layers”: 3 }
classes: {
“pressure-hull”: { “decks”: 10,
}}
StealthSpaceships
Spaceships
Group Inheritance - Classes
Presented by
variables: { “livery”: “United Earth”, }
“fleet”: “Starfleet”
variables: { “livery”: “United Federation of Planets”, “fleet”: “Starfleet”}
“fleet”: “Starfleet”
United Earth Spaceships
StarfleetSpaceships
Group Inheritance - Variables
Presented by
[“and” [“=” [“fact” “hull”] “pressurized”]
rule: [“=” [“fact” “engine”] “warp drive”]
rule: [“=” [“fact” “hull”] “pressurized”]
Warp Spaceships
Spaceships
Group Inheritance - Rules
Presented by
Warp Spaceships
Spaceships
Group Inheritance - Nodes
Default
⊃ ⊃
Presented by
WebserversDebian Boxes
Default
Monitoring
Presented by
Presented by
Node Check-In Time
Presented by
Composition Steps
●
●
●
●● Compose
● Find Leaves
if no conflicts!
● Match by Rules
● Inherit
Presented by
classes: { “pressure-hull”: { “layers”: 3, “decks”: 10 }}
classes: { “pressure-hull”: { “layers”: 3, “decks”: 40 }}
StealthSpaceshipsSpaceships
Composition Conflicts
Presented by
TomcatServers
Blue AppTomcatServers
Red App Tomcat Servers
classes: { tomcat: { threads: 4 }}
classes: { tomcat: { threads: 2 }}
threads: 4
threads: 2
Presented by
TomcatServers
Blue AppTomcatServers
Red App Tomcat Servers
classes: { tomcat: { threads: 4 }}
classes: { tomcat: { threads: 2 }}
Red App Tomcat Testing Servers
classes: { tomcat: { threads: 2 }}
threads: 2
threads: 2
Presented by
TomcatServers
Blue AppProduction
Default
Red App Production
env: “production”,env_trumps: true
Red AppStaging
Blue AppStaging
env: “production”,env_trumps: true
TomcatServers
env: “staging”,env_trumps: true
env: “staging”,env_trumps: true
Presented by
/v1/classified/nodes/:name/explanation
● matches
● leaves
● inherited
● merged or
● conflicts
{
}
Presented by
Keep Functionality Separate
Presented by
Role-BasedAccess Control
Presented by
Presented by
Permissions● View
● Edit Classification
● Set Environment
● Edit Child Rules
● Create, Delete, & Edit Children
Presented by
Invisible
Visible
Hidden Valuesclasses: { postgres: { password: “secret” }}
classes: { postgres: { password: “redacted” }}
Presented by
{id: “8fced701-3e3b-44c…”, name: “Spaceships”, parent: “00000000-0000…”, rule: [“=”, [“fact”,…] …], environment: “space”, variables: { “fleet”: “Starfleet” }, classes: { “warp-core”: {
“maximum-warp”: 9.7 } }}
Change Functionality● View
● Edit Classification
{ name: “Spaceships”,
variables: { “fleet”: “Starfleet” }, classes: { “warp-core”: {
“maximum-warp”: 9.7 } }}
parent: “00000000-0000…”, rule: [“=”, [“fact”,…] …], environment: “space”,
Presented by
Prescribed Subtree
View, Edit Classification,and Edit Child Rules
Sweet AppWebservers
Sweet AppStaging
Webservers
Sweet AppProduction
Webservers
Presented by
Freeform Subtree
View, Edit Classification, and Create Delete & Edit
Children
Sweet AppWebservers
Presented by