SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Puppet - Implementing Modules
Von der Planung bis zur Umsetzung
Alexander Pacnik
Karlsruhe, 26.05.2014
2
Typische Probleme
‣  Falsches Verständnis von Standard
‣  Betriebsysteme erstellen Konfigurationen, die möglichst für alle Anwender
funktionieren sollen – aber: schon zwischen Distributionen gibt es erhebliche
Unterschiede
‣  Over Engineering
‣  Versuch alle möglichen Fälle von Anfang an zu berücksichtigen und im Code
abzubilden
Einleitung
... worum es in diesem Vortrag geht
3
Resultierende Entwicklungsansätze
‣  Direkt mit der Implementierung starten und sich am OS orientieren
‣  Vorteil: am Anfang schnelles vorankommen
‣  Nachteil: häufiges Neuschreiben großer Teile des Codes
‣  Generalisierung
‣  Vorteil: vermeintlich Infrastructure as Code und hohe Testabdeckung
‣  Nachteil: Fokussierung auf Deployment Code statt auf Konfiguration,
Umsetzungs- und Entwicklungsaufwände nicht angemessen
Einleitung
... worum es in diesem Vortrag geht
4
Alternativer Lösungsansatz
‣  Vorher eigene Standards definieren (setzt Papier und Stift voraus)
‣  Analyse, Design und Umsetzung der eigenen Module gemäß diesen Standards
‣  Vorteile
‣  Schnell in der Entwicklung und Anwendung
‣  Einfacher und wenig Code
Einleitung
... worum es in diesem Vortrag geht
Standards
festlegen
5
Standards festlegen
... Papier und Stift bitte
Möglichkeiten
Problem-
analyse
Umsetzungs-
beispiel
6
Problem 1
‣  Wie will ich Probleme lösen?
Standards festlegen
... aber wie?
7
Standards
‣  Betriebssystem Standard: Weg der möglichst für alle Nutzer funktioniert, also der
kleinste gemeinsame Nenner
‣  Projekt Standard: Möglichst minimales Regelwerk das die Art und Weise
beschreibt, wie ihr Probleme in eurem Team für euren Kunden umsetzen wollt
‣  Empfehlung: an allgemeinen Standards orientieren, aber abweichen wo es
keinen Sinn macht
Standards festlegen
... Was ist Standard?
8
Tools und Aufgaben festlegen
‣  Aufgaben (Image Verwaltung, Paketbau, Configuration, Deployment, Operations)
‣  Pro Aufgabe überlegen wer es später benutzen soll (Dev/Ops/...)
‣  Pro Aufgabe überlegen in welchen Umgebungen es benötigt wird
‣  Pro Aufgabe genau ein Tool und die Struktur definieren
‣  Beispiel:
Standards festlegen
... Aufgaben und Tools festlegen
9
Was gehört zum Deployment einer Applikation (Context)?
‣  Applikation (Paket oder Verzeichnis)
‣  Konfiguration (teilweise in der Applikation, teilweise auf dem System – z.B. vhost)
‣  Daten (Laufzeitdaten, beispielsweise Sessions)
Was gehört zur Konfiguration des Systems?
‣  Binaries (Programme, idR über Pakete)
‣  Konfiguration (beispielsweise unter /etc/)
‣  Daten (Laufzeitdaten, beispielsweise logs)
Standards festlegen
... Configuration vs. Deployment
10
Problem
‣  Systempakete enthalten oft System und Context spezifische Daten um den Start
mit den Diensten einfach zu machen (kleinster gemeinsamer Nenner)
Lösungsansatz
‣  Alles systemspezifische wird über Puppet Component Module abgebildet
‣  Alles applikationsspezifische wird über Puppet Profile oder das Deployment
abgebildet (je nach Verantwortung – PaaS vs. full stack)
Standards festlegen
... Configuration vs. Deployment
11
Standards festlegen
... C/P/M Pattern als Abstraktionsebene
12
Wiederholung Struktur
‣  Component Module
‣  Atomare Module die die Konfiguration des Systems enthalten (z.B. httpd)
‣  Modulspezifische Daten zusammen mit dem Modulcode (params.pp)
‣  Profile
‣  Technologische Klammer für unsere Module (z.B. profile_web_httpd_php)
‣  Umgebungsspezifische Daten, also Daten die sich in den Umgebungen
unterscheiden (und nur diese) werden über Hiera geladen (z.B. Memory)
‣  Optional: applikationsspezifische Spezialisierungen der Profile (z.B.
profile_web_httpd_wordpress) statt Deployment
Standards festlegen
... C/P/M Pattern als Abstraktionsebene
13
Wiederholung Regeln
‣  Keine Abhängigkeiten zwischen Modulen (mod_php Teil vom httpd Modul)
‣  Keine Vererbung (Inheritance), ähnliche Profile sind neue Profile
‣  Module sollten über Parameter gesteuert werden (API)
‣  Profile und Rollen haben keine Parameter
Standards festlegen
... C/P/M Pattern als Abstraktionsebene
Standards
festlegen
14
Problemanalyse und Design
... Papier und Stift bitte
Möglichkeiten
Problem-
analyse
Umsetzungs-
beispiel
15
Problem 2
‣  Was will ich installieren?
‣  Was kann / muss ich konfigurieren?
Problemanalyse und Design
... Papier und Stift bitte
* Am Beispiel CentOS mit Apache Httpd und PHP 16
Pakete und Abhängigkeiten analysieren
‣  Pakete und Abhängigkeiten finden: repoquery --requires [--resolve] php
‣  Interessante Dateien finden: repoquery --lq <Pakete>
‣  Relevanten Dateien (Skripte, Konfigurationsdateien) in eine Mindmap schreiben
Problemanalyse und Design
... was muss ich verwalten?
* Am Beispiel CentOS mit Apache Httpd und PHP
17
Konfigurations-Parameter bestimmen
‣  Hinter alle Dateien in der Mindmap schreiben was mit ihnen geschehen soll,
dazu den Inhalt aller relevanten Dateien durcharbeiten
‣  Ggf. aufteilen (httpd.conf -> httpd.conf und modules.conf)
Problemanalyse und Design
... was muss ich verwalten?
18
Zielstruktur definieren
‣  Zweite Mindmap mit der Zielstruktur erstellen
‣  Beide Mindmaps mit dem Team / Anforderungsstellern abstimmen
Problemanalyse und Design
... wie soll es aussehen?
19
Umsetzung in die Mindmap einzeichnen
‣  Hinter alle Datei schreiben wo und wie sie umgesetzt werden sollen
‣  Dateien die man 1:1 bei beibehalten will als file / template im Modul kopieren
‣  In die Zielstruktur Mindmap
Problemanalyse und Design
... um die Übersicht zu behalten
20
Profile Beispiel: profile_web_apache_gitblit
‣  Aufruf des Basismoduls welches den Dienst installiert und das System konfiguriert
‣  Templates als Teil der Applikation nicht über das Deployment sonderen ein
applikationsspezifisches Profil verwaltet
‣  Loadmodule, Logging, etc. sind im vhost definiert
Möglichkeiten bei der Umsetzung
... um die Übersicht zu behalten
Standards
festlegen
21
Möglichkeiten bei der Umsetzung
... Papier und Stift bitte
Möglichkeiten
Problem-
analyse
Umsetzungs-
beispiel
22
Problem 3
‣  Wie umsetzen?
Möglichkeiten bei der Umsetzung
... welche technischen Möglichkeiten gibt es?
23
Class vs. Define
‣  Class: Ressourcen können nur einmal pro Node angewendet werden
‣  Define: Ressourcen können mehrfach angewendet werden, wenn sie eindeutig
sind
Möglichkeiten bei der Umsetzung
... um die Übersicht zu behalten
24
Beispiel: for each
‣  Aufruf
‣  Define
Möglichkeiten bei der Umsetzung
... um die Übersicht zu behalten
25
1. Template mit Parametern
‣  jegliche Konfiguration wird über Parameter übergeben und validiert
‣  Vorteil: Validierung der Parameter, Tests mit rspec
‣  Nachteil: ab 10-15 Parameter hohe Komplexität und unübersichtlich
‣  Empfehlung: bei wenigen Parametern auf Modulebene
Möglichkeiten bei der Umsetzung
... Möglichkeiten Parameter von Profil an das Modul zu übergeben
26
2. Template mit Parametern und Hash
‣  die wichtigsten 10-15 Konfigurationen werden über Parameter übergeben, alle
weiteren über einen Hash
‣  Vorteil: es wird weiterhin eine API verwendet und die Anzahl der Parameter
sowie die Templates bleiben überschaubar
‣  Nachteil: Inhalt eines Hash ist schwieriger zu validieren bzw. zu testen
‣  Empfehlung: bei optionalen Parametern auf Modulebene
Möglichkeiten bei der Umsetzung
... Möglichkeiten Parameter von Profil an das Modul zu übergeben
27
3. Konfigurationsdateien
‣  hier wird von einem Modul lediglich eine Konfigurationsdatei ausgeliefert, die vom
aufrufenden Modul überschrieben werden kann
‣  Vorteil: einfach und schnell
‣  Nachteil: keine Validierung durch Parameter und das Überschreiben ist nicht in
der init.pp ersichtlich
‣  Empfehlung: nur im Notfall verwenden, besser Modules und Profiles Pattern
Möglichkeiten bei der Umsetzung
... Möglichkeiten Parameter von Profil an das Modul zu übergeben
28
Entscheidungskriterien für die Umsetzung
‣  Nur parametrisieren was für den aktuellen Fall benötigt wird
‣  Beispiel: bei einem Betriebssystem ist die params.pp oft nicht notwendig
‣  Wie viele Konfigurationen ändern sich bei der Verwendung des Moduls? Zur
Orientierung:
‣  10-15: als Parameter auf Modulebene (httpd.conf)
‣  >15 aber optional: als Hash wenn möglich auf Modulebene (modules.conf)
‣  >15 aber mandatory: als Datei / Template auf Profil ebene (vhost.conf)
Problemanalyse und Design
... um die Übersicht zu behalten
Standards
festlegen
29
Entscheidungen im Vorfeld
... Papier und Stift bitte
Möglichkeiten
Problem-
analyse
Umsetzungs-
beispiel
30
Demo
Beispiel
... der Code
31
Fazit
‣  Bei wenig Erfahrung oder komplexen Modulen empfiehlt es sich die beiden
Mindmaps tatsächlich in schriftlicher Form zu verfassen
‣  Iteratives Vorgehen heißt mit (nur) den Informationen zu arbeiten die man aktuell
hat. Für Erweiterungen planen, aber noch nicht implementieren (!)
‣  Die Module und deren Weiterentwicklung dürfen den Betrieb aber nicht bremsen,
sonst müssen ihn schneller machen.
Parameter
... um die Übersicht zu behalten
32
Take-Away
‣  Der Fokus sollte auf der Konfiguration der Systeme und nicht auf dem Code zur
Konfiguration liegen.
‣  Code muss kurz und selbsterklärend sein
Take-Away
33
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Alexander Pacnik
IT Engineering & Operations
Project Management
inovex GmbH
Ludwig-Erhard-Allee 6
76133 Karlsruhe
Mobil: +49 (0)173 3181 040
Mail: alexander.pacnik@inovex.de
Anhang
35
Quellen
‣  Puppet Style Guide
http://docs.puppetlabs.com/guides/style_guide.html
‣  Puppet Language Guide
http://docs.puppetlabs.com/guides/language_guide.html
‣  Puppet Referenzen
http://docs.puppetlabs.com/references/latest/
‣  Puppet Guides
http://docs.puppetlabs.com/guides/
‣  Puppet Blog
https://puppetlabs.com/blog/
Lizenz des Vortrags
‣  Creative Commons (by-nc-nd)
Anhang
... wo sie in Ruhe nachlesen können

Mais conteúdo relacionado

Semelhante a Puppet - Module entwickeln - Von der Planung bis zur Umsetzung

PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3marco-huber
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRAlexander Hundt
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastrukturinovex GmbH
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Requirement Engineering & PDD
Requirement Engineering & PDDRequirement Engineering & PDD
Requirement Engineering & PDDCristina Vidu
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHPThomas Burgard
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous IntegrationMilena Reichel
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
Application Management; keep it simple...
Application Management; keep it simple...Application Management; keep it simple...
Application Management; keep it simple...Digicomp Academy AG
 
Die Macht der Zahlen
Die Macht der ZahlenDie Macht der Zahlen
Die Macht der ZahlenGerrit Beine
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Managementinovex GmbH
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudAarno Aukia
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Rollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenRollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenOliver Lemm
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdataHenning Blohm
 
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikClaus Brell
 

Semelhante a Puppet - Module entwickeln - Von der Planung bis zur Umsetzung (20)

PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
 
Drupal und twig
Drupal und twigDrupal und twig
Drupal und twig
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Requirement Engineering & PDD
Requirement Engineering & PDDRequirement Engineering & PDD
Requirement Engineering & PDD
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHP
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
Application Management; keep it simple...
Application Management; keep it simple...Application Management; keep it simple...
Application Management; keep it simple...
 
Die Macht der Zahlen
Die Macht der ZahlenDie Macht der Zahlen
Die Macht der Zahlen
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Rollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenRollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX Anwendungen
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
 

Mais de inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Mais de inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Puppet - Module entwickeln - Von der Planung bis zur Umsetzung

  • 1. Puppet - Implementing Modules Von der Planung bis zur Umsetzung Alexander Pacnik Karlsruhe, 26.05.2014
  • 2. 2 Typische Probleme ‣  Falsches Verständnis von Standard ‣  Betriebsysteme erstellen Konfigurationen, die möglichst für alle Anwender funktionieren sollen – aber: schon zwischen Distributionen gibt es erhebliche Unterschiede ‣  Over Engineering ‣  Versuch alle möglichen Fälle von Anfang an zu berücksichtigen und im Code abzubilden Einleitung ... worum es in diesem Vortrag geht
  • 3. 3 Resultierende Entwicklungsansätze ‣  Direkt mit der Implementierung starten und sich am OS orientieren ‣  Vorteil: am Anfang schnelles vorankommen ‣  Nachteil: häufiges Neuschreiben großer Teile des Codes ‣  Generalisierung ‣  Vorteil: vermeintlich Infrastructure as Code und hohe Testabdeckung ‣  Nachteil: Fokussierung auf Deployment Code statt auf Konfiguration, Umsetzungs- und Entwicklungsaufwände nicht angemessen Einleitung ... worum es in diesem Vortrag geht
  • 4. 4 Alternativer Lösungsansatz ‣  Vorher eigene Standards definieren (setzt Papier und Stift voraus) ‣  Analyse, Design und Umsetzung der eigenen Module gemäß diesen Standards ‣  Vorteile ‣  Schnell in der Entwicklung und Anwendung ‣  Einfacher und wenig Code Einleitung ... worum es in diesem Vortrag geht
  • 5. Standards festlegen 5 Standards festlegen ... Papier und Stift bitte Möglichkeiten Problem- analyse Umsetzungs- beispiel
  • 6. 6 Problem 1 ‣  Wie will ich Probleme lösen? Standards festlegen ... aber wie?
  • 7. 7 Standards ‣  Betriebssystem Standard: Weg der möglichst für alle Nutzer funktioniert, also der kleinste gemeinsame Nenner ‣  Projekt Standard: Möglichst minimales Regelwerk das die Art und Weise beschreibt, wie ihr Probleme in eurem Team für euren Kunden umsetzen wollt ‣  Empfehlung: an allgemeinen Standards orientieren, aber abweichen wo es keinen Sinn macht Standards festlegen ... Was ist Standard?
  • 8. 8 Tools und Aufgaben festlegen ‣  Aufgaben (Image Verwaltung, Paketbau, Configuration, Deployment, Operations) ‣  Pro Aufgabe überlegen wer es später benutzen soll (Dev/Ops/...) ‣  Pro Aufgabe überlegen in welchen Umgebungen es benötigt wird ‣  Pro Aufgabe genau ein Tool und die Struktur definieren ‣  Beispiel: Standards festlegen ... Aufgaben und Tools festlegen
  • 9. 9 Was gehört zum Deployment einer Applikation (Context)? ‣  Applikation (Paket oder Verzeichnis) ‣  Konfiguration (teilweise in der Applikation, teilweise auf dem System – z.B. vhost) ‣  Daten (Laufzeitdaten, beispielsweise Sessions) Was gehört zur Konfiguration des Systems? ‣  Binaries (Programme, idR über Pakete) ‣  Konfiguration (beispielsweise unter /etc/) ‣  Daten (Laufzeitdaten, beispielsweise logs) Standards festlegen ... Configuration vs. Deployment
  • 10. 10 Problem ‣  Systempakete enthalten oft System und Context spezifische Daten um den Start mit den Diensten einfach zu machen (kleinster gemeinsamer Nenner) Lösungsansatz ‣  Alles systemspezifische wird über Puppet Component Module abgebildet ‣  Alles applikationsspezifische wird über Puppet Profile oder das Deployment abgebildet (je nach Verantwortung – PaaS vs. full stack) Standards festlegen ... Configuration vs. Deployment
  • 11. 11 Standards festlegen ... C/P/M Pattern als Abstraktionsebene
  • 12. 12 Wiederholung Struktur ‣  Component Module ‣  Atomare Module die die Konfiguration des Systems enthalten (z.B. httpd) ‣  Modulspezifische Daten zusammen mit dem Modulcode (params.pp) ‣  Profile ‣  Technologische Klammer für unsere Module (z.B. profile_web_httpd_php) ‣  Umgebungsspezifische Daten, also Daten die sich in den Umgebungen unterscheiden (und nur diese) werden über Hiera geladen (z.B. Memory) ‣  Optional: applikationsspezifische Spezialisierungen der Profile (z.B. profile_web_httpd_wordpress) statt Deployment Standards festlegen ... C/P/M Pattern als Abstraktionsebene
  • 13. 13 Wiederholung Regeln ‣  Keine Abhängigkeiten zwischen Modulen (mod_php Teil vom httpd Modul) ‣  Keine Vererbung (Inheritance), ähnliche Profile sind neue Profile ‣  Module sollten über Parameter gesteuert werden (API) ‣  Profile und Rollen haben keine Parameter Standards festlegen ... C/P/M Pattern als Abstraktionsebene
  • 14. Standards festlegen 14 Problemanalyse und Design ... Papier und Stift bitte Möglichkeiten Problem- analyse Umsetzungs- beispiel
  • 15. 15 Problem 2 ‣  Was will ich installieren? ‣  Was kann / muss ich konfigurieren? Problemanalyse und Design ... Papier und Stift bitte
  • 16. * Am Beispiel CentOS mit Apache Httpd und PHP 16 Pakete und Abhängigkeiten analysieren ‣  Pakete und Abhängigkeiten finden: repoquery --requires [--resolve] php ‣  Interessante Dateien finden: repoquery --lq <Pakete> ‣  Relevanten Dateien (Skripte, Konfigurationsdateien) in eine Mindmap schreiben Problemanalyse und Design ... was muss ich verwalten?
  • 17. * Am Beispiel CentOS mit Apache Httpd und PHP 17 Konfigurations-Parameter bestimmen ‣  Hinter alle Dateien in der Mindmap schreiben was mit ihnen geschehen soll, dazu den Inhalt aller relevanten Dateien durcharbeiten ‣  Ggf. aufteilen (httpd.conf -> httpd.conf und modules.conf) Problemanalyse und Design ... was muss ich verwalten?
  • 18. 18 Zielstruktur definieren ‣  Zweite Mindmap mit der Zielstruktur erstellen ‣  Beide Mindmaps mit dem Team / Anforderungsstellern abstimmen Problemanalyse und Design ... wie soll es aussehen?
  • 19. 19 Umsetzung in die Mindmap einzeichnen ‣  Hinter alle Datei schreiben wo und wie sie umgesetzt werden sollen ‣  Dateien die man 1:1 bei beibehalten will als file / template im Modul kopieren ‣  In die Zielstruktur Mindmap Problemanalyse und Design ... um die Übersicht zu behalten
  • 20. 20 Profile Beispiel: profile_web_apache_gitblit ‣  Aufruf des Basismoduls welches den Dienst installiert und das System konfiguriert ‣  Templates als Teil der Applikation nicht über das Deployment sonderen ein applikationsspezifisches Profil verwaltet ‣  Loadmodule, Logging, etc. sind im vhost definiert Möglichkeiten bei der Umsetzung ... um die Übersicht zu behalten
  • 21. Standards festlegen 21 Möglichkeiten bei der Umsetzung ... Papier und Stift bitte Möglichkeiten Problem- analyse Umsetzungs- beispiel
  • 22. 22 Problem 3 ‣  Wie umsetzen? Möglichkeiten bei der Umsetzung ... welche technischen Möglichkeiten gibt es?
  • 23. 23 Class vs. Define ‣  Class: Ressourcen können nur einmal pro Node angewendet werden ‣  Define: Ressourcen können mehrfach angewendet werden, wenn sie eindeutig sind Möglichkeiten bei der Umsetzung ... um die Übersicht zu behalten
  • 24. 24 Beispiel: for each ‣  Aufruf ‣  Define Möglichkeiten bei der Umsetzung ... um die Übersicht zu behalten
  • 25. 25 1. Template mit Parametern ‣  jegliche Konfiguration wird über Parameter übergeben und validiert ‣  Vorteil: Validierung der Parameter, Tests mit rspec ‣  Nachteil: ab 10-15 Parameter hohe Komplexität und unübersichtlich ‣  Empfehlung: bei wenigen Parametern auf Modulebene Möglichkeiten bei der Umsetzung ... Möglichkeiten Parameter von Profil an das Modul zu übergeben
  • 26. 26 2. Template mit Parametern und Hash ‣  die wichtigsten 10-15 Konfigurationen werden über Parameter übergeben, alle weiteren über einen Hash ‣  Vorteil: es wird weiterhin eine API verwendet und die Anzahl der Parameter sowie die Templates bleiben überschaubar ‣  Nachteil: Inhalt eines Hash ist schwieriger zu validieren bzw. zu testen ‣  Empfehlung: bei optionalen Parametern auf Modulebene Möglichkeiten bei der Umsetzung ... Möglichkeiten Parameter von Profil an das Modul zu übergeben
  • 27. 27 3. Konfigurationsdateien ‣  hier wird von einem Modul lediglich eine Konfigurationsdatei ausgeliefert, die vom aufrufenden Modul überschrieben werden kann ‣  Vorteil: einfach und schnell ‣  Nachteil: keine Validierung durch Parameter und das Überschreiben ist nicht in der init.pp ersichtlich ‣  Empfehlung: nur im Notfall verwenden, besser Modules und Profiles Pattern Möglichkeiten bei der Umsetzung ... Möglichkeiten Parameter von Profil an das Modul zu übergeben
  • 28. 28 Entscheidungskriterien für die Umsetzung ‣  Nur parametrisieren was für den aktuellen Fall benötigt wird ‣  Beispiel: bei einem Betriebssystem ist die params.pp oft nicht notwendig ‣  Wie viele Konfigurationen ändern sich bei der Verwendung des Moduls? Zur Orientierung: ‣  10-15: als Parameter auf Modulebene (httpd.conf) ‣  >15 aber optional: als Hash wenn möglich auf Modulebene (modules.conf) ‣  >15 aber mandatory: als Datei / Template auf Profil ebene (vhost.conf) Problemanalyse und Design ... um die Übersicht zu behalten
  • 29. Standards festlegen 29 Entscheidungen im Vorfeld ... Papier und Stift bitte Möglichkeiten Problem- analyse Umsetzungs- beispiel
  • 31. 31 Fazit ‣  Bei wenig Erfahrung oder komplexen Modulen empfiehlt es sich die beiden Mindmaps tatsächlich in schriftlicher Form zu verfassen ‣  Iteratives Vorgehen heißt mit (nur) den Informationen zu arbeiten die man aktuell hat. Für Erweiterungen planen, aber noch nicht implementieren (!) ‣  Die Module und deren Weiterentwicklung dürfen den Betrieb aber nicht bremsen, sonst müssen ihn schneller machen. Parameter ... um die Übersicht zu behalten
  • 32. 32 Take-Away ‣  Der Fokus sollte auf der Konfiguration der Systeme und nicht auf dem Code zur Konfiguration liegen. ‣  Code muss kurz und selbsterklärend sein Take-Away
  • 33. 33 Vielen Dank für Ihre Aufmerksamkeit Kontakt Alexander Pacnik IT Engineering & Operations Project Management inovex GmbH Ludwig-Erhard-Allee 6 76133 Karlsruhe Mobil: +49 (0)173 3181 040 Mail: alexander.pacnik@inovex.de
  • 35. 35 Quellen ‣  Puppet Style Guide http://docs.puppetlabs.com/guides/style_guide.html ‣  Puppet Language Guide http://docs.puppetlabs.com/guides/language_guide.html ‣  Puppet Referenzen http://docs.puppetlabs.com/references/latest/ ‣  Puppet Guides http://docs.puppetlabs.com/guides/ ‣  Puppet Blog https://puppetlabs.com/blog/ Lizenz des Vortrags ‣  Creative Commons (by-nc-nd) Anhang ... wo sie in Ruhe nachlesen können