keine angst vor puppet 4 - heinlein-support.de · keine angst vor puppet 4 secure linux...
TRANSCRIPT
![Page 1: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/1.jpg)
Keine Angst vor Puppet 4
Secure Linux Administration Conference 2015 Martin Alfke
![Page 2: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/2.jpg)
Martin AlfkePL Training Partner
Module Contributor
!
Freelancer / example42
Infrastructure Architect
![Page 3: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/3.jpg)
Workshop• VMs:
• Puppet 3:
• http://10.60.3.179/SLAC Puppet Workshop.ova
• Puppet 4:
• http://10.60.3.179/SLAC Puppet4 Master.ova
![Page 4: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/4.jpg)
Puppet 415. April 2015
https://puppetlabs.com/blog/say-hello-open-source-puppet-4
http://docs.puppetlabs.com/puppet/4.0/reference/index.html
![Page 5: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/5.jpg)
Deprecations
Image: http://lustich.de/bilder/menschen/ganster-oma/
![Page 6: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/6.jpg)
Node Inheritancenode ‘basenode’ { include base include security } !node ‘www.server.com’ inherits basenode { include webserver }
# Ein Dummy Node, der als default verwendet wird !!!# Der echte Node wird vom Dummy Node “vererbt”
![Page 7: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/7.jpg)
Node Inheritancenode ‘www.server.com’ { include profile::webserver } !!class role::basenode { include role::base include role::security } !class profile::webserver { include role::basenode }
# Node Klassifizierung ohne Vererbung !!!!# Roles & Profiles - Klassen definieren und deklarieren
![Page 8: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/8.jpg)
Vergleich von ‘’$message = ‘’ !if $message { notify { “Message: ${message}”: } }
Leerer String als default !Check Existenz der Variable mit Inhalt
$message = ‘’ !if $message and $message != ‘’ { notify { “Message: ${message}”: } }
Leerer String als default !Check Existenz der Variable mit nicht leerem Inhalt
![Page 9: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/9.jpg)
Namen von Variablen
Eine Variable darf nicht
mit einem Großbuchstaben anfangen
mit einem Unterstrich anfangen …(naja. sie darf. Aber. Dann ist es eine private Variable.)
![Page 10: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/10.jpg)
Namen und Syntax von Referenzen
Reference deprecation
Title mit Großbuchstabe
Leerzeichen zwischen Type Referenz und Title!Class [Ssh] !Class [‘ssh’] !Class[‘ssh’]
!Titel mit Großbuchstabe !Leerzeichen !OK
![Page 11: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/11.jpg)
Minus Zeichen
Keine Minuszeichen in
Modul Namen
Klassen Namen
Define Namen
![Page 12: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/12.jpg)
Noch mehrRelativer Namensraum von Klassen - der Grund warm man den doppelten Doppelpunkt bei include verwenden musste - include ::ssh
Importieren von Manifesten - import ‘*.pp’
Vergleiche von unterschiedlichen Typen
Nummern mit Regulären Ausdrücken
Bool mit String
![Page 13: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/13.jpg)
Neu in Puppet 4
Image: http://www.makerbot.com/blog/2014/02/18/makerbot-stories-rick-baker-3d-prints-paints-popeye
![Page 14: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/14.jpg)
EPP Templates
Puppet $var anstelle von Ruby @var
epp(filename)
inline_epp(epp_string)
![Page 15: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/15.jpg)
Lambdas und Funktionen
each - über ein Array iterieren
map - Array oder Has in neues Array umwandeln
filter - Arrays oder Hashes filtern
reduce - Array oder hash auf einzelnen Wert reduzieren
slice - Array oder Hash in Slices schneiden
![Page 16: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/16.jpg)
Verwendung von Funktionen
Standard Puppet Syntax:
function_name(argument) - each($variable)
Ruby Syntax:
argument.function_name - $variable.each
![Page 17: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/17.jpg)
Types, Types, Types
Image: https://de.pinterest.com/pin/26880928998839402/
![Page 18: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/18.jpg)
DatentypenInteger[from, to]
Float[from,to]
Enum[*strings]
Pattern[*patterns]
Regexp[regexp]
Boolean
Array
Hash
![Page 19: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/19.jpg)
Warum Daten Typen?class ssh ( $server = true, ) { if $server { include ssh::server } } !!class { ‘ssh’: server => ‘false’, }
![Page 20: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/20.jpg)
Warum Daten Typen?class ssh ( $server = true, ) { if validate_bool($server) { include ssh::server } } !!class { ‘ssh’: server => ‘false’, }
![Page 21: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/21.jpg)
Deklaration von Datentypenclass ssh ( Boolean $server = true, ) { if $server { include ssh::server } } •
![Page 22: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/22.jpg)
Deklaration von Datentypenclass ssh ( Boolean $server = true, ) { if $server { include ssh::server } } !!class { ‘ssh’: server => ‘false’, } !Error 400 on SERVER: Expected parameter 'server' of 'Class[Ssh]' to have type Boolean, got String
![Page 23: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/23.jpg)
Komplexe Datentypenclass users ( Hash $hash ) { $userarray = keys($hash) users::user_data { $userarray: } } !define users::user_data ( String $gid = $users::hash[$title][gid], String $home = $users::hash[$title][home], Boolean $managehome = $users::hash[$title][managehome], ) { }
![Page 24: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/24.jpg)
Update auf Puppet 4
Image: http://praetoris01.deviantart.com/
![Page 25: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/25.jpg)
Ruby Hölle• Puppet & Ruby Versionen
• puppet 3 - ruby 1.8
• puppet 4 - ruby 1.9.3
• Lösung:
• ruby 1.9.3 Pakete - wenn vorhanden, CentOS?
• Puppet 4 - bringt ruby mit
![Page 26: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/26.jpg)
Puppet 4 Master• Aufsetzen Puppet 4 Master
• Umziehen der SSL Zertifikate
• Puppet Konfiguration:
• ca_server: auf Puppet 3 Master & Agents angeben
• server: auf Puppet 3 Agents den alten Master angeben
![Page 27: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/27.jpg)
Pfade bei Puppet 4• /opt/puppetlabs/bin
• Wird nicht in PATH aufgenommen!
• /etc/puppetlabs/puppet/
• ssl im Puppet Verzeichnis
• /etc/puppetlabs/puppetserver/
• /etc/puppetlabs/code
• environments, hiera Daten
![Page 28: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e203843be611a101c39aaa5/html5/thumbnails/28.jpg)
Keine Angst vor Puppet 4
Secure Linux Administration Conference 2015 Martin Alfke