SlideShare a Scribd company logo
1 of 68
Download to read offline
Puppet
                       Automated System Conļ¬guration Management




                              Martin Alfke <martin.alfke@buero20.org>



                                                 1
Wednesday, December 8, 2010
Agenda
                   ā€¢ Part I - Puppet Basics
                        ā€¢     General + Communication
                        ā€¢     Manifests, Modules, Templates + Functions

                   ā€¢ Part II - Puppet Workshop
                   ā€¢ Part III - Working with Puppet
                        ā€¢     GIT/SVN for Puppet
                        ā€¢     Production / Test / Development
                        ā€¢     Monitoring




                                                         2
Wednesday, December 8, 2010
General
                 ā€¢      ā€œPut simply, Puppet is a system for automating
                        system administration tasksā€

                 ā€¢      Puppet...

                       ā€¢      is a declarative language for expressing system
                              conļ¬guration

                       ā€¢      is a client-server distribution

                 ā€¢      Requirements:

                       ā€¢      Ruby > 1.8.1 < 1.9

                       ā€¢      Facter


                                                    3
Wednesday, December 8, 2010
Communication
                     ā€¢        Security

                          ā€¢     SSL certiļ¬cate based authentication

                          ā€¢     manual signing of certiļ¬cate requests

                     ā€¢        Layers:

                          ā€¢     Conļ¬guration Language

                          ā€¢     Transaction layer

                          ā€¢     Resource Abstraction Layer




                                                    4
Wednesday, December 8, 2010
Supported Platforms
                        ā€¢     Linux

                              ā€¢   Debian / Ubuntu / Fedora / CentOS / RHEL /
                                  OEL / Mandriva / SuSE / Gentoo

                        ā€¢     BSD

                              ā€¢   FreeBSD / OpenBSD

                        ā€¢     Other Unix

                              ā€¢   OS X / Solaris / HP-UX

                        ā€¢     Windows - coming in 2010



                                                    5
Wednesday, December 8, 2010
Functional Overview
           ā€¢      Clients connect to
                  Puppet Master
           ā€¢      Puppet Master send
                  clients description of
                  tasks
           ā€¢      Puppet Master stores
                  Clients reports
           ā€¢      Reports can be imported
                  into dashboard database
           ā€¢      Dashboard web interface
                  to reports



                                            6
Wednesday, December 8, 2010
Facter
               /usr/bin/facter
               architecture => amd64
               domain => buero20.local
               facterversion => 1.5.7
               fqdn => puppet.buero20.local
               ...
               interfaces => eth0,eth1
               ipaddress => 10.0.2.15
               ...
               operatingsystem => Debian
               processorcount => 1


                                         7
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 1-6

        ā€¢       manifests/site.pp

            ā€¢      Global ļ¬le with node deļ¬nitions

        ā€¢       modules/<name>/manifests/init.pp

            ā€¢      Module initialization


        ā€¢       Use lower case for names (modules, templates, functions,
                deļ¬nes, exec, resources,...)



                                           8
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 2-6

               ā€¢      Resources

                   ā€¢      user - create or remove users

                   ā€¢      group - create or remove groups

                   ā€¢      package install or remove distribution packages

                   ā€¢      ļ¬le - create directories, symlinks, copy ļ¬les

                   ā€¢      cron - add cron jobs

                   ā€¢      service - run or stop services like daemons



                                                 9
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 3-6


               ā€¢      Classes

                   ā€¢      aggregate resources for easier use

                   ā€¢      subclasses (=nested classes) for modularity

                   ā€¢      parameterised classes for more ļ¬‚exible handling

                   ā€¢      classes support inheritance




                                                10
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 4-6


               ā€¢      Deļ¬nitions

                   ā€¢      reusable objects

               ā€¢      Modules

                   ā€¢      combine collections of resources, classes and
                          deļ¬nitions




                                                11
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 5-6

                   ā€¢      Chaining resources

                        ā€¢     make sure that a service is restarted after
                              ļ¬lechange

                        ā€¢     make sure that conļ¬g ļ¬le is copied prior
                              starting a service

                        ā€¢     make sure that a package is installed prior
                              starting the service




                                                  12
Wednesday, December 8, 2010
Puppet Conļ¬guration Language - 6-6



                   ā€¢      Nodes

                        ā€¢     connect modules and clases to systems

                        ā€¢     nodenames are short hostname, fqdn or
                              ā€œdefaultā€




                                                 13
Wednesday, December 8, 2010
Manifests


                      ā€¢       Deļ¬ne static resources
                               ļ¬le { ā€œ/etc/passwdā€:    ā€¢   Static resources have
                                  owner => root,           full path and name.
                                  group => root,
                                  mode => 644,
                               }




                                                  14
Wednesday, December 8, 2010
Manifests with facter Variables
                                                             ā€¢   Using facter
                                                                 variables inside
                     ļ¬le { ā€œsshconļ¬gā€:
                                                                 a deļ¬nition
                        name => $operatingsystem ? {
                            solaris => ā€œ/usr/local/etc/ssh/sshd_conļ¬gā€,
                            default => ā€œ/etc/ssh/sshd_conļ¬gā€,
                        },
                        owner       => root,
                        group       => root,
                        mode        => 644,
                     }


                                               15
Wednesday, December 8, 2010
Manifest with Sub-Classes
                   class mysql {
                     class client {
                        class packages {
                            package { "mysql-client": ensure => installed }
                        }
                     }
                     class server {
                        class packages {
                            package { "mysql-server": ensure => installed }
                            package { "mysql-common": ensure => installed }


                                            16
Wednesday, December 8, 2010
Manifests with Exec

     ļ¬le {"/etc/apt/keys/pgp_key.asc":
       owner => root, group => root, mode => 640,
       source => "puppet://$server/ļ¬les/etc/apt/keys/pgp_key.asc"
     }
     exec { "/usr/bin/apt-key add /etc/apt/keys/pgp_key.asc":
       unless => "/bin/sh -c '[ `/usr/bin/apt-key list | grep buildd | 
          wc -l` -eq 1 ]'"
     }



                                        17
Wednesday, December 8, 2010
Manifests with Subscription
   ļ¬le {"/etc/apt/keys/puppet.key":
     owner => root, group => root, mode => 640,
     source => "puppet:///ļ¬les/etc/apt/keys/puppet.key"
   }
   exec { subscribe-base-conļ¬g-puppet-key:
        command => "/usr/bin/apt-key add /etc/apt/keys/puppet.key; 
            /usr/bin/apt-get update",
        logoutput => false,
        refreshonly => true,
        subscribe => File["/etc/apt/keys/puppet.key"]
   }



                                           18
Wednesday, December 8, 2010
Modules - Directory structure

                   ā€¢      Directory structure - e.g. /etc/ssh/sshd_conļ¬g
                           module/sshd/
                               manifests/
                                 init.pp
                               ļ¬les/
                                 etc/                   ā€¢    Modules require strict
                                                             directories naming.
                                     ssh/
                                       sshd_conļ¬g




                                                 19
Wednesday, December 8, 2010
Modules - Initialization Manifest

                                   ā€¢   init.pp manifest will be integrated
                                       automatically when class name is
                                       equal to module name
     ā€¢      modules/manifests/sshd/init.pp
             class sshd {
                ļ¬le { ā€œ/etc/ssh/sshd_conļ¬gā€:
                   mode => 644,
                   source => ā€œpuppet:///modules/sshd/etc/ssh/sshd_conļ¬gā€,
                }
             }



                                            20
Wednesday, December 8, 2010
Templates - Directory Structure

                                         ā€¢   Templates require strict
                                             directory naming (like modules)


               ā€¢      Directory structure + content - e.g. Network settings
                       network/
                           manifests/
                             init.pp
                           templates/
                             network.erb



                                              21
Wednesday, December 8, 2010
Templates - Initialization Manifest
                                  ā€¢   Templates may use facter variables

        ā€¢       Manifests - init.pp
                    ļ¬le { ā€œ/etc/sysconļ¬g/networkā€:
                      content => template(ā€œtemplates/network.erbā€),
                    }
        ā€¢       Templatess - network.erb
                    NETWORKING=yes
                    HOSTNAME=<%= hostname %>
                    NOZEROCONF=yes



                                         22
Wednesday, December 8, 2010
Functions
  ā€¢      Directory structure e.g. read parameter
         from conļ¬guration ļ¬le using facter:
         lib/
                facter/
                   function.rb
  ā€¢      Content of library functions function.rb:
         require ā€˜facterā€™
            Facter.add(ā€œPUPPET_FUNCTIONā€) do
              %x{/bin/grep -E ā€œ^PUPPET_FUNCTION=ā€ /etc/
         puppet_function | sed -e ā€˜s/*.=//ā€™ } .chomp
            end
         end


                                    23
Wednesday, December 8, 2010
Agenda
                   ā€¢ Part I - Puppet Basics
                        ā€¢     General + Communication
                        ā€¢     Manifests, Modules, Templates + Functions

                   ā€¢ Part II - Puppet Workshop
                   ā€¢ Part III - Working with Puppet
                        ā€¢     GIT/SVN for Puppet
                        ā€¢     Production / Test / Development
                        ā€¢     Monitoring




                                                        24
Wednesday, December 8, 2010
Puppet Workshop
            ā€¢      Installation - Puppet master and client on puppet master only

            ā€¢      Initialization

            ā€¢      Installation - Puppet client on puppet client only

            ā€¢      Modules

                  ā€¢      User Management

                  ā€¢      Apache sites conļ¬guration

            ā€¢      Templating for /etc/hosts

            ā€¢      Setup Reporting and Dashboard



                                                25
Wednesday, December 8, 2010
Puppet Workshop - Installation - 1-5



               ā€¢check requirements:
                ā€¢ ruby --version
                ā€¢ ruby -rshadow -eā€™print ā€œOKnā€ā€™



                                      26
Wednesday, December 8, 2010
Puppet Workshop - Installation - 2-5
               ā€¢from source
                ā€¢ fetch and extract source
                   ā€¢ wget http://puppetlabs.com/downloads/facter/
                              facter-1.5.8.tar.gz

                        ā€¢     wget http://puppetlabs.com/downloads/puppet/
                              puppet-2.6.2.tar.gz




                                                    27
Wednesday, December 8, 2010
Puppet Workshop - Installation - 3-5

                          ā€¢   install

                              ā€¢   ruby install.rb

                              ā€¢   mkdir /etc/puppet




                                                    28
Wednesday, December 8, 2010
Puppet Workshop - Installation - 4-5
               ā€¢conļ¬guration
                ā€¢ puppet --mkuser
                ā€¢ puppet --genconļ¬g > /etc/puppet/puppet.conf
                ā€¢ vi /etc/hosts - add entry for nodename puppet if
                          not existing




                                         29
Wednesday, December 8, 2010
Puppet Workshop - Installation - 5-5
               ā€¢manifests/site.pp
                ā€¢ add empty section for default node
                              node default {
                                notice(ā€œdefault nodeā€)
                              }




                                               30
Wednesday, December 8, 2010
Puppet Workshop - Initialization
               ā€¢ļ¬rst start of puppet:
                ā€¢ puppetd --test
               ā€¢puppet CA
                ā€¢ check client certiļ¬cate
                  ā€¢ puppetca --list
                  ā€¢ puppetca --list --all


                                            31
Wednesday, December 8, 2010
Puppet Workshop - Modules - 1-2
               ā€¢File Structure
                ā€¢ mkdir -p modules/<name>/{manifests,ļ¬les}

               ā€¢modules/<name>/manifests/init.pp
                      class <name> {
                             notice(ā€œmodule <name>ā€)
                      }




                                             32
Wednesday, December 8, 2010
Puppet Workshop - Modules - 2-2

               ā€¢including modules in manifests/site.pp
                      node default {
                            include <name>
                      }




                                             33
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 1-6
                                     ā€¢   User Management

                                         ā€¢   create your personal login

                                         ā€¢   create home directory



                              1. Module directories
                              mkdir -p modules/users/{manifests,ļ¬les}




                                                     34
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 2-6
                              2. Module init.pp

                              vi modules/users/manifests/init.pp

                              class users {
                                 user{ "martin":
                                   ! home!! ! ! ! !     => "/home/martin",
                                   ! managehome!        => true,
                                   ! shell! ! ! ! ! !   => "/bin/bash",
                                   ! comment!! ! !      => "Martin Alfke",
                                   ! ensure!! ! ! !     => present,



                                                        35
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 3-6


                              #!uid! ! ! ! ! !   => 0,
                              #!gid !! ! ! ! !   => 0,
                              # password ! !     => '0OfNn.f5krlF2',
                              #!allowdupe !!     => true,
                                }
                              }




                                                     36
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 4-6

                              3. modify site.pp

                              vi manifests/site.pp

                              node default {
                              ! include users
                              }




                                           37
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 5-6
             1. create new ļ¬le
             mkdir -p modules/users/ļ¬les/home/martin/www/

             cat > modules/users/ļ¬les/home/martin/www/index.html
             << EOF
             <html>
             <head><title>My testsite</title></head>
             <body>
             foo
             </body>
             </html>
             EOF


                                       38
Wednesday, December 8, 2010
Puppet Workshop - Account Module - 6-6
                  2. Module init.pp
                  add to modules/users/manifests/init.pp
                  class users {
                     ......
                     ļ¬le {ā€œ/home/martin/wwwā€:
                     ! ensure => directory,
                     }
                     ļ¬le{ā€œhome/martin/www/index.htmlā€:
                     ! source => ā€œpuppet:///modules/users/home/martin/
                     www/index.htmlā€,
                     }
                  }


                                           39
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 1-6
                              ā€¢   Apache sites Management

                                  ā€¢   packages

                                  ā€¢   your own vhost conļ¬g




         1. Module directories
         mkdir -p modules/apache/{manifests,ļ¬les}
         mkdir -p modules/apache/ļ¬les/etc/apache2/sites-available/




                                                   40
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 2-6
          2. your vhost deļ¬nition

          cat > modules/apache/ļ¬les/etc/apache2/sites-available/blit-
          test << EOF
          Listen 88
          NameVirtualHost *:88
          <VirtualHost *:88>
          ! DocumentRoot /home/martin/www
          </VirtualHost>
          EOF




                                       41
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 3-6
       2. Module init.pp
       vi modules/apache/manifests/init.pp

       class apache {
       ! package{ā€œapache2ā€: ensure! ! => present }
                                     !
       ! package{ā€œphp5-mysqlā€: ensure! => present }
       ! ļ¬le{ā€œ/etc/apache2/sites-available/blit-testā€:
       ! ! source => ā€œpuppet:///modules/apache/etc/apache2/sites-
       available/blit-testā€,
       ! }
       }



                                     42
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 4-6


                              3. Add to node default manifest site.pp

                              include apache




                                                43
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 5-6
                               ā€¢        Apache sites Management

1. Add to apache init.pp            ā€¢ enabling sites with function
class apache {
...
deļ¬ne vhost ($ensure = Ź»presentŹ¼) {
! case $ensure {
! ! Ź»presentŹ¼: {
! ! exec { ā€œ/usr/sbin/a2ensite $nameā€:
! ! ! unless => ā€œ/bin/readlink -e /etc/apache2/sites-enabled/$nameā€
! ! }
! ! }



                                   44
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 5-6


!    !   Ź»absentŹ¼: {
!    !   ! exec { ā€œ/usr/sbin/a2dissite $nameā€:
!    !   ! ! onlyif => ā€œ/bin/readlink -e /etc/apache2/sites-enabled/$nameā€
!    !   ! }
!    !   }
!    !   default: { err (ā€œUnknown ensure value: $ensure) }
!    }




                                      45
Wednesday, December 8, 2010
Puppet Workshop - Apache Module - 6-6


             !    vhost {ā€œblit-testā€:
             !    ! ensure => ā€œpresentā€,
             !    }
             !    vhost{ā€œ000-defaultā€:
             !    ! ensure => absent,
             !    }
             }




                                           46
Wednesday, December 8, 2010
Puppet Workshop - Templates - 1-2

                   ā€¢      File Structure

                        ā€¢     mkdir -p modules/<name>/{manifests,templates}

                   ā€¢      modules/<name>/manifests/init.pp
                           class <name> {
                               notice(ā€œmodule <name>ā€)
                           }




                                                 47
Wednesday, December 8, 2010
Puppet Workshop - Templates - 2-2


                              ā€¢   including modules in manifests/site.pp
                                    node default {
                                       include <name>
                                    }




                                                   48
Wednesday, December 8, 2010
Puppet Workshop - Hosts Template - 1-3
                                ā€¢   Hosts Template

                                    ā€¢   conļ¬gure entries in /etc/host




                          1. Module directories
                          mkdir -p modules/hosts/{manifests,templates}




                                                     49
Wednesday, December 8, 2010
Puppet Workshop - Hosts Template - 2-3
                              2. Module init.pp

                              vi modules/hosts/manifests/init.pp

                              class hosts {
                              ! ļ¬le{ā€œ/etc/hostsā€:
                              ! ! owner! => root,
                              ! ! group! => root,
                                         !
                              ! ! content!=> template(hosts.erb),
                              ! }
                              }


                                                  50
Wednesday, December 8, 2010
Puppet Workshop - Hosts Template - 3-3

             3. template hosts.erb

             vi templates/hosts.erb

             127.0.0.1!localhost
             <%= ipaddress %>!<%= fqdn %> <%= hostname %>
             192.168.0.2! puppet
             192.168.0.4! mysql! mysqlmaster




                                      51
Wednesday, December 8, 2010
Puppet Workshop - Functions - 1-2

                   ā€¢      File Structure

                        ā€¢     mkdir -p modules/<name>/lib/




                                                 52
Wednesday, December 8, 2010
Puppet Workshop - Functions - 2-2


                              ā€¢   including modules in manifests/site.pp
                                    node default {
                                       include <name>
                                    }




                                                   53
Wednesday, December 8, 2010
Puppet Workshop - Facter Function - 1-4
                                ā€¢   Facter Function

                                    ā€¢   provide additional fact




                          1. Module directories
                          mkdir -p modules/facter/lib/facter




                                                      54
Wednesday, December 8, 2010
Puppet Workshop - Facter Function - 2-4
2. function.rb

vi modules/facter/lib/facter/function.rb

require Ź»facterŹ¼
Facter.add(ā€œPUPPET_FUNCTIONā€) do
! setcode do
! ! %x{/bin/grep -E ā€œ^PUPPET_FUNCTION=ā€ /etc/puppet_function |
sed -e Ź»s/.*=//Ź¼}.chomp
! end
end


                                    55
Wednesday, December 8, 2010
Puppet Workshop - Facter Function - 3-4

             3. puppet.conf
             section [main]
             pluginsync = true

             4. puppet run
             puppetd --test

             5. call facter puppet function
             facter --puppet | grep puppet_function




                                         56
Wednesday, December 8, 2010
Puppet Workshop - Facter Function - 4-4


             3. use custom facts in manifests
             case $puppet_function {
             ! ā€œMYSQLā€:! ! { include mysql }
             ! ā€œAPACHEā€:!! { include apache }
             ! ā€œPROXYā€:! ! { include proxy }
             ...
             }




                                      57
Wednesday, December 8, 2010
Puppet Workshop - Dashboard - 1-5

                        ā€¢     Installation

                              ā€¢   fetch and extract sourc

                                  ā€¢   wget http://puppetlabs.com/downloads/
                                      dashboard/puppet-dashboard-1.0.4.tgz

                              ā€¢   install mysql-server




                                                    58
Wednesday, December 8, 2010
Puppet Workshop - Dashboard - 2-5

            ā€¢      Conļ¬guration

                  ā€¢      edit /usr/share/puppet-dashboard/conļ¬g/database.yaml

            ā€¢      Create Database

                  ā€¢      cd /usr/share/puppet-dashboard; rake RAILS_ENV
                         db:create or

                  ā€¢      mysql -Ne ā€˜create database dashboard;ā€™




                                               59
Wednesday, December 8, 2010
Puppet Workshop - Dashboard - 3-5

                        ā€¢     Initialize Database

                              ā€¢   cd /usr/share/puppet-dashboard; rake
                                  RAILS_ENV db:migrate

                        ā€¢     Import Reports

                              ā€¢   cd /usr/share/puppet-dashboard; rake
                                  RAILS_ENV=production reports:import




                                                    60
Wednesday, December 8, 2010
Puppet Workshop - Dashboard - 4-5


                              ā€¢   Start service

                                  ā€¢   cd /usr/share/puppet-dashboard; ./bin/server
                                      -e production -d

                              ā€¢   Review your Dashboard in browser

                                  ā€¢   http://<your puppetmaster ip>:3000/




                                                     61
Wednesday, December 8, 2010
Puppet Workshop - Dashboard - 5-5
                              ā€¢   add error to manifest (e.g. point source to a
                                  non existing ļ¬le)

                              ā€¢   run puppetd

                                  ā€¢   puppetd --test

                              ā€¢   import data

                                  ā€¢   cd /usr/share/puppet-dashboard; rake
                                      RAILS_ENV=production reports:import

                              ā€¢   review dashboard



                                                       62
Wednesday, December 8, 2010
Agenda
                   ā€¢ Part I - Puppet Basics
                        ā€¢     General + Communication
                        ā€¢     Manifests, Modules, Templates + Functions

                   ā€¢ Part II - Puppet Workshop
                   ā€¢ Part III - Working with Puppet
                        ā€¢     GIT/SVN for Puppet
                        ā€¢     Production / Test / Development
                        ā€¢     Monitoring




                                                        63
Wednesday, December 8, 2010
Puppet into GIT/SVN

                   ā€¢      Why revision control system?

                        ā€¢     Co-working

                        ā€¢     Branches


                   ā€¢      Which RCS System?

                        ā€¢     Which ever you prefer




                                                 64
Wednesday, December 8, 2010
Puppet Staging
                   ā€¢      Production, Test and Development

                        ā€¢     /etc/puppet/puppet.conf

                        ā€¢     [main] - environment = ...

                        ā€¢     [development] - modulepath=/etc/puppet/
                              development/modules

                        ā€¢     [testing] - modulepath=/etc/puppet/testing/
                              modules

                        ā€¢     [production] - modulepath=/etc/puppet/
                              production/modules


                                                  65
Wednesday, December 8, 2010
Puppet Monitoring

                   ā€¢      Puppet Dashboard

                        ā€¢     Conļ¬gure puppet to store results

                              ā€¢   [master] section: reports=http, store

                              ā€¢   [agent] (v2.6) or [puppetd] section: report=true

                        ā€¢     Conļ¬gure Database (e.g. MySQL)




                                                    66
Wednesday, December 8, 2010
Puppet Dashboard




                                     67
Wednesday, December 8, 2010
Puppet
                       Automated System Conļ¬guration Management



                                            Thank you !
                                            Questions ?




                              Martin Alfke <martin.alfke@buero20.org>



                                                68
Wednesday, December 8, 2010

More Related Content

Similar to Automated System Configuration with Puppet

PuppetCamp SEA @ Blk 71 - Puppet: The Year That Was
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasPuppetCamp SEA @ Blk 71 - Puppet: The Year That Was
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasOlinData
Ā 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Nuxeo
Ā 
Moeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaMoeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaBOSC 2010
Ā 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingDonnie Berkholz
Ā 
Confgetti - Put A Leash On Your Configuration!
Confgetti - Put A Leash On Your Configuration!Confgetti - Put A Leash On Your Configuration!
Confgetti - Put A Leash On Your Configuration!Nikola Tuckovic
Ā 
Open Source Tool Chains for Cloud Computing
Open Source Tool Chains for Cloud ComputingOpen Source Tool Chains for Cloud Computing
Open Source Tool Chains for Cloud ComputingMark Hinkle
Ā 
Drupal vs Sharepoint
Drupal vs SharepointDrupal vs Sharepoint
Drupal vs SharepointAbayomi Ayoola
Ā 
Jeff mc cune sf 2010
Jeff mc cune sf 2010Jeff mc cune sf 2010
Jeff mc cune sf 2010Puppet
Ā 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingDmitry Spodarets
Ā 
Puppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: KeynotePuppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: KeynotePuppet
Ā 
Automation with Puppet and a Path to Private Hybrid Cloud
Automation with Puppet and a Path to Private Hybrid CloudAutomation with Puppet and a Path to Private Hybrid Cloud
Automation with Puppet and a Path to Private Hybrid CloudAndrew Ludwar
Ā 
Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4John Ballinger
Ā 
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...Nagios
Ā 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
Ā 
Caspar Resume EN 2009-07
Caspar Resume EN 2009-07Caspar Resume EN 2009-07
Caspar Resume EN 2009-07Caspar Zhang
Ā 

Similar to Automated System Configuration with Puppet (20)

PuppetCamp SEA @ Blk 71 - Puppet: The Year That Was
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasPuppetCamp SEA @ Blk 71 - Puppet: The Year That Was
PuppetCamp SEA @ Blk 71 - Puppet: The Year That Was
Ā 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4
Ā 
Moeller bosc2010 debian_taverna
Moeller bosc2010 debian_tavernaMoeller bosc2010 debian_taverna
Moeller bosc2010 debian_taverna
Ā 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
Ā 
Confgetti - Put A Leash On Your Configuration!
Confgetti - Put A Leash On Your Configuration!Confgetti - Put A Leash On Your Configuration!
Confgetti - Put A Leash On Your Configuration!
Ā 
Noit ocon-2010
Noit ocon-2010Noit ocon-2010
Noit ocon-2010
Ā 
Open Source Tool Chains for Cloud Computing
Open Source Tool Chains for Cloud ComputingOpen Source Tool Chains for Cloud Computing
Open Source Tool Chains for Cloud Computing
Ā 
Drupal vs Sharepoint
Drupal vs SharepointDrupal vs Sharepoint
Drupal vs Sharepoint
Ā 
Jeff mc cune sf 2010
Jeff mc cune sf 2010Jeff mc cune sf 2010
Jeff mc cune sf 2010
Ā 
Python in Action (Part 2)
Python in Action (Part 2)Python in Action (Part 2)
Python in Action (Part 2)
Ā 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance Computing
Ā 
Puppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: KeynotePuppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: Keynote
Ā 
Automation with Puppet and a Path to Private Hybrid Cloud
Automation with Puppet and a Path to Private Hybrid CloudAutomation with Puppet and a Path to Private Hybrid Cloud
Automation with Puppet and a Path to Private Hybrid Cloud
Ā 
Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4Bar Camp Auckland - Mongo DB Presentation BCA4
Bar Camp Auckland - Mongo DB Presentation BCA4
Ā 
Cloud iaa s-labs- ubuntu canonical- fossa2010
Cloud iaa s-labs- ubuntu canonical- fossa2010Cloud iaa s-labs- ubuntu canonical- fossa2010
Cloud iaa s-labs- ubuntu canonical- fossa2010
Ā 
Python in Action (Part 1)
Python in Action (Part 1)Python in Action (Part 1)
Python in Action (Part 1)
Ā 
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Ā 
Stackato v5
Stackato v5Stackato v5
Stackato v5
Ā 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
Ā 
Caspar Resume EN 2009-07
Caspar Resume EN 2009-07Caspar Resume EN 2009-07
Caspar Resume EN 2009-07
Ā 

More from Martin Alfke

CfgMgmtCamp 2023 - Puppet is YAML.pdf
CfgMgmtCamp 2023 - Puppet is YAML.pdfCfgMgmtCamp 2023 - Puppet is YAML.pdf
CfgMgmtCamp 2023 - Puppet is YAML.pdfMartin Alfke
Ā 
HashiTalksDACH-Terraform-Managing training instances in the Cloud
HashiTalksDACH-Terraform-Managing training instances in the CloudHashiTalksDACH-Terraform-Managing training instances in the Cloud
HashiTalksDACH-Terraform-Managing training instances in the CloudMartin Alfke
Ā 
PuppetCamp2021-Testing Modules and ControlRepo.pdf
PuppetCamp2021-Testing Modules and ControlRepo.pdfPuppetCamp2021-Testing Modules and ControlRepo.pdf
PuppetCamp2021-Testing Modules and ControlRepo.pdfMartin Alfke
Ā 
Puppet Camp Germany 2020 - Puppet Control Repo and GIT
Puppet Camp Germany 2020 - Puppet Control Repo and GITPuppet Camp Germany 2020 - Puppet Control Repo and GIT
Puppet Camp Germany 2020 - Puppet Control Repo and GITMartin Alfke
Ā 
DevOps - How to get technical buy in
DevOps - How to get technical buy inDevOps - How to get technical buy in
DevOps - How to get technical buy inMartin Alfke
Ā 
ADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldMartin Alfke
Ā 
OpenRheinRuhr 2018 - Ops hates containers! Why?
OpenRheinRuhr 2018 - Ops hates containers! Why?OpenRheinRuhr 2018 - Ops hates containers! Why?
OpenRheinRuhr 2018 - Ops hates containers! Why?Martin Alfke
Ā 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesMartin Alfke
Ā 
Puppet Camp Paris 2016 Data in Modules
Puppet Camp Paris 2016 Data in ModulesPuppet Camp Paris 2016 Data in Modules
Puppet Camp Paris 2016 Data in ModulesMartin Alfke
Ā 
Power of Puppet 4
Power of Puppet 4Power of Puppet 4
Power of Puppet 4Martin Alfke
Ā 
Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Martin Alfke
Ā 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Martin Alfke
Ā 
GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaMartin Alfke
Ā 
Puppet camp london-modulerewritingsmartway
Puppet camp london-modulerewritingsmartwayPuppet camp london-modulerewritingsmartway
Puppet camp london-modulerewritingsmartwayMartin Alfke
Ā 
Puppet future parser
Puppet future parserPuppet future parser
Puppet future parserMartin Alfke
Ā 
developing sysadmin, sysadmining developersGuug devops puppet
developing sysadmin, sysadmining developersGuug devops puppetdeveloping sysadmin, sysadmining developersGuug devops puppet
developing sysadmin, sysadmining developersGuug devops puppetMartin Alfke
Ā 
Gluster fs buero20_presentation
Gluster fs buero20_presentationGluster fs buero20_presentation
Gluster fs buero20_presentationMartin Alfke
Ā 

More from Martin Alfke (18)

CfgMgmtCamp 2023 - Puppet is YAML.pdf
CfgMgmtCamp 2023 - Puppet is YAML.pdfCfgMgmtCamp 2023 - Puppet is YAML.pdf
CfgMgmtCamp 2023 - Puppet is YAML.pdf
Ā 
HashiTalksDACH-Terraform-Managing training instances in the Cloud
HashiTalksDACH-Terraform-Managing training instances in the CloudHashiTalksDACH-Terraform-Managing training instances in the Cloud
HashiTalksDACH-Terraform-Managing training instances in the Cloud
Ā 
PuppetCamp2021-Testing Modules and ControlRepo.pdf
PuppetCamp2021-Testing Modules and ControlRepo.pdfPuppetCamp2021-Testing Modules and ControlRepo.pdf
PuppetCamp2021-Testing Modules and ControlRepo.pdf
Ā 
Puppet Camp Germany 2020 - Puppet Control Repo and GIT
Puppet Camp Germany 2020 - Puppet Control Repo and GITPuppet Camp Germany 2020 - Puppet Control Repo and GIT
Puppet Camp Germany 2020 - Puppet Control Repo and GIT
Ā 
DevOps - How to get technical buy in
DevOps - How to get technical buy inDevOps - How to get technical buy in
DevOps - How to get technical buy in
Ā 
ADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized world
Ā 
OpenRheinRuhr 2018 - Ops hates containers! Why?
OpenRheinRuhr 2018 - Ops hates containers! Why?OpenRheinRuhr 2018 - Ops hates containers! Why?
OpenRheinRuhr 2018 - Ops hates containers! Why?
Ā 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and Provides
Ā 
Puppet Camp Paris 2016 Data in Modules
Puppet Camp Paris 2016 Data in ModulesPuppet Camp Paris 2016 Data in Modules
Puppet Camp Paris 2016 Data in Modules
Ā 
Power of Puppet 4
Power of Puppet 4Power of Puppet 4
Power of Puppet 4
Ā 
Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?
Ā 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014
Ā 
GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebula
Ā 
Puppet camp london-modulerewritingsmartway
Puppet camp london-modulerewritingsmartwayPuppet camp london-modulerewritingsmartway
Puppet camp london-modulerewritingsmartway
Ā 
One
OneOne
One
Ā 
Puppet future parser
Puppet future parserPuppet future parser
Puppet future parser
Ā 
developing sysadmin, sysadmining developersGuug devops puppet
developing sysadmin, sysadmining developersGuug devops puppetdeveloping sysadmin, sysadmining developersGuug devops puppet
developing sysadmin, sysadmining developersGuug devops puppet
Ā 
Gluster fs buero20_presentation
Gluster fs buero20_presentationGluster fs buero20_presentation
Gluster fs buero20_presentation
Ā 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...gurkirankumar98700
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024The Digital Insurer
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
Ā 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
Ā 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024BookNet Canada
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
Ā 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Ā 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Ā 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
Ā 

Automated System Configuration with Puppet

  • 1. Puppet Automated System Conļ¬guration Management Martin Alfke <martin.alfke@buero20.org> 1 Wednesday, December 8, 2010
  • 2. Agenda ā€¢ Part I - Puppet Basics ā€¢ General + Communication ā€¢ Manifests, Modules, Templates + Functions ā€¢ Part II - Puppet Workshop ā€¢ Part III - Working with Puppet ā€¢ GIT/SVN for Puppet ā€¢ Production / Test / Development ā€¢ Monitoring 2 Wednesday, December 8, 2010
  • 3. General ā€¢ ā€œPut simply, Puppet is a system for automating system administration tasksā€ ā€¢ Puppet... ā€¢ is a declarative language for expressing system conļ¬guration ā€¢ is a client-server distribution ā€¢ Requirements: ā€¢ Ruby > 1.8.1 < 1.9 ā€¢ Facter 3 Wednesday, December 8, 2010
  • 4. Communication ā€¢ Security ā€¢ SSL certiļ¬cate based authentication ā€¢ manual signing of certiļ¬cate requests ā€¢ Layers: ā€¢ Conļ¬guration Language ā€¢ Transaction layer ā€¢ Resource Abstraction Layer 4 Wednesday, December 8, 2010
  • 5. Supported Platforms ā€¢ Linux ā€¢ Debian / Ubuntu / Fedora / CentOS / RHEL / OEL / Mandriva / SuSE / Gentoo ā€¢ BSD ā€¢ FreeBSD / OpenBSD ā€¢ Other Unix ā€¢ OS X / Solaris / HP-UX ā€¢ Windows - coming in 2010 5 Wednesday, December 8, 2010
  • 6. Functional Overview ā€¢ Clients connect to Puppet Master ā€¢ Puppet Master send clients description of tasks ā€¢ Puppet Master stores Clients reports ā€¢ Reports can be imported into dashboard database ā€¢ Dashboard web interface to reports 6 Wednesday, December 8, 2010
  • 7. Facter /usr/bin/facter architecture => amd64 domain => buero20.local facterversion => 1.5.7 fqdn => puppet.buero20.local ... interfaces => eth0,eth1 ipaddress => 10.0.2.15 ... operatingsystem => Debian processorcount => 1 7 Wednesday, December 8, 2010
  • 8. Puppet Conļ¬guration Language - 1-6 ā€¢ manifests/site.pp ā€¢ Global ļ¬le with node deļ¬nitions ā€¢ modules/<name>/manifests/init.pp ā€¢ Module initialization ā€¢ Use lower case for names (modules, templates, functions, deļ¬nes, exec, resources,...) 8 Wednesday, December 8, 2010
  • 9. Puppet Conļ¬guration Language - 2-6 ā€¢ Resources ā€¢ user - create or remove users ā€¢ group - create or remove groups ā€¢ package install or remove distribution packages ā€¢ ļ¬le - create directories, symlinks, copy ļ¬les ā€¢ cron - add cron jobs ā€¢ service - run or stop services like daemons 9 Wednesday, December 8, 2010
  • 10. Puppet Conļ¬guration Language - 3-6 ā€¢ Classes ā€¢ aggregate resources for easier use ā€¢ subclasses (=nested classes) for modularity ā€¢ parameterised classes for more ļ¬‚exible handling ā€¢ classes support inheritance 10 Wednesday, December 8, 2010
  • 11. Puppet Conļ¬guration Language - 4-6 ā€¢ Deļ¬nitions ā€¢ reusable objects ā€¢ Modules ā€¢ combine collections of resources, classes and deļ¬nitions 11 Wednesday, December 8, 2010
  • 12. Puppet Conļ¬guration Language - 5-6 ā€¢ Chaining resources ā€¢ make sure that a service is restarted after ļ¬lechange ā€¢ make sure that conļ¬g ļ¬le is copied prior starting a service ā€¢ make sure that a package is installed prior starting the service 12 Wednesday, December 8, 2010
  • 13. Puppet Conļ¬guration Language - 6-6 ā€¢ Nodes ā€¢ connect modules and clases to systems ā€¢ nodenames are short hostname, fqdn or ā€œdefaultā€ 13 Wednesday, December 8, 2010
  • 14. Manifests ā€¢ Deļ¬ne static resources ļ¬le { ā€œ/etc/passwdā€: ā€¢ Static resources have owner => root, full path and name. group => root, mode => 644, } 14 Wednesday, December 8, 2010
  • 15. Manifests with facter Variables ā€¢ Using facter variables inside ļ¬le { ā€œsshconļ¬gā€: a deļ¬nition name => $operatingsystem ? { solaris => ā€œ/usr/local/etc/ssh/sshd_conļ¬gā€, default => ā€œ/etc/ssh/sshd_conļ¬gā€, }, owner => root, group => root, mode => 644, } 15 Wednesday, December 8, 2010
  • 16. Manifest with Sub-Classes class mysql { class client { class packages { package { "mysql-client": ensure => installed } } } class server { class packages { package { "mysql-server": ensure => installed } package { "mysql-common": ensure => installed } 16 Wednesday, December 8, 2010
  • 17. Manifests with Exec ļ¬le {"/etc/apt/keys/pgp_key.asc": owner => root, group => root, mode => 640, source => "puppet://$server/ļ¬les/etc/apt/keys/pgp_key.asc" } exec { "/usr/bin/apt-key add /etc/apt/keys/pgp_key.asc": unless => "/bin/sh -c '[ `/usr/bin/apt-key list | grep buildd | wc -l` -eq 1 ]'" } 17 Wednesday, December 8, 2010
  • 18. Manifests with Subscription ļ¬le {"/etc/apt/keys/puppet.key": owner => root, group => root, mode => 640, source => "puppet:///ļ¬les/etc/apt/keys/puppet.key" } exec { subscribe-base-conļ¬g-puppet-key: command => "/usr/bin/apt-key add /etc/apt/keys/puppet.key; /usr/bin/apt-get update", logoutput => false, refreshonly => true, subscribe => File["/etc/apt/keys/puppet.key"] } 18 Wednesday, December 8, 2010
  • 19. Modules - Directory structure ā€¢ Directory structure - e.g. /etc/ssh/sshd_conļ¬g module/sshd/ manifests/ init.pp ļ¬les/ etc/ ā€¢ Modules require strict directories naming. ssh/ sshd_conļ¬g 19 Wednesday, December 8, 2010
  • 20. Modules - Initialization Manifest ā€¢ init.pp manifest will be integrated automatically when class name is equal to module name ā€¢ modules/manifests/sshd/init.pp class sshd { ļ¬le { ā€œ/etc/ssh/sshd_conļ¬gā€: mode => 644, source => ā€œpuppet:///modules/sshd/etc/ssh/sshd_conļ¬gā€, } } 20 Wednesday, December 8, 2010
  • 21. Templates - Directory Structure ā€¢ Templates require strict directory naming (like modules) ā€¢ Directory structure + content - e.g. Network settings network/ manifests/ init.pp templates/ network.erb 21 Wednesday, December 8, 2010
  • 22. Templates - Initialization Manifest ā€¢ Templates may use facter variables ā€¢ Manifests - init.pp ļ¬le { ā€œ/etc/sysconļ¬g/networkā€: content => template(ā€œtemplates/network.erbā€), } ā€¢ Templatess - network.erb NETWORKING=yes HOSTNAME=<%= hostname %> NOZEROCONF=yes 22 Wednesday, December 8, 2010
  • 23. Functions ā€¢ Directory structure e.g. read parameter from conļ¬guration ļ¬le using facter: lib/ facter/ function.rb ā€¢ Content of library functions function.rb: require ā€˜facterā€™ Facter.add(ā€œPUPPET_FUNCTIONā€) do %x{/bin/grep -E ā€œ^PUPPET_FUNCTION=ā€ /etc/ puppet_function | sed -e ā€˜s/*.=//ā€™ } .chomp end end 23 Wednesday, December 8, 2010
  • 24. Agenda ā€¢ Part I - Puppet Basics ā€¢ General + Communication ā€¢ Manifests, Modules, Templates + Functions ā€¢ Part II - Puppet Workshop ā€¢ Part III - Working with Puppet ā€¢ GIT/SVN for Puppet ā€¢ Production / Test / Development ā€¢ Monitoring 24 Wednesday, December 8, 2010
  • 25. Puppet Workshop ā€¢ Installation - Puppet master and client on puppet master only ā€¢ Initialization ā€¢ Installation - Puppet client on puppet client only ā€¢ Modules ā€¢ User Management ā€¢ Apache sites conļ¬guration ā€¢ Templating for /etc/hosts ā€¢ Setup Reporting and Dashboard 25 Wednesday, December 8, 2010
  • 26. Puppet Workshop - Installation - 1-5 ā€¢check requirements: ā€¢ ruby --version ā€¢ ruby -rshadow -eā€™print ā€œOKnā€ā€™ 26 Wednesday, December 8, 2010
  • 27. Puppet Workshop - Installation - 2-5 ā€¢from source ā€¢ fetch and extract source ā€¢ wget http://puppetlabs.com/downloads/facter/ facter-1.5.8.tar.gz ā€¢ wget http://puppetlabs.com/downloads/puppet/ puppet-2.6.2.tar.gz 27 Wednesday, December 8, 2010
  • 28. Puppet Workshop - Installation - 3-5 ā€¢ install ā€¢ ruby install.rb ā€¢ mkdir /etc/puppet 28 Wednesday, December 8, 2010
  • 29. Puppet Workshop - Installation - 4-5 ā€¢conļ¬guration ā€¢ puppet --mkuser ā€¢ puppet --genconļ¬g > /etc/puppet/puppet.conf ā€¢ vi /etc/hosts - add entry for nodename puppet if not existing 29 Wednesday, December 8, 2010
  • 30. Puppet Workshop - Installation - 5-5 ā€¢manifests/site.pp ā€¢ add empty section for default node node default { notice(ā€œdefault nodeā€) } 30 Wednesday, December 8, 2010
  • 31. Puppet Workshop - Initialization ā€¢ļ¬rst start of puppet: ā€¢ puppetd --test ā€¢puppet CA ā€¢ check client certiļ¬cate ā€¢ puppetca --list ā€¢ puppetca --list --all 31 Wednesday, December 8, 2010
  • 32. Puppet Workshop - Modules - 1-2 ā€¢File Structure ā€¢ mkdir -p modules/<name>/{manifests,ļ¬les} ā€¢modules/<name>/manifests/init.pp class <name> { notice(ā€œmodule <name>ā€) } 32 Wednesday, December 8, 2010
  • 33. Puppet Workshop - Modules - 2-2 ā€¢including modules in manifests/site.pp node default { include <name> } 33 Wednesday, December 8, 2010
  • 34. Puppet Workshop - Account Module - 1-6 ā€¢ User Management ā€¢ create your personal login ā€¢ create home directory 1. Module directories mkdir -p modules/users/{manifests,ļ¬les} 34 Wednesday, December 8, 2010
  • 35. Puppet Workshop - Account Module - 2-6 2. Module init.pp vi modules/users/manifests/init.pp class users { user{ "martin": ! home!! ! ! ! ! => "/home/martin", ! managehome! => true, ! shell! ! ! ! ! ! => "/bin/bash", ! comment!! ! ! => "Martin Alfke", ! ensure!! ! ! ! => present, 35 Wednesday, December 8, 2010
  • 36. Puppet Workshop - Account Module - 3-6 #!uid! ! ! ! ! ! => 0, #!gid !! ! ! ! ! => 0, # password ! ! => '0OfNn.f5krlF2', #!allowdupe !! => true, } } 36 Wednesday, December 8, 2010
  • 37. Puppet Workshop - Account Module - 4-6 3. modify site.pp vi manifests/site.pp node default { ! include users } 37 Wednesday, December 8, 2010
  • 38. Puppet Workshop - Account Module - 5-6 1. create new ļ¬le mkdir -p modules/users/ļ¬les/home/martin/www/ cat > modules/users/ļ¬les/home/martin/www/index.html << EOF <html> <head><title>My testsite</title></head> <body> foo </body> </html> EOF 38 Wednesday, December 8, 2010
  • 39. Puppet Workshop - Account Module - 6-6 2. Module init.pp add to modules/users/manifests/init.pp class users { ...... ļ¬le {ā€œ/home/martin/wwwā€: ! ensure => directory, } ļ¬le{ā€œhome/martin/www/index.htmlā€: ! source => ā€œpuppet:///modules/users/home/martin/ www/index.htmlā€, } } 39 Wednesday, December 8, 2010
  • 40. Puppet Workshop - Apache Module - 1-6 ā€¢ Apache sites Management ā€¢ packages ā€¢ your own vhost conļ¬g 1. Module directories mkdir -p modules/apache/{manifests,ļ¬les} mkdir -p modules/apache/ļ¬les/etc/apache2/sites-available/ 40 Wednesday, December 8, 2010
  • 41. Puppet Workshop - Apache Module - 2-6 2. your vhost deļ¬nition cat > modules/apache/ļ¬les/etc/apache2/sites-available/blit- test << EOF Listen 88 NameVirtualHost *:88 <VirtualHost *:88> ! DocumentRoot /home/martin/www </VirtualHost> EOF 41 Wednesday, December 8, 2010
  • 42. Puppet Workshop - Apache Module - 3-6 2. Module init.pp vi modules/apache/manifests/init.pp class apache { ! package{ā€œapache2ā€: ensure! ! => present } ! ! package{ā€œphp5-mysqlā€: ensure! => present } ! ļ¬le{ā€œ/etc/apache2/sites-available/blit-testā€: ! ! source => ā€œpuppet:///modules/apache/etc/apache2/sites- available/blit-testā€, ! } } 42 Wednesday, December 8, 2010
  • 43. Puppet Workshop - Apache Module - 4-6 3. Add to node default manifest site.pp include apache 43 Wednesday, December 8, 2010
  • 44. Puppet Workshop - Apache Module - 5-6 ā€¢ Apache sites Management 1. Add to apache init.pp ā€¢ enabling sites with function class apache { ... deļ¬ne vhost ($ensure = Ź»presentŹ¼) { ! case $ensure { ! ! Ź»presentŹ¼: { ! ! exec { ā€œ/usr/sbin/a2ensite $nameā€: ! ! ! unless => ā€œ/bin/readlink -e /etc/apache2/sites-enabled/$nameā€ ! ! } ! ! } 44 Wednesday, December 8, 2010
  • 45. Puppet Workshop - Apache Module - 5-6 ! ! Ź»absentŹ¼: { ! ! ! exec { ā€œ/usr/sbin/a2dissite $nameā€: ! ! ! ! onlyif => ā€œ/bin/readlink -e /etc/apache2/sites-enabled/$nameā€ ! ! ! } ! ! } ! ! default: { err (ā€œUnknown ensure value: $ensure) } ! } 45 Wednesday, December 8, 2010
  • 46. Puppet Workshop - Apache Module - 6-6 ! vhost {ā€œblit-testā€: ! ! ensure => ā€œpresentā€, ! } ! vhost{ā€œ000-defaultā€: ! ! ensure => absent, ! } } 46 Wednesday, December 8, 2010
  • 47. Puppet Workshop - Templates - 1-2 ā€¢ File Structure ā€¢ mkdir -p modules/<name>/{manifests,templates} ā€¢ modules/<name>/manifests/init.pp class <name> { notice(ā€œmodule <name>ā€) } 47 Wednesday, December 8, 2010
  • 48. Puppet Workshop - Templates - 2-2 ā€¢ including modules in manifests/site.pp node default { include <name> } 48 Wednesday, December 8, 2010
  • 49. Puppet Workshop - Hosts Template - 1-3 ā€¢ Hosts Template ā€¢ conļ¬gure entries in /etc/host 1. Module directories mkdir -p modules/hosts/{manifests,templates} 49 Wednesday, December 8, 2010
  • 50. Puppet Workshop - Hosts Template - 2-3 2. Module init.pp vi modules/hosts/manifests/init.pp class hosts { ! ļ¬le{ā€œ/etc/hostsā€: ! ! owner! => root, ! ! group! => root, ! ! ! content!=> template(hosts.erb), ! } } 50 Wednesday, December 8, 2010
  • 51. Puppet Workshop - Hosts Template - 3-3 3. template hosts.erb vi templates/hosts.erb 127.0.0.1!localhost <%= ipaddress %>!<%= fqdn %> <%= hostname %> 192.168.0.2! puppet 192.168.0.4! mysql! mysqlmaster 51 Wednesday, December 8, 2010
  • 52. Puppet Workshop - Functions - 1-2 ā€¢ File Structure ā€¢ mkdir -p modules/<name>/lib/ 52 Wednesday, December 8, 2010
  • 53. Puppet Workshop - Functions - 2-2 ā€¢ including modules in manifests/site.pp node default { include <name> } 53 Wednesday, December 8, 2010
  • 54. Puppet Workshop - Facter Function - 1-4 ā€¢ Facter Function ā€¢ provide additional fact 1. Module directories mkdir -p modules/facter/lib/facter 54 Wednesday, December 8, 2010
  • 55. Puppet Workshop - Facter Function - 2-4 2. function.rb vi modules/facter/lib/facter/function.rb require Ź»facterŹ¼ Facter.add(ā€œPUPPET_FUNCTIONā€) do ! setcode do ! ! %x{/bin/grep -E ā€œ^PUPPET_FUNCTION=ā€ /etc/puppet_function | sed -e Ź»s/.*=//Ź¼}.chomp ! end end 55 Wednesday, December 8, 2010
  • 56. Puppet Workshop - Facter Function - 3-4 3. puppet.conf section [main] pluginsync = true 4. puppet run puppetd --test 5. call facter puppet function facter --puppet | grep puppet_function 56 Wednesday, December 8, 2010
  • 57. Puppet Workshop - Facter Function - 4-4 3. use custom facts in manifests case $puppet_function { ! ā€œMYSQLā€:! ! { include mysql } ! ā€œAPACHEā€:!! { include apache } ! ā€œPROXYā€:! ! { include proxy } ... } 57 Wednesday, December 8, 2010
  • 58. Puppet Workshop - Dashboard - 1-5 ā€¢ Installation ā€¢ fetch and extract sourc ā€¢ wget http://puppetlabs.com/downloads/ dashboard/puppet-dashboard-1.0.4.tgz ā€¢ install mysql-server 58 Wednesday, December 8, 2010
  • 59. Puppet Workshop - Dashboard - 2-5 ā€¢ Conļ¬guration ā€¢ edit /usr/share/puppet-dashboard/conļ¬g/database.yaml ā€¢ Create Database ā€¢ cd /usr/share/puppet-dashboard; rake RAILS_ENV db:create or ā€¢ mysql -Ne ā€˜create database dashboard;ā€™ 59 Wednesday, December 8, 2010
  • 60. Puppet Workshop - Dashboard - 3-5 ā€¢ Initialize Database ā€¢ cd /usr/share/puppet-dashboard; rake RAILS_ENV db:migrate ā€¢ Import Reports ā€¢ cd /usr/share/puppet-dashboard; rake RAILS_ENV=production reports:import 60 Wednesday, December 8, 2010
  • 61. Puppet Workshop - Dashboard - 4-5 ā€¢ Start service ā€¢ cd /usr/share/puppet-dashboard; ./bin/server -e production -d ā€¢ Review your Dashboard in browser ā€¢ http://<your puppetmaster ip>:3000/ 61 Wednesday, December 8, 2010
  • 62. Puppet Workshop - Dashboard - 5-5 ā€¢ add error to manifest (e.g. point source to a non existing ļ¬le) ā€¢ run puppetd ā€¢ puppetd --test ā€¢ import data ā€¢ cd /usr/share/puppet-dashboard; rake RAILS_ENV=production reports:import ā€¢ review dashboard 62 Wednesday, December 8, 2010
  • 63. Agenda ā€¢ Part I - Puppet Basics ā€¢ General + Communication ā€¢ Manifests, Modules, Templates + Functions ā€¢ Part II - Puppet Workshop ā€¢ Part III - Working with Puppet ā€¢ GIT/SVN for Puppet ā€¢ Production / Test / Development ā€¢ Monitoring 63 Wednesday, December 8, 2010
  • 64. Puppet into GIT/SVN ā€¢ Why revision control system? ā€¢ Co-working ā€¢ Branches ā€¢ Which RCS System? ā€¢ Which ever you prefer 64 Wednesday, December 8, 2010
  • 65. Puppet Staging ā€¢ Production, Test and Development ā€¢ /etc/puppet/puppet.conf ā€¢ [main] - environment = ... ā€¢ [development] - modulepath=/etc/puppet/ development/modules ā€¢ [testing] - modulepath=/etc/puppet/testing/ modules ā€¢ [production] - modulepath=/etc/puppet/ production/modules 65 Wednesday, December 8, 2010
  • 66. Puppet Monitoring ā€¢ Puppet Dashboard ā€¢ Conļ¬gure puppet to store results ā€¢ [master] section: reports=http, store ā€¢ [agent] (v2.6) or [puppetd] section: report=true ā€¢ Conļ¬gure Database (e.g. MySQL) 66 Wednesday, December 8, 2010
  • 67. Puppet Dashboard 67 Wednesday, December 8, 2010
  • 68. Puppet Automated System Conļ¬guration Management Thank you ! Questions ? Martin Alfke <martin.alfke@buero20.org> 68 Wednesday, December 8, 2010