60
Node Collaboration with PuppetDB Michael Richardson @m_richo

Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Embed Size (px)

Citation preview

Page 1: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Node

Collaboration with

PuppetDB

Michael Richardson @m_richo

Page 2: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Agenda

1. Who am i

2. The challenges we face

3. What is PuppetDB

4. How can PuppetDB help

5. Examples

Page 3: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

$ whoami

• Michael Richardson @m_richo

• engineer at Odecee

• Solaris/Linux Sys Admin

• currently battling Windows

• coffee consumer

• devops enthusiast

• puppet certified

Page 4: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

Page 5: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

Faster

provisioning

Page 6: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

Faster

provisioning

Page 7: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

more environments

Faster

provisioning

Page 8: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

more environments

Faster

provisioning

Page 9: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

more environments

Faster

provisioning

Page 10: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

micro-services

more environments

Faster

provisioning

Page 11: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The Challenge

micro-services

more environments

Faster

provisioning

Page 12: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Tools like Puppet have

become essential

Page 13: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

The need for

automated, repeatable, versioned

provisioning and configuration

management of infrastructure and

services

Page 14: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

We need

automated, repeatable, versioned

learning, reactive and adaptive

provisioning and configuration

management of infrastructure and

services

Let’s raise the bar

Page 15: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

This is where

PuppetDB

and tools can help

Page 16: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

So what is PuppetDB?

Page 17: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

So what is PuppetDB?

1. PuppetLabs product.

2. Storage service for Puppet produced

data.

3. Written in Clojure.

4. Persists data to a Postgres DB

5. Supports Puppet Enterprise and Puppet

Open Source environments.

Page 18: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB

PuppetDBPuppetMaster

agent agent agent agent

Postgres

Page 19: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB

PuppetDBPuppetMaster

agent agent agent agent

Postgres

Page 20: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB

PuppetDBPuppetMaster

agent agent agent agent

Postgres

PuppetDBPuppetMaster

Load balancer

Page 21: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

What data goes in PuppetDB

Page 22: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Node Facts

Page 23: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Node Facts

ipaddress network

FQDN

macaddress

operatingsystemrelease

osfamilysshrsakey kernel

Page 24: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Node Catalog’s

Page 25: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Node Catalog’s

Page 26: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

CMDB??So much useful data

Facts about every node

Catalog for every node

Page 27: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

How do we access it?

Page 28: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB has an API

Page 29: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB API

PuppetDB REST API has the following endpoints:

• Nodes

• Catalogs

• Facts

• Fact-names

• Resources

• Environments

• Metrics

• Reports

• Events

• And more

Page 30: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Query PuppetDB

Query all the nodes

Page 31: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Query PuppetDB

Query nodes and filter results

Page 32: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Query PuppetDB

Query all facts for a given node

Page 33: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Query PuppetDB

Query an individual fact for a given node

Page 34: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Sick of running curl?

Page 35: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Check out Puppet Explorer

thank you Erik Dalén and

Page 36: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Check out Puppetboard

thank you Daniele Sluijters

Page 37: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Dashboards are lovely.

But how can we use

this data to allow

node collaboration

Page 38: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Introducing

PuppetDBquery module

Again, thank you Erik Dalén

https://forge.puppetlabs.com/dalen/puppetdbquery

Page 39: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB query

Provides

1. CLI commands

2. PuppetDB Hiera backend

3. PuppetDB functions

Page 40: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB query

Provides

1. CLI commands

2. PuppetDB Hiera backend

3. PuppetDB functions

Page 41: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

PuppetDB query

Provides

1. CLI commands

2. PuppetDB Hiera backend

3. PuppetDB functions

o query_nodes

o query_facts

Page 42: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Puppet run

PuppetMaster

agent

facts

Puppet code

Hiera data

catalog

report

Page 43: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Puppet run with puppetdbquery

PuppetDB

PuppetMaster

agent

facts

Puppet code

Hiera data

catalog

report

Page 44: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

query_nodesAccepts 2 arguments 1. Query to filter nodes

2. Fact to return (optional)

Page 45: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

query_nodesAccepts 2 arguments 1. Query to filter nodes

2. Fact to return (optional)

Returns an array of results

webservers = [‘node2.local’, ‘node3.local’]

foo_db_ip = [‘10.10.40.12’]

Page 46: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

query_factsAccepts 2 arguments

1. Query to filter nodes

2. List of facts to return

Page 47: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

query_factsAccepts 2 arguments

1. Query to filter nodes

2. List of facts to return

Returns nested hash of resultswebserver_network = {"node2.local"=>{"macaddress”

=>"08:00:27:99:4B:CB", "ipaddress"=>"10.0.2.15"},

"node3.local"=>{"macaddress"=>"08:00:27:99:4B:CB",

"ipaddress"=>"10.0.2.15"}}

Page 48: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

What’s this give us?

Page 49: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

What’s this give us?

The ability to dynamically configure a system based on the state of other systems in

the infrastructure.

Page 50: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Examples

Page 51: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

populate files with query results

Page 52: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

populate files with query results

Page 53: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

populate files with query results

Page 54: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Examples – load balancer

Page 55: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Examples – whitelist addresses

Page 56: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Examples – search for service

Page 57: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Summary

• PuppetDB has a wealth of information

about your systems. Start using it!

• Populate dynamic configuration based on

PuppetDB data.

• Allow hosts and services to simply be

discovered by their peers.

Page 58: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Thank you.

#protip

Go buy this book now

By Alessandro Franceschi

It is EXCELLENT!

Page 59: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Thank you.

For folks from Sydney

Sydney Puppet User Group

http://www.meetup.com/Sydney-Puppet-User-Group/

Come along

Page 60: Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB

Thank you

Any Questions?

Michael Richardson @m_richo