Marionette Collective
    Introduction and Concepts




                        R.I.Pienaar / @ripienaar / rip@devco.net
Orchestration
 Framework


          R.I.Pienaar / @ripienaar / rip@devco.net
Complements
Configuration Management



               R.I.Pienaar / @ripienaar / rip@devco.net
Ad-Hoc and Interactive
      Actions



               R.I.Pienaar / @ripienaar / rip@devco.net
Ad-Hoc and Interactive
      Actions

code: versioned, tested, reusable

                      R.I.Pienaar / @ripienaar / rip@devco.net
Reusable API
Web, CLI, Scripts, REST




                  R.I.Pienaar / @ripienaar / rip@devco.net
Framework for realtime
     automation



               R.I.Pienaar / @ripienaar / rip@devco.net
Marionette Collective



              R.I.Pienaar / @ripienaar / rip@devco.net
Ruby based framework



             R.I.Pienaar / @ripienaar / rip@devco.net
Flexible and Pluggable for
        local needs



                 R.I.Pienaar / @ripienaar / rip@devco.net
Parallel execution using
 RPC over Middleware



                R.I.Pienaar / @ripienaar / rip@devco.net
Puppet Aware
Resource Discovery



            R.I.Pienaar / @ripienaar / rip@devco.net
Registration and Reporting



                 R.I.Pienaar / @ripienaar / rip@devco.net
Authorisation,
Authentication and
    Auditing



             R.I.Pienaar / @ripienaar / rip@devco.net
DEMO



       R.I.Pienaar / @ripienaar / rip@devco.net
I, [04:36:02.436163]   Looking for machines to provision
I, [04:36:09.453712]   Looking for machines to provision
I, [04:36:13.449071]   Provisioning ip-10-226-226-8.eu-west-1.compute.internal / 10.226.226.8
I, [04:36:17.074982]   Picking mstr1.xx.com for puppetmaster based on country == ie
I, [04:36:17.075097]   Provisioning node against mstr1.xx.com
I, [04:36:17.075178]   Calling set_puppet_host with ip x.x.134.90
I, [04:36:17.155862]   Clean certificate ip-10-226-226-8.eu-west-1.compute.internal
I, [04:36:17.163558]   Calling request_certificate
I, [04:36:20.817457]   Signing certificate ip-10-226-226-8.eu-west-1.compute.internal
I, [04:36:21.645785]   Calling bootstrap_puppet
I, [04:36:25.628705]   Calling run_puppet
I, [04:36:38.796854]   Notifying xmpp://ripienaar@jabber.org of new node
I, [04:36:43.811434]   Looking for machines to provision
I, [04:36:50.831262]   Looking for machines to provision




                                                             R.I.Pienaar / @ripienaar / rip@devco.net
Feature: Update the production systems
 
  Background:
     Given the load balancer has ip address 192.168.1.1
     And I want to update hosts with class roles::dev_server
     And I want to update hosts with fact country=de
     And I want to pre-discover how many hosts to update
 
  Scenario: Update the website
     When I block the load balancer
     Then traffic from the load balancer should be blocked
 
     When I update the package mywebapp
     Then the package version for mywebapp should be 4.2.6-3.el5
 
     When I unblock the load balancer
     Then traffic from the load balancer should be unblocked


                                                     R.I.Pienaar / @ripienaar / rip@devco.net
Feature: Monitor the capacity of the Puppet Master

  Background:
    Given we know we can run 10 concurrent Puppet clients
    And the Puppet Master load average should be below 2

  Scenario: Monitor the Puppet Master capacity
    When there are more than usual Puppet clients running
    Then the Puppet Master should have an acceptable load average




                                          R.I.Pienaar / @ripienaar / rip@devco.net
Puppet Labs / MCollective



                R.I.Pienaar / @ripienaar / rip@devco.net
Questions?



        R.I.Pienaar / @ripienaar / rip@devco.net

R.I. Pienaar - Puppet Camp 2010

  • 1.
    Marionette Collective Introduction and Concepts R.I.Pienaar / @ripienaar / rip@devco.net
  • 2.
    Orchestration Framework R.I.Pienaar / @ripienaar / rip@devco.net
  • 3.
    Complements Configuration Management R.I.Pienaar / @ripienaar / rip@devco.net
  • 4.
    Ad-Hoc and Interactive Actions R.I.Pienaar / @ripienaar / rip@devco.net
  • 5.
    Ad-Hoc and Interactive Actions code: versioned, tested, reusable R.I.Pienaar / @ripienaar / rip@devco.net
  • 6.
    Reusable API Web, CLI,Scripts, REST R.I.Pienaar / @ripienaar / rip@devco.net
  • 7.
    Framework for realtime automation R.I.Pienaar / @ripienaar / rip@devco.net
  • 8.
    Marionette Collective R.I.Pienaar / @ripienaar / rip@devco.net
  • 9.
    Ruby based framework R.I.Pienaar / @ripienaar / rip@devco.net
  • 10.
    Flexible and Pluggablefor local needs R.I.Pienaar / @ripienaar / rip@devco.net
  • 11.
    Parallel execution using RPC over Middleware R.I.Pienaar / @ripienaar / rip@devco.net
  • 12.
    Puppet Aware Resource Discovery R.I.Pienaar / @ripienaar / rip@devco.net
  • 13.
    Registration and Reporting R.I.Pienaar / @ripienaar / rip@devco.net
  • 14.
    Authorisation, Authentication and Auditing R.I.Pienaar / @ripienaar / rip@devco.net
  • 15.
    DEMO R.I.Pienaar / @ripienaar / rip@devco.net
  • 16.
    I, [04:36:02.436163] Looking for machines to provision I, [04:36:09.453712] Looking for machines to provision I, [04:36:13.449071] Provisioning ip-10-226-226-8.eu-west-1.compute.internal / 10.226.226.8 I, [04:36:17.074982] Picking mstr1.xx.com for puppetmaster based on country == ie I, [04:36:17.075097] Provisioning node against mstr1.xx.com I, [04:36:17.075178] Calling set_puppet_host with ip x.x.134.90 I, [04:36:17.155862] Clean certificate ip-10-226-226-8.eu-west-1.compute.internal I, [04:36:17.163558] Calling request_certificate I, [04:36:20.817457] Signing certificate ip-10-226-226-8.eu-west-1.compute.internal I, [04:36:21.645785] Calling bootstrap_puppet I, [04:36:25.628705] Calling run_puppet I, [04:36:38.796854] Notifying xmpp://ripienaar@jabber.org of new node I, [04:36:43.811434] Looking for machines to provision I, [04:36:50.831262] Looking for machines to provision R.I.Pienaar / @ripienaar / rip@devco.net
  • 17.
    Feature: Update theproduction systems   Background: Given the load balancer has ip address 192.168.1.1 And I want to update hosts with class roles::dev_server And I want to update hosts with fact country=de And I want to pre-discover how many hosts to update   Scenario: Update the website When I block the load balancer Then traffic from the load balancer should be blocked   When I update the package mywebapp Then the package version for mywebapp should be 4.2.6-3.el5   When I unblock the load balancer Then traffic from the load balancer should be unblocked R.I.Pienaar / @ripienaar / rip@devco.net
  • 18.
    Feature: Monitor thecapacity of the Puppet Master Background: Given we know we can run 10 concurrent Puppet clients And the Puppet Master load average should be below 2 Scenario: Monitor the Puppet Master capacity When there are more than usual Puppet clients running Then the Puppet Master should have an acceptable load average R.I.Pienaar / @ripienaar / rip@devco.net
  • 19.
    Puppet Labs /MCollective R.I.Pienaar / @ripienaar / rip@devco.net
  • 20.
    Questions? R.I.Pienaar / @ripienaar / rip@devco.net