Programmare Infrastrutture IT con Puppet                                           Alessandro Franceschi / Lab42
Infrastructure progressiocum PuppetIT Infrastructures development with Puppet                                  Alessandro ...
From Opsto DevOps
Tempus fugitFlexible... elastic... scalableWhat’s behind these cloudy words?
Panta reiAutomation is a matter of survival
Alea iacta estOps like automation!                  ( since Bourne shell ... )
Errarehumanum estFrom a bunch of custom scripts             to Standard Integrated Tools
FactotumHave you heard about this Puppet|Chef | CfEngine stuff?
Doctum docesInfrastructure as code
Scripta manent,verba volantServers Infrastructure Change under...                          version control!
Repetitia iuvantCode behaves always in the same way:                      Consistent setups
Ignorantia legisnon excusatCode can be tested.                  Infrastructure Code too.
Mastersof Puppet
GratisOpenSource from www.puppetlabs.com
Cui prodest?   Source: www.puppetlabs.com
Divide et ImperaMany Puppet nodes                                            One Puppet MasterClientsUser: rootProcess: /u...
package { openssh-server:Status Quo               }                             ensure => present,                        ...
Veni vidi vici
Ex AequoOperating System Abstraction
DeusExMachina# This File is Managed by Puppet
Mater semper certa est, pater nunquam O: Who changed that file?!info: Filebucket[/var/lib/puppet/clientbucket]: Adding /etc...
Enough graphics, show me some  Puppet code!
Nodes definitions In Puppet code:                 On an External Node Classifier (ENC) /etc/puppet/manifests/site.pp node p...
Classes (collections of resources) class role_fep {     $role="fep"     include general # We see it in the next slide     ...
Classes ( a baseline common to all nodes ) class general {     include   puppet     include   users     include   openssh ...
Modules - Directory layout  /etc/puppet/modules/ ($modulepath) apache/                      One Application, One Module, O...
Modules - Files autoloadingclass autofs {    package { autofs:      ensure => present,    }    service { autofs:      ensu...
LINKS             for a better livinghttp://docs.puppetlabs.com/ - PuppetLabs documentationhttp://planetpuppet.org/ - Plan...
DO UT DESAutomated Systems SetupsCoherent InfrastructureTrack and History of ChangeInstallations Replicability            ...
ad maiora               Questions?                              Graphics:@alvagante                  www.tatlin.net
Upcoming SlideShare
Loading in …5
×

Developing IT infrastructures with Puppet

4,943 views

Published on

An introduction to DevOps, Configuration Management Software and Puppet logic and language.

Developing IT infrastructures with Puppet

  1. 1. Programmare Infrastrutture IT con Puppet Alessandro Franceschi / Lab42
  2. 2. Infrastructure progressiocum PuppetIT Infrastructures development with Puppet Alessandro Franceschi / Lab42 CodeMotion 2012 Roma Creative Commons BY-NC-SA 3.0
  3. 3. From Opsto DevOps
  4. 4. Tempus fugitFlexible... elastic... scalableWhat’s behind these cloudy words?
  5. 5. Panta reiAutomation is a matter of survival
  6. 6. Alea iacta estOps like automation! ( since Bourne shell ... )
  7. 7. Errarehumanum estFrom a bunch of custom scripts to Standard Integrated Tools
  8. 8. FactotumHave you heard about this Puppet|Chef | CfEngine stuff?
  9. 9. Doctum docesInfrastructure as code
  10. 10. Scripta manent,verba volantServers Infrastructure Change under... version control!
  11. 11. Repetitia iuvantCode behaves always in the same way: Consistent setups
  12. 12. Ignorantia legisnon excusatCode can be tested. Infrastructure Code too.
  13. 13. Mastersof Puppet
  14. 14. GratisOpenSource from www.puppetlabs.com
  15. 15. Cui prodest? Source: www.puppetlabs.com
  16. 16. Divide et ImperaMany Puppet nodes One Puppet MasterClientsUser: rootProcess: /usr/bin/ruby /usr/sbin/puppetd -t Server User: puppet Process: /usr/bin/ruby /usr/sbin/puppetmasterd Listen: TCP 0.0.0.0:8140
  17. 17. package { openssh-server:Status Quo } ensure => present, before => File[/etc/ssh/sshd_config],A declarative language file { /etc/ssh/sshd_config: ensure => file, mode => 600, source => /root/learning-manifests/sshd_config, } service { sshd: ensure => running, enable => true, subscribe => File[/etc/ssh/sshd_config], }
  18. 18. Veni vidi vici
  19. 19. Ex AequoOperating System Abstraction
  20. 20. DeusExMachina# This File is Managed by Puppet
  21. 21. Mater semper certa est, pater nunquam O: Who changed that file?!info: Filebucket[/var/lib/puppet/clientbucket]: Adding /etc/resolv.conf(d7fbc1695489ce896d30b7b04d72887c)info: //test/File[/etc/resolv.conf]: Filebucketed /etc/resolv.conf to main with sumd7fbc1695489ce896d30b7b04d72887cOld file is copied in:/var/lib/puppet/clientbucket/d/7/f/b/c/1/6/9/d7fbc1695489ce896d30b7b04d72887c/content
  22. 22. Enough graphics, show me some Puppet code!
  23. 23. Nodes definitions In Puppet code: On an External Node Classifier (ENC) /etc/puppet/manifests/site.pp node prod-fep-1 { $status = "prod" include role_fep } node prod-fep-2 { The Foreman $status = "prod" include role_fep } node test-fep-1 { $status = "test" include role_fep } Puppet Dashboard node dev-fep-1 { $status = "dev" include role_fep } [...] Puppet Enterprise Console
  24. 24. Classes (collections of resources) class role_fep { $role="fep" include general # We see it in the next slide include apache include php::pear include php::dev include php::oci8 apache::module { "rewrite": } apache::module { "proxy": templatefile => "proxy.conf.erb" } php::module { "gd": } php::pear::module { "apc": } php::pear::module { "XML_Serializer": use_package => "no" } php::pecl::config { "http_proxy": value => "$proxy_server" } [...] # Sample custom files file { ‘/data’: ensure => directory, } file { ‘/data/www’: ensure => $::operatingsystem ? { /(?i:Centos|RedHat|Scientific|Fedora)/ => ‘/var/www/html’, /(?i:Debian|Ubuntu|Mint)/ => ‘/var/www’, }, require => File[‘/data’]: } }
  25. 25. Classes ( a baseline common to all nodes ) class general { include puppet include users include openssh include hosts include resolver include sudo include snmpd include nrpe include munin case $::operatingsystem { ubuntu,debian: { include apt include exim } centos,redhat: { include yum } default: { } } }
  26. 26. Modules - Directory layout /etc/puppet/modules/ ($modulepath) apache/ One Application, One Module, One class apache/manifests/ apache/manifests/init.pp Puppet Manifests ( code in the Puppet DSL ) apache/manifests/module.pp apache/lib/ apache/lib/puppet/ Puppet extensions ( code in Ruby ) apache/lib/puppet/parser/ apache/lib/puppet/parser/functions apache/lib/puppet/provider/ apache/lib/puppet/type/ apache/lib/facter/ apache/templates/ Erb Templates (files with dynamic content) apache/files/ Static files apache/spec/ apache/spec/classes/ Rspec tests apache/spec/defines/ apache/Modulefile Module’s metadata for the Puppet Forge apache/README.md
  27. 27. Modules - Files autoloadingclass autofs { package { autofs: ensure => present, } service { autofs: ensure => running, Sourced (static) files are searched in: enable => true, $modulepath/autofs/files/auto.homes } file { "auto.homes": path => “/etc/auto.homes”, source => "puppet://$servername/modules/autofs/auto.homes" }} Templates (Ruby ERB) are searched in:class autofs { $modulepath/autofs/templates/auto.master.erb [...] file { "/etc/auto.master": content => template("autofs/auto.master.erb") }}
  28. 28. LINKS for a better livinghttp://docs.puppetlabs.com/ - PuppetLabs documentationhttp://planetpuppet.org/ - Planet Puppet - Feeds aggregatorhttp://puppetlabs.com/community/puppet-camp/ - PuppetCampshttps://bitly.com/wnvqaN - How to start with Puppet - Useful linkshttp://www.example42.com/ - Example42 Puppet modules ( disclaimer ;-)
  29. 29. DO UT DESAutomated Systems SetupsCoherent InfrastructureTrack and History of ChangeInstallations Replicability A new language to learnQuick propagation of changes Effectiveness needs practiceAligned Environments for Test/[...]/Prod If there’s code , there are bugsAutomated monitoring Make Puppet the Enforcer not the Violator Discipline in Systems management More time to make things done (the first time) Great Power gives Great Responsibilities
  30. 30. ad maiora Questions? Graphics:@alvagante www.tatlin.net

×