Node Classifier Fundamentals - PuppetConf 2014

Post on 22-Jun-2015

552 views 0 download

Tags:

description

Node Classifier Fundamentals - Dan Lidral-Porter, Puppet Labs

transcript

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