Data Center Automation mit Puppet Thomas Eisenbarth makandra GmbH May 24, 2012
Agenda makandra Administration: Status quo Configuration Management (CM) mit Puppet Cloud-Computing & CM Demo 2 of 27
makandra GmbH 2009 gegründet, Sitz hier im aiti-park 16 Leute SE-Projekte Ruby on Rails Operations 3 of 27
makandra GmbH 2009 gegründet, Sitz hier im aiti-park 16 Leute SE-Projekte Ruby on Rails Operations Linux, FreeBSD Apache, nginx, Passenger MySQL, Solr, memcached Amazon AWS & physikalische Maschinen 3 of 27
Status quo: Admin-Dokumentation Web servers 1. Installiere FreeBSD 8.2 für Web-Server 2. Alle Admins müssen Zugriff haben 3. Installiere nginx-1.1.14 (SSL und ipv6 anschalten!) 4. gnutls wird als Library benötigt (http://www.gnu.org/software/gnutls/) 5. Konfiguriere ein Interface auf dem privaten VLAN für Kommunikation mit Appservern 6.... 4 of 27
Alle Admins müssen Zugriff haben Installiere OpenSSH Lege Unix-Benutzer an Alice Bob Charlie Alice, Bob, Charlie Gruppe admins Gruppe admins darf sudo 5 of 27
Make sure all admins have access Installiere OpenSSH Abhängig vom Zielsystem pkg add, apt-get, yum, Sourcen,... Dienst muss starten root-login soll nicht möglich sein (sshd config) Nur PubKey-Authentifizierung soll erlaubt sein, Passwort nicht! Lege Benutzer an: Alice, Bob, Charlie Setze default-shell auf bash, kopiere.bashrc Kopiere.authorized keys zum Login 6 of 27
1 Jahr später... 1. Alice hat gestern das Unternehmen verlassen 2. Bob hat heute seinen Key auf einem USB-Stick verloren 3. Charlie hat sein Kennwort vergessen 7 of 27
1 Jahr später... 1. Alice hat gestern das Unternehmen verlassen 2. Bob hat heute seinen Key auf einem USB-Stick verloren 3. Charlie hat sein Kennwort vergessen Auf allen Maschinen einloggen, Abschalten von Alice Account, Kopieren des neuen Public Keys von Bob, Ändern des Kennworts 7 of 27
1 Jahr später... 1. Alice hat gestern das Unternehmen verlassen 2. Bob hat heute seinen Key auf einem USB-Stick verloren 3. Charlie hat sein Kennwort vergessen Auf allen Maschinen einloggen, Abschalten von Alice Account, Kopieren des neuen Public Keys von Bob, Ändern des Kennworts 4. Morgen kommt ein neuer ins Admin-Team und benötigt einen Account Auf allen Maschinen einloggen... 7 of 27
Manuelles Ausführen Kommandos auf vielen Rechnern...... ist langweilig und macht keinen Spass... skaliert nicht... ist langsam und fehleranfällig... hinterlässt oft Test-Konfiguration ( Einzelkunstwerk!) 9 of 27
Manuelles Ausführen Kommandos auf vielen Rechnern...... ist langweilig und macht keinen Spass... skaliert nicht... ist langsam und fehleranfällig... hinterlässt oft Test-Konfiguration ( Einzelkunstwerk!) Was tun? Puppet Chef CFengine... 9 of 27
Was ist Puppet? Data Center Automation Tool Konfigurationsmanagement zentrale Konfiguration für verteilte Systeme Deklarative, modellhafte Sprache 10 of 27
Was kann Puppet? Verwaltung von... Benutzer- & Gruppen Software / Paket- & Servicemanagement Dateien, Ordner, Cronjobs 11 of 27
Was kann Puppet? Verwaltung von... Benutzer- & Gruppen Software / Paket- & Servicemanagement Dateien, Ordner, Cronjobs 11 of 27
Was kann Puppet? Support für... Red Hat Enterprise Linux, version 4 and higher CentOS, version 4 and higher Scientific Linux, version 4 and higher Oracle Linux, version 4 and higher Debian, version 5 (Lenny) and higher Ubuntu, version 8.04 LTS and higher Fedora, version 15 and higher SUSE Linux Enterprise Server, version 11 and higher Gentoo Linux Mandriva Corporate Server 4 ArchLinux FreeBSD 4.7 and later OpenBSD 4.1 and later Mac OS X, version 10.4 (Tiger) and higher Oracle Solaris, version 10 and higher AIX, version 5.3 and higher HP-UX Windows Server 2003 and 2008 (Puppet version 2.7.6 and higher) Windows 7 (Puppet version 2.7.6 and higher) 12 of 27
Puppet-Kommunikation: Client-Server-Setup Slaves wissen um ihre Rollen, z.b. Web App DB Slaves melden sich periodisch beim Puppetmaster Puppetmaster übergibt Slaves den gewünschten Zustand ihrer Konfiguration 13 of 27
Puppet: Funktionsweise Puppet-DSL ist Deklarativ Modellhaft, überschreibt lokale Änderungen 14 of 27
Puppet: Package & File-Handling node test1.example.com { package { openssh-server : ensure => installed, } file { /etc/ssh/sshd_config : source => puppet:///modules/sshd/sshd_config, owner => root, group => root, mode => 640, notify => Service[ sshd ], require => Package[ openssh-server ], } } 15 of 27
Puppet: Node-Konfiguration node www.testing.com, www2.testing.com { include common include apache, squid } node www2.testing.com inherits www.testing.com { include loadbalancer } node db.testing.com { include common include mysql } 16 of 27
Puppet: Benutzerverwaltung user { "dude": ensure => present, uid => 507, gid => admin, shell => /bin/zsh, home => /home/dude, managehome => true, } 17 of 27
Vorteile Einmalige, zentrale, gültige Definition Weitestgehend unabhängig vom Zielsystem Versionskontrolle Automatisierung Skalierung 18 of 27
Was ist die Cloud eigentlich? SaaS Dropbox Salesforce 20 of 27
Was ist die Cloud eigentlich? SaaS Dropbox Salesforce PaaS Google App Engine Salesforce force.com EngineYard Heroku 20 of 27
Was ist die Cloud eigentlich? SaaS Dropbox Salesforce PaaS Google App Engine Salesforce force.com EngineYard Heroku IaaS Amazon AWS Rackspace Microsoft Azure Rightscale 20 of 27
Was hat das mit CM zu tun? Auto-Scaling bei wechselnder Last Für komplexe Berechnungen oder bei Traffic tagsüber Resourcen dazuschalten Nachts / bei nicht-verwendung abschalten Scaling bei erfolgreichen Seiten / Slashdot-Effekt Schnelles Neu-Aufsetzen bei Fehlern Amazon garantiert bei EC2 für quasi nichts Im Fehlerfall sollte es schnell gehen 21 of 27
Auto scaling: Traffic am DE-CIX 22 of 27
Auto scaling: Traffic am AMS-IX 23 of 27
Demo AWS-Management-Console $puppetmaster> new-ec2-instance.rb # test7.example.com $puppetmaster> puppet cert -l test7.example.com $puppetmaster> puppet cert -s test7.example.com $test7> passwd $test7> sudo killall puppet && sudo puppet agent --test $test7> puppet agent --test 24 of 27
Fragen? 25 of 27
Credits Puppets http://www.flickr.com/photos/facing-my-life/2907531865/ Bored http://www.flickr.com/photos/stovak/2378145902/ Clouds http://www.flickr.com/photos/johnmueller/52621490/ Puppetrocker http://www.flickr.com/photos/facing-mylife/2907587409/in/photostream 26 of 27
27 of 27 Danke!