Puppet: Orchestration framework?

46
Puppet: Orchestration Framework? Tuesday, February 26, 13

description

This presentation covers the architecture of Pup

Transcript of Puppet: Orchestration framework?

Page 1: Puppet: Orchestration framework?

Puppet:Orchestration Framework?

Tuesday, February 26, 13

Page 2: Puppet: Orchestration framework?

Dan Bodedan@puppetlabs

bodepd on <twitter,freenode>

Tuesday, February 26, 13

Page 3: Puppet: Orchestration framework?

Puppet

Tuesday, February 26, 13

Page 4: Puppet: Orchestration framework?

ensures consistency...

PuppetMaster

DB1 DB2 Tomcat1 Tomcat2

Tuesday, February 26, 13

Page 5: Puppet: Orchestration framework?

With Resources

Tuesday, February 26, 13

Page 6: Puppet: Orchestration framework?

Describe the configuration state of elements

user { ‘dan’: ensure => present, shell => ‘/bin/bash’, }

Tuesday, February 26, 13

Page 7: Puppet: Orchestration framework?

user { ‘dan’: # a user named dan ...

Tuesday, February 26, 13

Page 8: Puppet: Orchestration framework?

user { ‘dan’: # a user named dan ensure => present, # should exist ...

Tuesday, February 26, 13

Page 9: Puppet: Orchestration framework?

user { ‘dan’: # a user named dan ensure => present, # should exist shell => ‘/bin/bash’, # with this shell}

Tuesday, February 26, 13

Page 10: Puppet: Orchestration framework?

Properties

user { ‘dan’: ensure => present, # existence shell => ‘/bin/bash’, # shell}

Tuesday, February 26, 13

Page 11: Puppet: Orchestration framework?

ImplementingProperties

retrieve current state

converge to desired state

Tuesday, February 26, 13

Page 12: Puppet: Orchestration framework?

Puppet’sModel

Tuesday, February 26, 13

Page 13: Puppet: Orchestration framework?

desired state

current state

package { ‘git’: ensure => present}

dpkg-query --search git

rpm -q git

Tuesday, February 26, 13

Page 14: Puppet: Orchestration framework?

desired state

current state

==?

package { ‘git’: ensure => present}

dpkg-query --search git

rpm -q git

absent present

Idempotent

Tuesday, February 26, 13

Page 15: Puppet: Orchestration framework?

desired state

current state

==?

Sync Event

package { ‘git’: ensure => present}

dpkg-query --search git

rpm -q git

absent present

apt-get install git

yum install git

transition

absent -> present

Events

Tuesday, February 26, 13

Page 16: Puppet: Orchestration framework?

Noopdesired state

current state

==?

Event

package { ‘git’: ensure => present}

dpkg-query --search git

rpm -q git

absent present

potential transition

absent -> present

Tuesday, February 26, 13

Page 17: Puppet: Orchestration framework?

Puppet DSL andResources

Tuesday, February 26, 13

Page 18: Puppet: Orchestration framework?

Puppet DSL

Composes collections of resources.

Tuesday, February 26, 13

Page 19: Puppet: Orchestration framework?

Package/File/Service

class webserver { package { ‘apache2’: ... } file { ‘/etc/apache2/apache2.conf’: ... require => Package[‘apache2’], } service { ‘apache2’: ... subscribe => File[‘/etc/apache2/apache2.conf’] }}

Tuesday, February 26, 13

Page 20: Puppet: Orchestration framework?

configure a node

include webserver

Tuesday, February 26, 13

Page 21: Puppet: Orchestration framework?

Catalogs

Package

File

Service

(refresh)

Tuesday, February 26, 13

Page 22: Puppet: Orchestration framework?

Text is awesome

Tuesday, February 26, 13

Page 23: Puppet: Orchestration framework?

Integrates with version control

Easy to share/collaborate

Text is awesome

Tuesday, February 26, 13

Page 24: Puppet: Orchestration framework?

Application stacks

Tuesday, February 26, 13

Page 25: Puppet: Orchestration framework?

ensure consistency?

Puppet

IaaSEndpoint

Tuesday, February 26, 13

Page 26: Puppet: Orchestration framework?

With Resources?

Tuesday, February 26, 13

Page 27: Puppet: Orchestration framework?

Express stacks as:

* VM Instances

* Networks

* Firewalls

* Disks

GCE example

Tuesday, February 26, 13

Page 28: Puppet: Orchestration framework?

GCE as resources?

Tuesday, February 26, 13

Page 29: Puppet: Orchestration framework?

class app_stack {...

Tuesday, February 26, 13

Page 30: Puppet: Orchestration framework?

class app_stack { gce_network { ‘dansnetwork’: ensure => present, gateway => '10.0.1.1', range => '10.0.1.0/24’, } ->...

Tuesday, February 26, 13

Page 31: Puppet: Orchestration framework?

class app_stack { gce_network { ‘dansnetwork’: ensure => present, gateway => '10.0.1.1', range => '10.0.1.0/24’, } -> gce_firewall { ‘webhttp’: ensure => present, allowed => 'tcp:80’, network => ‘appnet’, } ->...

Tuesday, February 26, 13

Page 32: Puppet: Orchestration framework?

class app_stack { gce_network { ‘dansnetwork’: ensure => present, gateway => '10.0.1.1', range => '10.0.1.0/24’, } -> gce_firewall { ‘webhttp’: ensure => present, allowed => 'tcp:80’, network => ‘appnet’, } -> gce_instance { ‘server1’: ensure => present, network => ‘appnet’ }}

Tuesday, February 26, 13

Page 33: Puppet: Orchestration framework?

infrastructure only

exists to be consumed

Tuesday, February 26, 13

Page 34: Puppet: Orchestration framework?

Puppet assigns roles

Tuesday, February 26, 13

Page 35: Puppet: Orchestration framework?

gce_instance { ‘dansinstance’: ensure => present, … modules => [‘mysql’, ‘memcached’]}

Step 1: distribute content

Tuesday, February 26, 13

Page 36: Puppet: Orchestration framework?

forge.puppetlabs.com

I get all of my content from the

forge!

Tuesday, February 26, 13

Page 37: Puppet: Orchestration framework?

gce_instance { ‘dansinstance’: ensure => present, …

classes => { ‘mysql’ => {bind_address => 0.0.0.0} },

}

Step 2: classify

Tuesday, February 26, 13

Page 38: Puppet: Orchestration framework?

Awesomeness

Tuesday, February 26, 13

Page 39: Puppet: Orchestration framework?

ComposableStandard

ConfigurationLanguage

Tuesday, February 26, 13

Page 40: Puppet: Orchestration framework?

Idempotency

Tuesday, February 26, 13

Page 41: Puppet: Orchestration framework?

Noop

Tuesday, February 26, 13

Page 42: Puppet: Orchestration framework?

Limitations/unknowns

Tuesday, February 26, 13

Page 43: Puppet: Orchestration framework?

VLAN

VM1 VM2 VM2 VMN...

DB1 DB1

LB

Parallel processing of Catalogs

Tuesday, February 26, 13

Page 44: Puppet: Orchestration framework?

Proxy Nodes (credential

management)

Tuesday, February 26, 13

Page 45: Puppet: Orchestration framework?

Application Stacksare

Persistent

Tuesday, February 26, 13

Page 46: Puppet: Orchestration framework?

Master vs. Masterless?

Tuesday, February 26, 13