keine angst vor puppet 4 - heinlein-support.de · keine angst vor puppet 4 secure linux...

28
Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke <[email protected]>

Upload: others

Post on 03-Nov-2019

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke

Keine Angst vor Puppet 4

Secure Linux Administration Conference 2015 Martin Alfke

<[email protected]>

Page 2: Keine Angst vor Puppet 4 - heinlein-support.de · Keine Angst vor Puppet 4 Secure Linux Administration Conference 2015 Martin Alfke

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Keine Angst vor Puppet 4

Secure Linux Administration Conference 2015 Martin Alfke

<[email protected]>