SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Seat Internet Factory Tech Talk 5
Tempus fugit




Setup. Configure. Deploy. Troubleshoot. Fix.
Panta rei




Emails. Tickets. Calls. Meetings.
Mala
tempora
currunt



cat /etc/issue
Debian 4
Errare
humanum est...



rm /var/log/messages
perseverare
autem
diabolicum



chmod -R 777 ; su nobody ; rm -rf .
Alea iacta est




Hope driven release management.
Devs Versus Ops




D: Can you copy /ldap/dritchie/spes.war to prod?   O: Open a Ticket.
O tempora
o mores!


Big efforts for small outputs
Spes ultima dea
        Have you heard about this Puppet thing?
Repetitia iuvant
Machines automate better
Gratis




OpenSource from www.puppetlabs.com
Cui prodest?




               Source: www.puppetlabs.com
Divide
                      et
                    impera
Many Puppet nodes            One Puppet Master
package { 'openssh-server':

Status Quo                            }
                                          ensure => present,
                                          before => File['/etc/ssh/sshd_config'],


“A declarative language to describe   file { '/etc/ssh/sshd_config':
system status”                            ensure => file,
                                          mode   => 600,
                                          source => '/root/learning-manifests/sshd_config',
                                      }

                                      service { 'sshd':
                                          ensure     => running,
                                          enable     => true,
                                          subscribe => File['/etc/ssh/sshd_config'],
                                      }
Veni vidi vici
                 puppet apply
Deus
Ex
Machina


# 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/resolv.conf
(d7fbc1695489ce896d30b7b04d72887c)
info: //test/File[/etc/resolv.conf]: Filebucketed /etc/resolv.conf to main with sum
d7fbc1695489ce896d30b7b04d72887c
notice: //test/File[/etc/resolv.conf]/content: content changed '{md5}
d7fbc1695489ce896d30b7b04d72887c' to '{md5}
958836dd057fdbb33597d688cc6d28a2'
Ex novo




Provision from scratch.
Doctum
doces




Infrastructure as code
Scripta manent,
verba volant




svn ci -m “Ticket #777”
Factotum




P: I manage. Almost everything.
Ignorantia legis
non excusat




Once you Puppettize, you Puppettize
Sperimentazione iniziata nel 2010
Implementazione sistematica su nuovi server da Ottobre 2010
Conversione / Upgrade sistemi esistenti in corso.
Produzione a Rozzano - Sistemi gestiti: 167 (growing):
- Pagine Bianche
- Banners
- E-Commerce, Scioppy
- Tools PL, Iglu, Spysite, Routing, Fotocontest, Iglu ...
- Sistemi infrastrutturali (Dns, Syslog, Deploy, Ldap (soon) )
- Sistemi di monitoring (Nagios, Munin)

Disaster Recovery - Sistemi gestiti: 34:
- Pagine Gialle (Intera filiera)
- Sistemi infrastrutturali (Dns, Syslog, Deploy, Ldap)
- Sistemi di monitoring (Nagios, Munin)
# Base node
node basenode {
    $dns_servers = ["192.168.39.42","192.168.39.43"]
    $syslog_server = "syslog-1.pgol.com"
    $type = "prod" # We assume that most of nodes are of prod(ution) type.
    $users_auth = "ldap" # By default we want ldap auth
[...]
}

# Rozzano Production site
node rozzano inherits basenode {
    $site = "rozzano"
    $ntp_server = ["ntp1.pgol.com","ntp2.pgol.com"]
}

node rozzano-dmz inherits rozzano {
    $zone = "dmz"
    $users_auth = "local" # No ldap auth for users in DMZ servers
}

node rozzano-erog inherits rozzano {
    $zone = "erog"
}

# Disaster recovery Site
node dr inherits basenode {
    $site = "dr"
    $dns_servers = ["192.168.50.10","192.168.50.11"]
[...]
# FRONTEND BIANCO                            # CLUSTER CASSANDRA DEV
node 'fep-pbit-1' inherits rozzano-erog {    node 'dev-cassandra-1b' inherits rozzano-
    include role_fep-pbit                    erog {
}                                            !     $type = "dev"
                                             !     include role_cassandra
node 'fep-pbit-2' inherits rozzano-erog {    }
    include role_fep-pbit                    [...]
}
                                             # CLUSTER CASSANDRA TEST
[...]                                        node 'test-cassandra-1' inherits rozzano-
                                             erog {
node 'test-pbit-1' inherits rozzano-erog {   !     $type = "test"
    $type = "test"                           !     include role_cassandra
    include role_fep-pbit                    }
}                                            [...]


[...]                                        # CLUSTER CASSANDRA PROD
                                             node 'cassandra-1' inherits rozzano-erog {
                                             !     include role_cassandra
                                             }

                                             [...]

                                             node 'cassandra-5' inherits rozzano-erog {
                                             !     $has_batch = "true"
                                             !     include role_cassandra
                                             }
class general {
    include distro
    include profile
    include puppet
    include motd
    include users
    include openssh
    include hosts
    include resolver
    include monit
    include sudo
    include snmpd
    include nrpe
    include munin
    include rsync
    include basedirs

    case $operatingsystem {
        ubuntu,debian: {
        # Moduli attualmente funzionanti solo su Ubuntu/Debian
            include exim
            include openntpd
            include apt
            include rsyslog
            include unattended-upgrades
            include hardware
    }
        centos,redhat: {
            include yum
        }
        default: { }
    }
}
class role_fep-pbit {
    $role="fep-pbit"

    include general
    include nfs::client::fep-pbit

    include apache
    include apache::seat::fep-pbit
    include php::pear
    include php::dev
    include php::oci8
    include apache::spidertrap
    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" }
    [...]

    # Monitoring
    include monitor::seat::url_fep-pbit

    # Deploy
    puppi::project::files { "fep-pbit":
        source           => "http://deploy.${domain}/fep-pbit/deploylist.txt",
        [...]
    }
}
class apache::monitor {

    # Port monitoring
    monitor::port { "apache_${apache::params::protocol}_${apache::params::port}":
        protocol => "${apache::params::protocol}",
        port     => "${apache::params::port}",
        target   => "${apache::params::monitor_target_real}",
        enable   => "${apache::params::monitor_port_enable}",
        tool     => "${monitor_tool}",
    }

    # Process monitoring
    monitor::process { "apache_process":
        process => "${apache::params::processname}",
        service => "${apache::params::servicename}",
        pidfile => "${apache::params::pidfile}",
        enable   => "${apache::params::monitor_process_enable}",
        tool     => "${monitor_tool}",
    }

    [...]

}
$monitor="yes"
$monitor_tool=["monit","nagios","puppi",”munin”]
class monitor::seat::url_fep-pbit {

# 1240
    monitor::url { "Url-1240_PREFFISSI_INTERNAZIONALI":
        url      => "http://1240.paginebianche.it/execute.cgi?
ts=9&cb=18&btt=1&nz=CANADA&l=it",
        port     => '80',
        target   => "${fqdn}",
        pattern => '01139',
        enable   => "true",
        tool     => "${monitor_tool}",
    }

    monitor::url { "Url-1240_RICERCA_LOCALITA_E_CAP_PER_PREFISSO":
        url      => "http://1240.paginebianche.it/execute.cgi?
ts=19&cb=18&btt=1&prefisso=0744&l=it",
        port     => '80',
        target   => "${fqdn}",
        pattern => 'Terni',
        enable   => "true",
        tool     => "${monitor_tool}",
    }
    [...]

}
root@fep-pbit-1:~# puppi check
Host check: 50-Url-1240_PREFFISSI_INTERNAZIONALI           [ OK ]
HTTP OK: HTTP/1.1 200 OK - 25285 bytes in 0.193 second response time |time=0.192856s;;;
0.000000 size=25285B;;;0

Host check: 50-Url-1240_RICERCA_LOCALITA_E_CAP_PER_PREFISSO[ OK ]
HTTP OK: HTTP/1.1 200 OK - 12417 bytes in 0.071 second response time |time=0.070648s;;;
0.000000 size=12417B;;;0

Host check: 50-Url-1240_RICERCA_LOCALITA_PER_CAP           [ OK ]
HTTP OK: HTTP/1.1 200 OK - 12641 bytes in 0.048 second response time |time=0.048381s;;;
0.000000 size=12641B;;;0

[...]

Host check: 50-Mount__store_www.paginebianche.it_doc_root_g[ OK ]
/store/www.paginebianche.it/doc_root/gclight is mounted! Type is nfs

Host check: 50-apache_process                              [   OK   ]
PROCS OK: 540 processes with command name 'apache2'

Host check: 50-apache_tcp_80                               [ OK ]
TCP OK - 0.000 second response time on port 80|time=0.000250s;;;0.000000;10.000000

Host check: 50-openssh_process                             [   OK   ]
PROCS OK: 3 processes with command name 'sshd'

Host check: 50-openssh_tcp_22                              [ OK ]
TCP OK - 0.000 second response time on port 22|time=0.000151s;;;0.000000;10.000000
root@metaportali-mpc:~# puppi deploy configurator
Puppi setup: 00-configurator-RuntimeConfig-Initialization   [   OK   ]

Deploy: 10-configurator-Run_PRE-Checks                      [   OK   ]
[...]
Deploy: 20-configurator-Retrieve_WAR                        [   OK   ]

Deploy: 30-configurator-Backup_existing_WAR                 [   OK   ]

Deploy: 36-configurator-Disable_extra_services              [   OK   ]
[...]
Deploy: 37-configurator-Check_undeploy                      [   OK   ]

Deploy: 38-configurator-Service_stop                        [   OK   ]
[...]
Deploy: 39-configurator-Run_Custom_PreDeploy_Script         [   OK   ]

Deploy: 40-configurator-Deploy_WAR                          [   OK   ]

Deploy: 42-configurator-Service_start                       [   OK   ]
[...]
Deploy: 43-configurator-Check_deploy                        [   OK   ]

Deploy: 44-configurator-Enable_extra_services               [   OK   ]
[...]
Deploy: 80-configurator-Run_POST-Checks                     [   OK   ]
[...]
Reporting: 20-configurator-Mail_Notification                [   OK   ]

REPORT FOR PUPPI - STATUS OK
Summary of operations is: /var/log/puppi/configurator/20110303-145104/summary
Details are in: /var/log/puppi/configurator/20110303-145104/
Temporary workdir has been: /tmp/puppi/configurator/ (Will be rewritten at the next puppi run)
Runtime config file is: /tmp/puppi/configurator/config
Files have been archived in: /var/lib/puppi/archive/configurator/20110303-145104
root@fep-pbit-1:~# puppi rollback fep-pbit
Puppi setup: 00-fep-pbit-RuntimeConfig-Initialization            [   OK   ]



Choose deploy to rollback:
total 24
drwxr-xr-x 2 root root 4096   2011-02-17   17:25   20110217-172418
drwxr-xr-x 2 root root 4096   2011-02-24   17:18   20110224-171656
drwxr-xr-x 2 root root 4096   2011-02-28   16:54   20110228-165323
drwxr-xr-x 2 root root 4096   2011-03-01   17:01   20110301-170009
drwxr-xr-x 2 root root 4096   2011-03-01   17:13   20110301-171339
drwxr-xr-x 2 root root 4096   2011-03-01   17:16   20110301-171607
lrwxrwxrwx 1 root root   47   2011-03-01   17:16   latest -> /var/lib/puppi/archive/fep-pbit/
20110301-171607

[...]
class role_mpc-metaportale {
    $role="mpc-metaportale"
[...]

    puppi::project::war { "configurator":
        source           => "http://deploy.pgol.com/mpc-metaportale/configurator.war",
        user             => "www-data",
        init_script      => "tomcat-mpc",
        predeploy_customcommand => "rm -rf /store/tomcat/mpc/webapps/*",
        predeploy_user   => "root",
        predeploy_priority => "39",
        deploy_root      => "/store/tomcat/mpc/webapps",
        report_email     => "release_engineering@seat.it,webdesign@paginegialle.it",
        enable           => "true",
        disable_services => "monit puppet",
    }
                                       root@metaportali-mpc:~# puppi deploy configurator
}                                      Puppi setup: 00-configurator-RuntimeConfig-Initialization   [   OK   ]

                                       Deploy: 10-configurator-Run_PRE-Checks                      [   OK   ]
                                       [...]
                                       Deploy: 20-configurator-Retrieve_WAR                        [   OK   ]

                                       Deploy: 30-configurator-Backup_existing_WAR                 [   OK   ]

                                       Deploy: 36-configurator-Disable_extra_services              [   OK   ]
                                       [...]
                                       Deploy: 37-configurator-Check_undeploy                      [   OK   ]

                                       Deploy: 38-configurator-Service_stop                        [   OK   ]
                                       [...]
                                       Deploy: 39-configurator-Run_Custom_PreDeploy_Script         [   OK   ]

                                       Deploy: 40-configurator-Deploy_WAR                          [   OK   ]

                                       Deploy: 42-configurator-Service_start                       [   OK   ]
                                       [...]
                                       Deploy: 43-configurator-Check_deploy                        [   OK   ]

                                       Deploy: 44-configurator-Enable_extra_services               [   OK   ]
                                       [...]
                                       Deploy: 80-configurator-Run_POST-Checks                     [   OK   ]
                                       [...]
                                       Reporting: 20-configurator-Mail_Notification                [   OK   ]

                                       REPORT FOR PUPPI - STATUS OK
                                       Summary of operations is: /var/log/puppi/configurator/20110303-145104/summary
                                       [...]
Faster Setups
                      Do ut des                    Tested code
Quick Scalability                             Url based checks
Deployment Agility                    Site Aware configurations
Testing Environment               Standardized deploy requests
In medio stat virtus
 Share needs, constraints, knowledge and skills
Hic
manebimus
 optime
 Cooperation is fun
Full Infrastructure Automation
Unified Infrastructure Reporting   Per aspera ad astra
Self Service Release Management
AutoTesting Release Workflow




                                         Add here your wildest (IT) dream...
ad maiora




            Graphics: www.tatlin.net

Weitere ähnliche Inhalte

Was ist angesagt?

Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet
 

Was ist angesagt? (20)

Doing It Wrong with Puppet -
Doing It Wrong with Puppet - Doing It Wrong with Puppet -
Doing It Wrong with Puppet -
 
Puppet control-repo 
to the next level
Puppet control-repo 
to the next levelPuppet control-repo 
to the next level
Puppet control-repo 
to the next level
 
Puppet: From 0 to 100 in 30 minutes
Puppet: From 0 to 100 in 30 minutesPuppet: From 0 to 100 in 30 minutes
Puppet: From 0 to 100 in 30 minutes
 
Intro to-puppet
Intro to-puppetIntro to-puppet
Intro to-puppet
 
Troubleshooting Puppet
Troubleshooting PuppetTroubleshooting Puppet
Troubleshooting Puppet
 
How to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksHow to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero Clicks
 
Essential applications management with Tiny Puppet
Essential applications management with Tiny PuppetEssential applications management with Tiny Puppet
Essential applications management with Tiny Puppet
 
Replacing "exec" with a type and provider: Return manifests to a declarative ...
Replacing "exec" with a type and provider: Return manifests to a declarative ...Replacing "exec" with a type and provider: Return manifests to a declarative ...
Replacing "exec" with a type and provider: Return manifests to a declarative ...
 
Configuration Surgery with Augeas
Configuration Surgery with AugeasConfiguration Surgery with Augeas
Configuration Surgery with Augeas
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Spl in the wild
Spl in the wildSpl in the wild
Spl in the wild
 
Puppet fundamentals
Puppet fundamentalsPuppet fundamentals
Puppet fundamentals
 
Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)
 
Puppet loves RSpec, why you should, too
Puppet loves RSpec, why you should, tooPuppet loves RSpec, why you should, too
Puppet loves RSpec, why you should, too
 
Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014
 
Building Custom PHP Extensions
Building Custom PHP ExtensionsBuilding Custom PHP Extensions
Building Custom PHP Extensions
 
Puppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet Module Reusability - What I Learned from Shipping to the Forge
Puppet Module Reusability - What I Learned from Shipping to the Forge
 
PuppetCamp SEA 1 - Puppet Deployment at OnApp
PuppetCamp SEA 1 - Puppet Deployment  at OnAppPuppetCamp SEA 1 - Puppet Deployment  at OnApp
PuppetCamp SEA 1 - Puppet Deployment at OnApp
 
Puppet modules: An Holistic Approach
Puppet modules: An Holistic ApproachPuppet modules: An Holistic Approach
Puppet modules: An Holistic Approach
 
PL/Perl - New Features in PostgreSQL 9.0
PL/Perl - New Features in PostgreSQL 9.0PL/Perl - New Features in PostgreSQL 9.0
PL/Perl - New Features in PostgreSQL 9.0
 

Ähnlich wie Puppet @ Seat

Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012
Carlos Sanchez
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
Carlos Sanchez
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
Carlos Sanchez
 
Linuxday.at - Lightning Talk
Linuxday.at - Lightning TalkLinuxday.at - Lightning Talk
Linuxday.at - Lightning Talk
Jan Gehring
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Carlos Sanchez
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag
garrett honeycutt
 
Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013
Simon McCartney
 

Ähnlich wie Puppet @ Seat (20)

Stanford Hackathon - Puppet Modules
Stanford Hackathon - Puppet ModulesStanford Hackathon - Puppet Modules
Stanford Hackathon - Puppet Modules
 
Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012
 
Puppet and the HashiStack
Puppet and the HashiStackPuppet and the HashiStack
Puppet and the HashiStack
 
Puppet
PuppetPuppet
Puppet
 
Puppet
PuppetPuppet
Puppet
 
Writing and Publishing Puppet Modules - PuppetConf 2014
Writing and Publishing Puppet Modules - PuppetConf 2014Writing and Publishing Puppet Modules - PuppetConf 2014
Writing and Publishing Puppet Modules - PuppetConf 2014
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
 
Puppet Camp 2012
Puppet Camp 2012Puppet Camp 2012
Puppet Camp 2012
 
EC2
EC2EC2
EC2
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
 
Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013
 
Linuxday.at - Lightning Talk
Linuxday.at - Lightning TalkLinuxday.at - Lightning Talk
Linuxday.at - Lightning Talk
 
Ubic
UbicUbic
Ubic
 
Ubic-public
Ubic-publicUbic-public
Ubic-public
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOps
 
infra-as-code
infra-as-codeinfra-as-code
infra-as-code
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag
 
Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013Stack kicker devopsdays-london-2013
Stack kicker devopsdays-london-2013
 
Puppet: What _not_ to do
Puppet: What _not_ to doPuppet: What _not_ to do
Puppet: What _not_ to do
 

Mehr von Alessandro Franceschi

Mehr von Alessandro Franceschi (12)

Strategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringStrategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoring
 
DevOps - Evoluzione della specie - DevOps Heroes.pdf
DevOps - Evoluzione della specie - DevOps Heroes.pdfDevOps - Evoluzione della specie - DevOps Heroes.pdf
DevOps - Evoluzione della specie - DevOps Heroes.pdf
 
Tiny Puppet Can Install Everything. Prove me wrong!
Tiny Puppet Can Install Everything. Prove me wrong!Tiny Puppet Can Install Everything. Prove me wrong!
Tiny Puppet Can Install Everything. Prove me wrong!
 
Ten years of [Puppet] installations. What now?
Ten years of [Puppet] installations. What now?Ten years of [Puppet] installations. What now?
Ten years of [Puppet] installations. What now?
 
Puppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitPuppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction Kit
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
Tp install anything
Tp install anythingTp install anything
Tp install anything
 
Puppet evolutions
Puppet evolutionsPuppet evolutions
Puppet evolutions
 
Raise the bar! Reloaded
Raise the bar! ReloadedRaise the bar! Reloaded
Raise the bar! Reloaded
 
Raise the bar!
Raise the bar!Raise the bar!
Raise the bar!
 
Developing IT infrastructures with Puppet
Developing IT infrastructures with PuppetDeveloping IT infrastructures with Puppet
Developing IT infrastructures with Puppet
 
Spaghetti devops
Spaghetti devopsSpaghetti devops
Spaghetti devops
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 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
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Puppet @ Seat

  • 1. Seat Internet Factory Tech Talk 5
  • 2.
  • 3. Tempus fugit Setup. Configure. Deploy. Troubleshoot. Fix.
  • 4. Panta rei Emails. Tickets. Calls. Meetings.
  • 8. Alea iacta est Hope driven release management.
  • 9. Devs Versus Ops D: Can you copy /ldap/dritchie/spes.war to prod? O: Open a Ticket.
  • 10. O tempora o mores! Big efforts for small outputs
  • 11. Spes ultima dea Have you heard about this Puppet thing?
  • 12.
  • 15. Cui prodest? Source: www.puppetlabs.com
  • 16. Divide et impera Many Puppet nodes One Puppet Master
  • 17. package { 'openssh-server': Status Quo } ensure => present, before => File['/etc/ssh/sshd_config'], “A declarative language to describe file { '/etc/ssh/sshd_config': system status” 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 puppet apply
  • 19. Deus Ex Machina # This File is Managed by Puppet
  • 20. 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 sum d7fbc1695489ce896d30b7b04d72887c notice: //test/File[/etc/resolv.conf]/content: content changed '{md5} d7fbc1695489ce896d30b7b04d72887c' to '{md5} 958836dd057fdbb33597d688cc6d28a2'
  • 23. Scripta manent, verba volant svn ci -m “Ticket #777”
  • 24. Factotum P: I manage. Almost everything.
  • 25. Ignorantia legis non excusat Once you Puppettize, you Puppettize
  • 26.
  • 27. Sperimentazione iniziata nel 2010 Implementazione sistematica su nuovi server da Ottobre 2010 Conversione / Upgrade sistemi esistenti in corso. Produzione a Rozzano - Sistemi gestiti: 167 (growing): - Pagine Bianche - Banners - E-Commerce, Scioppy - Tools PL, Iglu, Spysite, Routing, Fotocontest, Iglu ... - Sistemi infrastrutturali (Dns, Syslog, Deploy, Ldap (soon) ) - Sistemi di monitoring (Nagios, Munin) Disaster Recovery - Sistemi gestiti: 34: - Pagine Gialle (Intera filiera) - Sistemi infrastrutturali (Dns, Syslog, Deploy, Ldap) - Sistemi di monitoring (Nagios, Munin)
  • 28. # Base node node basenode { $dns_servers = ["192.168.39.42","192.168.39.43"] $syslog_server = "syslog-1.pgol.com" $type = "prod" # We assume that most of nodes are of prod(ution) type. $users_auth = "ldap" # By default we want ldap auth [...] } # Rozzano Production site node rozzano inherits basenode { $site = "rozzano" $ntp_server = ["ntp1.pgol.com","ntp2.pgol.com"] } node rozzano-dmz inherits rozzano { $zone = "dmz" $users_auth = "local" # No ldap auth for users in DMZ servers } node rozzano-erog inherits rozzano { $zone = "erog" } # Disaster recovery Site node dr inherits basenode { $site = "dr" $dns_servers = ["192.168.50.10","192.168.50.11"] [...]
  • 29. # FRONTEND BIANCO # CLUSTER CASSANDRA DEV node 'fep-pbit-1' inherits rozzano-erog { node 'dev-cassandra-1b' inherits rozzano- include role_fep-pbit erog { } ! $type = "dev" ! include role_cassandra node 'fep-pbit-2' inherits rozzano-erog { } include role_fep-pbit [...] } # CLUSTER CASSANDRA TEST [...] node 'test-cassandra-1' inherits rozzano- erog { node 'test-pbit-1' inherits rozzano-erog { ! $type = "test" $type = "test" ! include role_cassandra include role_fep-pbit } } [...] [...] # CLUSTER CASSANDRA PROD node 'cassandra-1' inherits rozzano-erog { ! include role_cassandra } [...] node 'cassandra-5' inherits rozzano-erog { ! $has_batch = "true" ! include role_cassandra }
  • 30. class general { include distro include profile include puppet include motd include users include openssh include hosts include resolver include monit include sudo include snmpd include nrpe include munin include rsync include basedirs case $operatingsystem { ubuntu,debian: { # Moduli attualmente funzionanti solo su Ubuntu/Debian include exim include openntpd include apt include rsyslog include unattended-upgrades include hardware } centos,redhat: { include yum } default: { } } }
  • 31. class role_fep-pbit { $role="fep-pbit" include general include nfs::client::fep-pbit include apache include apache::seat::fep-pbit include php::pear include php::dev include php::oci8 include apache::spidertrap 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" } [...] # Monitoring include monitor::seat::url_fep-pbit # Deploy puppi::project::files { "fep-pbit": source => "http://deploy.${domain}/fep-pbit/deploylist.txt", [...] } }
  • 32. class apache::monitor { # Port monitoring monitor::port { "apache_${apache::params::protocol}_${apache::params::port}": protocol => "${apache::params::protocol}", port => "${apache::params::port}", target => "${apache::params::monitor_target_real}", enable => "${apache::params::monitor_port_enable}", tool => "${monitor_tool}", } # Process monitoring monitor::process { "apache_process": process => "${apache::params::processname}", service => "${apache::params::servicename}", pidfile => "${apache::params::pidfile}", enable => "${apache::params::monitor_process_enable}", tool => "${monitor_tool}", } [...] }
  • 34. class monitor::seat::url_fep-pbit { # 1240 monitor::url { "Url-1240_PREFFISSI_INTERNAZIONALI": url => "http://1240.paginebianche.it/execute.cgi? ts=9&cb=18&btt=1&nz=CANADA&l=it", port => '80', target => "${fqdn}", pattern => '01139', enable => "true", tool => "${monitor_tool}", } monitor::url { "Url-1240_RICERCA_LOCALITA_E_CAP_PER_PREFISSO": url => "http://1240.paginebianche.it/execute.cgi? ts=19&cb=18&btt=1&prefisso=0744&l=it", port => '80', target => "${fqdn}", pattern => 'Terni', enable => "true", tool => "${monitor_tool}", } [...] }
  • 35.
  • 36. root@fep-pbit-1:~# puppi check Host check: 50-Url-1240_PREFFISSI_INTERNAZIONALI [ OK ] HTTP OK: HTTP/1.1 200 OK - 25285 bytes in 0.193 second response time |time=0.192856s;;; 0.000000 size=25285B;;;0 Host check: 50-Url-1240_RICERCA_LOCALITA_E_CAP_PER_PREFISSO[ OK ] HTTP OK: HTTP/1.1 200 OK - 12417 bytes in 0.071 second response time |time=0.070648s;;; 0.000000 size=12417B;;;0 Host check: 50-Url-1240_RICERCA_LOCALITA_PER_CAP [ OK ] HTTP OK: HTTP/1.1 200 OK - 12641 bytes in 0.048 second response time |time=0.048381s;;; 0.000000 size=12641B;;;0 [...] Host check: 50-Mount__store_www.paginebianche.it_doc_root_g[ OK ] /store/www.paginebianche.it/doc_root/gclight is mounted! Type is nfs Host check: 50-apache_process [ OK ] PROCS OK: 540 processes with command name 'apache2' Host check: 50-apache_tcp_80 [ OK ] TCP OK - 0.000 second response time on port 80|time=0.000250s;;;0.000000;10.000000 Host check: 50-openssh_process [ OK ] PROCS OK: 3 processes with command name 'sshd' Host check: 50-openssh_tcp_22 [ OK ] TCP OK - 0.000 second response time on port 22|time=0.000151s;;;0.000000;10.000000
  • 37. root@metaportali-mpc:~# puppi deploy configurator Puppi setup: 00-configurator-RuntimeConfig-Initialization [ OK ] Deploy: 10-configurator-Run_PRE-Checks [ OK ] [...] Deploy: 20-configurator-Retrieve_WAR [ OK ] Deploy: 30-configurator-Backup_existing_WAR [ OK ] Deploy: 36-configurator-Disable_extra_services [ OK ] [...] Deploy: 37-configurator-Check_undeploy [ OK ] Deploy: 38-configurator-Service_stop [ OK ] [...] Deploy: 39-configurator-Run_Custom_PreDeploy_Script [ OK ] Deploy: 40-configurator-Deploy_WAR [ OK ] Deploy: 42-configurator-Service_start [ OK ] [...] Deploy: 43-configurator-Check_deploy [ OK ] Deploy: 44-configurator-Enable_extra_services [ OK ] [...] Deploy: 80-configurator-Run_POST-Checks [ OK ] [...] Reporting: 20-configurator-Mail_Notification [ OK ] REPORT FOR PUPPI - STATUS OK Summary of operations is: /var/log/puppi/configurator/20110303-145104/summary Details are in: /var/log/puppi/configurator/20110303-145104/ Temporary workdir has been: /tmp/puppi/configurator/ (Will be rewritten at the next puppi run) Runtime config file is: /tmp/puppi/configurator/config Files have been archived in: /var/lib/puppi/archive/configurator/20110303-145104
  • 38. root@fep-pbit-1:~# puppi rollback fep-pbit Puppi setup: 00-fep-pbit-RuntimeConfig-Initialization [ OK ] Choose deploy to rollback: total 24 drwxr-xr-x 2 root root 4096 2011-02-17 17:25 20110217-172418 drwxr-xr-x 2 root root 4096 2011-02-24 17:18 20110224-171656 drwxr-xr-x 2 root root 4096 2011-02-28 16:54 20110228-165323 drwxr-xr-x 2 root root 4096 2011-03-01 17:01 20110301-170009 drwxr-xr-x 2 root root 4096 2011-03-01 17:13 20110301-171339 drwxr-xr-x 2 root root 4096 2011-03-01 17:16 20110301-171607 lrwxrwxrwx 1 root root 47 2011-03-01 17:16 latest -> /var/lib/puppi/archive/fep-pbit/ 20110301-171607 [...]
  • 39. class role_mpc-metaportale { $role="mpc-metaportale" [...] puppi::project::war { "configurator": source => "http://deploy.pgol.com/mpc-metaportale/configurator.war", user => "www-data", init_script => "tomcat-mpc", predeploy_customcommand => "rm -rf /store/tomcat/mpc/webapps/*", predeploy_user => "root", predeploy_priority => "39", deploy_root => "/store/tomcat/mpc/webapps", report_email => "release_engineering@seat.it,webdesign@paginegialle.it", enable => "true", disable_services => "monit puppet", } root@metaportali-mpc:~# puppi deploy configurator } Puppi setup: 00-configurator-RuntimeConfig-Initialization [ OK ] Deploy: 10-configurator-Run_PRE-Checks [ OK ] [...] Deploy: 20-configurator-Retrieve_WAR [ OK ] Deploy: 30-configurator-Backup_existing_WAR [ OK ] Deploy: 36-configurator-Disable_extra_services [ OK ] [...] Deploy: 37-configurator-Check_undeploy [ OK ] Deploy: 38-configurator-Service_stop [ OK ] [...] Deploy: 39-configurator-Run_Custom_PreDeploy_Script [ OK ] Deploy: 40-configurator-Deploy_WAR [ OK ] Deploy: 42-configurator-Service_start [ OK ] [...] Deploy: 43-configurator-Check_deploy [ OK ] Deploy: 44-configurator-Enable_extra_services [ OK ] [...] Deploy: 80-configurator-Run_POST-Checks [ OK ] [...] Reporting: 20-configurator-Mail_Notification [ OK ] REPORT FOR PUPPI - STATUS OK Summary of operations is: /var/log/puppi/configurator/20110303-145104/summary [...]
  • 40.
  • 41. Faster Setups Do ut des Tested code Quick Scalability Url based checks Deployment Agility Site Aware configurations Testing Environment Standardized deploy requests
  • 42. In medio stat virtus Share needs, constraints, knowledge and skills
  • 44. Full Infrastructure Automation Unified Infrastructure Reporting Per aspera ad astra Self Service Release Management AutoTesting Release Workflow Add here your wildest (IT) dream...
  • 45. ad maiora Graphics: www.tatlin.net