Problem

Container und Deployables in PaaS (Platform as a Service) Umgebungen sind gut und schön. Manchmal muss oder will man Maschinen-Images erstellen, z.B. für IaaS (Infrastructure as a Service) Umgebungen oder um oben genannte PaaS-Umgebungen aufzusetzen. Am besten noch unabhängig von der jeweiligen Virtualisierungsumgebung oder Cloud. Maschinen-Images haben auch den Vorteil, dass sie nur zum Erstellungszeitpunkt provisioniert werden müssen und danach schnell gestartet werden können.

Also wieder zurück zu selbstgestrickten Shell-Skripten und Handarbeit? Nein.

Lösung

Hier gibt es ein Tool von HashiCorp, den Machern von Terraform, Vagrant, Vault etc.

Packer bietet die Möglichkeit, einmal das Maschinen-Image zu definieren und dann für verschiedene Virtualisierungslösungen und Clouds die Images zu erstellen. Man muss das Rad auch nicht neu erfinden, Packer unterstützt bekannte Provisionierungstools wie Chef, Ansible und mehr.

Bausteine von Packer:

  • Templates sind die Konfigurationsdateien (JSON) von Packer und beschreiben ein oder mehrere Images.
  • Builders produzieren die Images für jeweils eine Platform.
  • Z.B. Amazon EC2, Azure, Docker, Goggle Cloud, Vagrant, VirtualBox, VMWare, uvm.
  • Provisioners installieren und konfigurieren das jeweilige Image.
  • Z.B. mit Chef, Puppet, Ansible, Shell-Skripte, uvm.
  • Artifact ist das Ergebnis eines Builders, das erzeugte Maschinen-Image.
  • Post-Processors nimmt die erstellten Images und führt weitere Aufgaben aus (z.B. push in Docker Registry).

Mit folgendem einfachen Befehl werden alle definierten Images erzeugt:

packer build

Das Packer-Template erzeugt ein Amazon Maschine Image (AMI) in AWS. Das Image wird im Build mit Ansible provisioniert.

Das Packer-Template erzeugt ein Amazon Machine Image (AMI) in AWS

Weiterführende Aspekte

---

Autor

Philipp Hemmer / Senior Software Architect / Business Division Automotive Bavaria

Zum Toilet Paper #113: Machine images as code mit Packer (pdf)

Machine images as code with Packer

SCHREIB UNS

* Pflichtfeld

SCHREIB UNS

* Pflichtfeld

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen