jambit Toilet Paper 113

Machine images as code mit Packer

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
Machine images as code with Packer

Wir verwenden Cookies, um unsere Webseite für Sie zu optimieren. Mit dem Besuch unserer Webseite erklären Sie sich damit einverstanden. // Our website is using cookies to improve your experience. By continuing to browse the site, you are agreeing to our use of cookies.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. // For more information, please refer to our privacy policy.