infrastructure as code (docker, vagrant und co. im … › wp-content › uploads › 2017 › 08...
Post on 26-Jun-2020
1 Views
Preview:
TRANSCRIPT
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 1/29
Infrastructure as Code (Docker,Vagrant und Co. im Einsatz)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 2/29
Über Marcel mcb BernetNach langen Jahren als Stabstelle und Technologie Vordenker beidiversen Firmen und der öffentlichen Verwaltung und Mitglied indiversen Expertenkommissionen widmet sich Marcel Bernet heutehauptsächlich der Beratung und Schulung.
Als ehemaliger /ch/open Präsident und heutiges Ehrenmitgliedentwickelt und fördert er Open Source und setzt diese in seinenProjekten ein.
ProjekteIoTKit (C/C++, Open Hardware)3D Druck (Open Manufacturing)microHOME (C/C++, Smart Home)microSRCP (C/C++, Open Hardware/Manufacturing)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 3/29
AgendaInternet der Dinge (IoT)
IoT Infrastruktur
Infrastructure as Code (Umsetzung)
Services & Frameworks (Docker)Host und Plattformen (Vagrant und Packer)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 4/29
Internet der Dinge (IoT)
Das «Internet der Dinge» vereint die physische mit der digitalenWelt und bietet so die Möglichkeit für neue Geschäftsmodelle.
Neue Geschäftsmodelle brauchen Services & Frameworks.Services & Frameworks brauchen Infrastruktur.
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 5/29
IoT Ecosystem (Ökosystem)
Industrie 4.0 ("intelligente Fabrik" oder Smart Factory)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 6/29
Architektur: IoT Netzwerk Layer
Little Data IoT GeräteDevice Server IoT Geräte Orchestrieren. Interoperabilätzwischen Geräteprotokollen und REST herstellen.Big Data Services & Frameworks: zum Sammeln undAuswerten von Daten.
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 7/29
IoT Infrastruktur
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 8/29
Infrastruktur: IoT HardwareFRDM K64F Mikrocontrollerboard IoTKit SMD Shield
ca. 20 Verschiedene Funktionen (Licht, Hall, TemperatorSensoren, Schritt DCMotoren, Servo ...)Vielzahl von Bus Systemen (Ethernet, Bluetooth, WLAN,ZigBee, I2C, SPI, UART, Funk, Infrarot ...)Einbindung > 80 externe Sensoren und Aktoren (SeeedstudioGrove)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 9/29
Infrastruktur: IoT Services & FrameworksSmart Home
openHAB2 (Eclipse SmartHome) (Dockerfile)FHEM (Dockerfile)
Big DataThingSpeak (Dockerfile)LAM Server (Dockerfile)Cloud: Amazon, IBM, ...NoSQL (in Plannung)
Industrie 4.0LWM2M (Eclipse Leshan CoAP Protokoll) (Dockerfile)Mosquitto (MQTT Broker) (Dockerfile)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 10/29
Infrastruktur: IoT ToolsMikrocontrollerboard: IDE und Buildserver
Codebox, Jenkins, GCC4ARM, Yotta (Dockerfile)Smartphone (Web)App: IDE und Buildserver
Codebox, Jenkins, Android SDK, Apache Cordova(PhoneGap) (Dockerfile)
(Java) Device Server: IDE und BuildserverCodebox, Jenkins, Maven (Dockerfile)
Shell Prompt (Tests) curl, wget, wetty (Dockerfile)
GIT Repository
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 11/29
Infrastruktur: IoT Host und Plattform(en)Ubuntu oder XUbuntuHost als USBStick, VM (lokal) oder in derCloud
Beinhaltet:
Apache als Reverse Proxy (Konfiguration)HTML StartseiteDockerEnginenur XUbuntu: Eclipse C++ IDE, FreeCAD, Fritzing, ArduinoIDE
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 12/29
Infrastruktur: IoT Demo
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 13/29
Infrastructure as CodeDie ITInfrastruktur programmieren zu können eröffnetUnternehmen ein bislang ungeahntes Mass an Flexibilität.
Das gilt nicht nur für die Bereitstellung der Services, sondern auchfür Versionierung, Tests und Reproduktion.
Quelle: Computerwoche.de
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 14/29
DockerDocker ist eine OpenSourceSoftware, die bei linuxoidenBetriebssystemen dazu verwendet werden kann, Anwendungenmithilfe von Betriebssystemvirtualisierung in Containern zu isolieren
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 15/29
Docker: Funktionsweise und Konzepte
Image ein Image ist bei Docker eine portable Abbildung einesContainers.Container ein Container ist ein lauffähiges, virtuellesBetriebssystem.Dockerfile eine Textdatei, die Befehle enthält, um ein Imageden eigenen Anforderungen anzupassen.Docker Hub ein OnlineDienst, der eine Registry für DockerImages und Repositorys beinhaltetImage erstellen: Container starten:
Beispiel: LWM2M Server (leshan)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 16/29
Docker + make
make (englisch für machen, erstellen) ist ein BuildManagementTool, das Kommandos in Abhängigkeit von Bedingungen ausführt.Es wird hauptsächlich bei der Softwareentwicklung alsProgrammierwerkzeug eingesetzt.
Vereinfachung Docker CLIAbhängigkeiten zwischen Docker ContainernAusbaubar mit Tests (z.B. sind alle Container gestartet)Verminderte Abhängigkeit von Docker Tools
Beispiel: LWM2M Server (leshan)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 17/29
Docker: Lessons Learned
Getestete Container wie Produkte behandeln und in HubablegenGleichartige Services & Frameworks und Tools in einemContainer kombinieren (z.B. IDE und Build Server)Viele Einträge im Dockerfile bremsen den Build (vor allem in derCloud), siehe z.B. mbed IDE DockerfileProzesse in Container nicht als root laufen lassen (Security!)Docker Container eigen sich hervorragend um Tools (SDK's)voneinnander zu trennen (z.B. Android SDK von ARM)
Beispiel
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 18/29
Infrastruktur: Host und Plattform(en)IoT USB Stick (für die Kurse) mit GUI, Eclipse, LibreOffice etc.IoT Server lauffähig in VirtualBox (für Demos)IoT Cloud Server (Produktiv)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 19/29
VagrantVagrant ist eine freie und OpenSource RubyAnwendung zumErstellen und Verwalten von virtuellen Maschinen.
Vagrant ermöglicht einfaches Deployment insbesondere in derSoftware und Webentwicklung und dient als Wrapper zwischenVirtualisierungssoftware wie VirtualBox, VMware und HyperV undSoftwareConfigurationManagementAnwendungenbeziehungsweise Systemkonfigurationswerkzeugen wie Chef,Saltstack und Puppet.
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 20/29
Vagrant: Funktionsweise und Konzepte
Projektinitialisierung eine Datei Vagrantfile wird erstellt.
BoxenBoxen sind bei Vagrant vorkonfigurierte (Vorlagen) VirtuelleMaschinen: ,
KonfigurationDie gesamte Konfiguration erfolgt im Vagrantfile
ProvisioningProvisioning bedeutet bei Vagrant die Anweisung an einanderes Programm, zumeist SCMSoftware, aber auchgrundlegende Anwendungen wie die Shell
Sitzung beginnen: Verbinden: Sitzung beenden:
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 21/29
Vagrant: Beispiele
IoT USB Stick (Vagrantfile)XUbuntu, IoTKit Sourcen, C++ for ARM, Eclipse, FreeCAD,Links als Desktop Icons
IoT Server (Vagrantfile)Ubuntu, IoTKit Sourcen, Docker Container
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 22/29
Vagrant: offene Punkte
Grundimage mit vorinstallierter Software (DockerEngine, ...),bei Wechsel OS Version: Ubuntu 14.x vs. 15.xCloudCH Tastatur
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 23/29
PackerPacker ist ein Tool zur Erstellung von Images für die Plattformenvon Amazon AWS, OpenStack, VMWare, Virtualbox, Docker undweitere.
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 24/29
Packer Funktionsweise und Konzepte
Artefakte sind gebaute Virtuelle MaschinenBuild beschreibt den Prozess welche ein Artefakt für eine odermehrere Plattformen baut: Commands sind SubBefehle wie das Artefakt gebaut werdensollProvisioners bereiten das Artefakt für eine bestimmtePlattform aufTemplates sind JSON Dateien welche die verschiedenenBuildAbläufe von Packer beschreiben
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 25/29
Packer: Beispiele
Ubuntu Server (VirtualBox)JSON TemplateArtefakt
XUbuntu USB StickJSON TemplateArtefakt
AWS CloudJSON Template
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 26/29
Plattform: IoT USB StickBootable USB Stick mit XUbuntu, C++ for ARM, Eclipse, FreeCADetc.
Erzeugt aus einem VirtualBox DiskBenötigt QEMU Tools und dd (Windows: Win32 DiskImager)Beispiel:
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 27/29
ZusammenfassungPacker dient zum Erstellen von Grundimages, sogenannteArtefakteVagrant instanziert diese (mit Zusatzsoftware)Docker Images eignen sich für Services & Frameworks undToolsModularisierung verbessert die Wiederverwendbarkeit
Infrastructure as Code vermindert:
Mühsame TypearbeitManuelle NachbearbeitungNachträgliche Fehlersuche
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 28/29
LinksKurse Internet der Dinge für Implementierer (EBZürich)
GrundlagenAufbau 1 Komplexe AnwendungenAufbau 2 «Dinge» und die CloudAufbau 3 Raspberry Pi und Co. als Server(Kompakt für Entwickler/innen)
Internet der Dinge für Manager / Integratoren in PlannungInfrastructure as Code in PlannungBig Data / NoSQL Datenbanken in PlannungTools
DockerAtlas (Packer, Vagrant)
4.2.2016 Infrastructure as Code /ch/open OBL vom 4. Februar 2016, Copyright (c) 2016, Marcel mcb Bernet, Zürich
http://localhost:8000/#1 29/29
Fragen?
top related