MetaCentrum1 Puppet Pavel Vondruška
MetaCentrum2 Puppet Nástroj na správu operačních systémů Napsáno v Ruby Linux, BSD, Unix (Mac, Solaris, AIX, HP-UX), Windows :) Klient (agent) - server (master) Pull (defaultně si stahuje každou půlhodinu) Živý projekt Dost bugů a security issues Nové verze
MetaCentrum3 Use cases Kopírování souborů Instalace balíků Správa služeb Spouštění příkazů Úprava konfigů Správa cronjobů, uživatelů, skupin,... Další vestavěná správa konfigů (/etc/hosts, fstab,.k5login,...)
MetaCentrum4 Kopírování souborů Přímá kopie (třeba krb5.conf) Z templatu a doplní se proměnnými (třeba /etc/hosts - IP, krátké a dlouhé jméno) Symlinky, adresáře, rekurzivně Nastavení práv, hloubky rekurze,... Možnost zálohování všech verzí souboru lokálně nebo na server
MetaCentrum5 Kopírování souborů file { "/etc/rsyslog.d/meta-remote.conf": owner => "root", group => "root", mode => 644, require => Class["rsyslog::install"], notify => Service["rsyslog"], source => "puppet:///modules/rsyslog/meta-remote.conf", }
MetaCentrum6 Instalace balíků Install, remove, purge Pro Debian apt-get nebo dpkg Nejnovější verze, jakákoliv, konkrétní Responsefile, "--force-confnew",...
MetaCentrum7 Instalace balíků $packages = $lsbmajdistrelease ? { 5 => "rsyslog", 6 => ["rsyslog", "rsyslog-gssapi"] } package { $packages: ensure => latest, configfiles => "replace"; }
MetaCentrum8 Správa služeb Zapnutá, vypnutá, povolená, zakázaná Dá se elegantně použít k restartu při změně konfiguráku
MetaCentrum9 Správa služeb service { "rsyslog": ensure => "running", enable => "true", require => Class["rsyslog::install"], }
MetaCentrum10 Spouštění příkazů Nutno něčím omezit, jinak se příkaz spustí při každém běhu agenta o onlyif (příkaz) => když vrátí true o unless => v případě false o refreshonly => když na něj něco ukáže o creates => test na přitomnost souboru
MetaCentrum11 Spouštění příkazů exec { "tar -xf /Volumes/nfs02/important.tar": creates => "/var/tmp/myfile", path=> ["/usr/bin", "/usr/sbin"] } exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt " }
MetaCentrum12 Správa Cronjobů cron { logrotate: command => "/usr/sbin/logrotate", user => root, hour => 2, minute => 0 }
MetaCentrum13 Správa Cronjobů minos48:~# crontab -l # HEADER: This file was autogenerated at Tue Sep 04 12:07: by puppet. # HEADER: While it can still be managed manually, it is definitely not recommended. # HEADER: Note particularly that the comments starting with 'Puppet Name' should # HEADER: not be deleted, as doing so could cause duplicate cron jobs. # Puppet Name: logrotate 0 2 * * * /usr/sbin/logrotate
MetaCentrum14 Správa /etc/hosts host { 'dashboard': ip => ' ', host_aliases => [ 'nagios', 'munin' ], }
MetaCentrum15 Správa /etc/hosts # HEADER: This file was autogenerated at Tue Sep 04 12:21: # HEADER: by puppet. While it can still be managed manually, it # HEADER: is definitely not recommended dashboard nagios munin
MetaCentrum16 Správa uživatelů user { 'daemon': home => '/sbin', password_min_age => '0', ensure => 'present', uid => '2', shell => '/sbin/nologin', password_max_age => '99999', password => '*', gid => '2', groups => ['bin','daemon','adm','lp'], comment => 'daemon' }
MetaCentrum17 Úprava konfigů Augeas augeas { "sshd_HostbasedAuthentication": context => "/files/etc/ssh/sshd_config", changes => [ "set HostbasedAuthentication yes", "set IgnoreUserKnownHosts yes", "set IgnoreRhosts yes" ], }
MetaCentrum18 Děkuji za pozornost!