• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Puppet: Orchestration framework?
 

Puppet: Orchestration framework?

on

  • 790 views

This presentation covers the architecture of Pup

This presentation covers the architecture of Pup

Statistics

Views

Total Views
790
Views on SlideShare
790
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Puppet: Orchestration framework? Puppet: Orchestration framework? Presentation Transcript

    • Puppet: Orchestration Framework?Tuesday, February 26, 13
    • Dan Bode dan@puppetlabs bodepd on <twitter,freenode>Tuesday, February 26, 13
    • PuppetTuesday, February 26, 13
    • ensures consistency... Puppet Master DB1 DB2 Tomcat1 Tomcat2Tuesday, February 26, 13
    • With ResourcesTuesday, February 26, 13
    • Describe the configuration state of elements user { ‘dan’: ensure => present, shell => ‘/bin/bash’, }Tuesday, February 26, 13
    • user { ‘dan’: # a user named dan ...Tuesday, February 26, 13
    • user { ‘dan’: # a user named dan ensure => present, # should exist ...Tuesday, February 26, 13
    • user { ‘dan’: # a user named dan ensure => present, # should exist shell => ‘/bin/bash’, # with this shell }Tuesday, February 26, 13
    • Properties user { ‘dan’: ensure => present, # existence shell => ‘/bin/bash’, # shell }Tuesday, February 26, 13
    • Implementing Properties retrieve current state converge to desired stateTuesday, February 26, 13
    • Puppet’s ModelTuesday, February 26, 13
    • dpkg-query --search git current desired package { ‘git’: ensure => presentrpm -q git state state }Tuesday, February 26, 13
    • Idempotentdpkg-query --search git current desired package { ‘git’: ensure => presentrpm -q git state state } absent ==? presentTuesday, February 26, 13
    • Eventsdpkg-query --search git current desired package { ‘git’: ensure => presentrpm -q git state state } absent ==? present apt-get install git transition yum install git Sync Event absent -> presentTuesday, February 26, 13
    • Noopdpkg-query --search git current desired package { ‘git’: ensure => presentrpm -q git state state } absent ==? present potential transition Event absent -> presentTuesday, February 26, 13
    • Puppet DSL and ResourcesTuesday, February 26, 13
    • Puppet DSL Composes collections of resources.Tuesday, February 26, 13
    • 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
    • configure a node include webserverTuesday, February 26, 13
    • Catalogs Package File (refresh) ServiceTuesday, February 26, 13
    • Text is awesomeTuesday, February 26, 13
    • Text is awesome Integrates with version control Easy to share/collaborateTuesday, February 26, 13
    • Application stacksTuesday, February 26, 13
    • ensure consistency? Puppet IaaS EndpointTuesday, February 26, 13
    • With Resources?Tuesday, February 26, 13
    • GCE example Express stacks as: * VM Instances * Networks * Firewalls * DisksTuesday, February 26, 13
    • GCE as resources?Tuesday, February 26, 13
    • class app_stack { ...Tuesday, February 26, 13
    • class app_stack { gce_network { ‘dansnetwork’: ensure => present, gateway => 10.0.1.1, range => 10.0.1.0/24’, } -> ...Tuesday, February 26, 13
    • 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
    • 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
    • infrastructure only exists to be consumedTuesday, February 26, 13
    • Puppet assigns rolesTuesday, February 26, 13
    • Step 1: distribute content gce_instance { ‘dansinstance’: ensure => present, … modules => [‘mysql’, ‘memcached’] }Tuesday, February 26, 13
    • forge.puppetlabs.com I get all of my content from the forge!Tuesday, February 26, 13
    • Step 2: classify gce_instance { ‘dansinstance’: ensure => present, … classes => { ‘mysql’ => {bind_address => 0.0.0.0} }, }Tuesday, February 26, 13
    • AwesomenessTuesday, February 26, 13
    • Composable Standard Configuration LanguageTuesday, February 26, 13
    • IdempotencyTuesday, February 26, 13
    • NoopTuesday, February 26, 13
    • Limitations/ unknownsTuesday, February 26, 13
    • Parallel processing of Catalogs VLAN DB1 DB1 VM1 VM2 VM2 ... VMN LBTuesday, February 26, 13
    • Proxy Nodes (credential management)Tuesday, February 26, 13
    • Application Stacks are PersistentTuesday, February 26, 13
    • Master vs. Masterless?Tuesday, February 26, 13