Your SlideShare is downloading. ×
Developing IT infrastructures with Puppet
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Developing IT infrastructures with Puppet

3,602
views

Published on

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

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


0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,602
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
85
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programmare Infrastrutture IT con Puppet Alessandro Franceschi / Lab42
  • 2. Infrastructure progressiocum PuppetIT Infrastructures development with Puppet Alessandro Franceschi / Lab42 CodeMotion 2012 Roma Creative Commons BY-NC-SA 3.0
  • 3. From Opsto DevOps
  • 4. Tempus fugitFlexible... elastic... scalableWhat’s behind these cloudy words?
  • 5. Panta reiAutomation is a matter of survival
  • 6. Alea iacta estOps like automation! ( since Bourne shell ... )
  • 7. Errarehumanum estFrom a bunch of custom scripts to Standard Integrated Tools
  • 8. FactotumHave you heard about this Puppet|Chef | CfEngine stuff?
  • 9. Doctum docesInfrastructure as code
  • 10. Scripta manent,verba volantServers Infrastructure Change under... version control!
  • 11. Repetitia iuvantCode behaves always in the same way: Consistent setups
  • 12. Ignorantia legisnon excusatCode can be tested. Infrastructure Code too.
  • 13. Mastersof Puppet
  • 14. GratisOpenSource from www.puppetlabs.com
  • 15. Cui prodest? Source: www.puppetlabs.com
  • 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. 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. Veni vidi vici
  • 19. Ex AequoOperating System Abstraction
  • 20. DeusExMachina# This File is Managed by Puppet
  • 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. Enough graphics, show me some Puppet code!
  • 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. 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. 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. 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. 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. 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. 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. ad maiora Questions? Graphics:@alvagante www.tatlin.net