Blog

Tutorial - Verwendung von Deployit Cloud Pack mit Amazon EC2 - Teil 1

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 22, 2025
7 Minuten

Das Cloud Pack von Deployit bietet Ihnen die Möglichkeit, Umgebungen auf einer virtualisierten Infrastruktur von Deployit zu erstellen und zu zerstören. Es unterstützt sowohl EC2 als auch vSphere. In diesem ersten Teil des Tutorials zeige ich Ihnen, wie Sie Amazon AWS einrichten und das Deployit-Repository so bestücken, dass Sie virtuelle Maschinen über die Deployit-Konsole erstellen und zerstören können.

Ich gehe davon aus, dass Sie sich bereits bei Amazon AWS angemeldet haben. Wenn Sie das noch nicht getan haben, tun Sie es jetzt! In Amazon AWS werden wir ein Amazon Machine Image (AMI) erstellen, auf dem Apache Webserver und Apache Tomcat vorinstalliert sind. In Deployit definieren wir zwei verschiedene Host-Vorlagen, eine für einen Tomcat-Host und eine für einen Webserver-Host, die wir in einer Umgebungsvorlage zusammenfassen.

Erstellen Sie einen neuen Benutzer auf AWS

Wir werden einen speziellen Benutzer anlegen, der die gesamte Arbeit für uns auf Amazon erledigt. Die Verwendung eines anderen Benutzers für Deployit ermöglicht es uns, zu überprüfen, was Deployit tut und die Aktionen von Deployit zu kontrollieren.

Erstellen Sie den Benutzer 'cloud-pack-user' in IAM.

Rufen Sie die IAM-Verwaltungskonsole auf und erstellen Sie einen neuen Benutzer namens 'cloud-pack-user'. 00. aws-create-user  

Zugangsdaten nach ~/.ec2/cloud-pack-user-credentials.csv herunterladen

Klicken Sie auf Erstellen und laden Sie die Anmeldedaten nach ~/.ec2/cloud-pack-user-credentials.csv herunter und ändern Sie die Berechtigung auf Nur Lesen. In der Datei finden Sie den Zugangsschlüssel und den geheimen Schlüssel, die Sie später eingeben müssen, um Deployit Zugriff zu gewähren. $ chmod 0400 ~/.ec2/ cloud-pack-user-credentials.csv

Erteilen Sie dem Hauptbenutzer 'cloud-pack-user' Zugriffsrechte.

Natürlich benötigt deployit Berechtigungen zum Erstellen von Daten auf AWS! 01. aws-grant-access

Erstellen Sie eine Sicherheitsgruppe 'cloud-pack-group'.

Deployit weist den neu instanziierten Rechnern eine Sicherheitsgruppe zu. Für unser Beispiel werden wir eine einzige Sicherheitsgruppe erstellen. Rufen Sie die EC2-Verwaltungskonsole auf und erstellen Sie eine Sicherheitsgruppe 'cloud-pack-group'. Mit den folgenden Netzwerkregeln:

Hafen (Dienst)Quelle
ALLEsg-....(wolken-pack-group)
Hafen (Dienst)Quelle
0 - 65535sg-.....(wolken-pack-group)
22 (SSH)0.0.0.0/0
80 (HTTP)0.0.0.0/0
3306 (MYSQL)0.0.0.0/0
8080 (HTTP*)0.0.0.0/0

Auf der AWS-Konsole sieht es wie im folgenden Screenshot aus.

02. aws-security-group

Laden Sie den privaten Schlüssel von cloud-pack-user nach ~/.ec2/cloud-pack-user-keypair.pem herunter

Damit sich Deployit bei den Rechnern anmelden kann, müssen Sie bei Amazon AWS ein privates SSH-Schlüsselpaar erzeugen. Rufen Sie die EC2-Verwaltungskonsole auf und erstellen Sie ein neues Schlüsselpaar 'cloud-pack-user' ... Speichern Sie den privaten Schlüssel in ~/.ec2/cloud-pack-user-keypair.pem. Ändern Sie die Berechtigungen für die Datei auf nur lesen

$ chmod 0400 ~/.ec2/cloud-pack-user-keypair.pem

Erstellen Sie ein Cloud AMI

Für unser Beispiel erstellen wir ein spezielles Rechner-Image, das sowohl Apache, Tomcat und MySQL enthält und über nicht-interaktive sudo-Rechte verfügt.

Starten Sie ein Amazon-Linux-Image

Starten Sie über die Amazon AWS-Konsole eine Instanz des Images 'Amazon Linux AMI 2013.03.1, 32 bit name 'cloud-server-template'.

Installieren Sie Apache, Tomcat und Mysql

Melden Sie sich am Gerät an:

$ ssh -i ~/.ec2/cloud-pack-user-keypair.pem 
–l ec2-user 
<ip-address of created host>
$ yum update
$ yum install httpd
$ yum install tomcat7
$ chkconfig –level 3 httpd on
$ chkconfig –level 3 tomcat7 on

Nicht-interaktives sudo zulassen

Bearbeiten Sie die Datei /etc/sudoers und kommentieren Sie den Eintrag 'Defaults requiretty' aus.


#         You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults    requiretty

Stoppen Sie die Maschine

Halten Sie jetzt die Maschine an:

$ shutdown –h now

Erstellen Sie ein AMI, das auf dieser Instanz basiert.

Um neue Maschineninstanzen erstellen zu können, müssen Sie eine neue Amazon Machine Instance erstellen. Rufen Sie den Bildschirm Instanzen in derEC2-Verwaltungskonsole auf und erstellen Sie ein neues AMI auf der Grundlage unserer Instanz "cloud-server-template". 03. aws-create-image-menu 04. aws-create-ami Suchen Sie die AMI-ID in der(AMI-Anzeige Ihrer EC2-Verwaltungskonsole), in unserem Fall ami-9e9c78e9.

Installieren Sie deployit 3.9.3 Plugins

Installieren Sie die folgenden Plugins in Deployit:

  • Cloud Pack Plugin
  • EC2-Plugin
  • Tomcat-Plugin
  • Alle verfügbaren Plugins aus $DEPLOYIT_HOME/available_plugins

Fügen Sie die AWS-Anmeldeinformationen zum Deployit-Repository hinzu

Melden Sie sich bei Deployit an und erstellen Sie die AWS-Zugangsdaten "cloud-pack-user-credentials" unter "Konfiguration". Sie können den Zugangsschlüssel und die geheimen Anmeldedaten aus ~/.ec2/cloud-pack-user-credentials.csv lesen. 05. deployt aws-Anmeldedaten erstellen

Erstellen Sie eine EC2-Host-Vorlage 'apache-webserver-template'.

Erstellen Sie im Deployit-Repository eine EC2-Hostvorlage mit dem Namen 'apache-webserver-template' unter 'Konfiguration'. Die folgende Tabelle zeigt, wie Sie die verschiedenen Felder in der Host-Vorlage ausfüllen. Der Instanzdeskriptor beschreibt, wie eine Instanz des SshHosts aussehen wird, sobald die EC2-Instanz instanziiert ist.

ec2-Anmeldeinformationencloud-pack-user-credentials
(Sicherheits-)Gruppecloud-pack-group
AMI-IDaus Ihrem im vorherigen Schritt neu erstellten AMI
Regioneu-west-1
Instanz-TypT1micro
Schlüsselpaarcloud-pack-user-keypair
Benutzernameec2-Benutzer
Private Schlüsseldatei$HOME/.ec2/cloud-pack-user-keypair.pem
Instanz Deskriptor
<#escape x as x?xml>
  <list>
    <cloud.SshHost id="${hostsPath}/${hostTemplate.name}_${hostAddress}">
      <template ref="${hostTemplate.id}"/>
      <cloudId>${cloudId}</cloudId>
      <address>${hostAddress}</address>
      <#if hostTemplate.privateKeyFile??><privateKeyFile>${hostTemplate.privateKeyFile}</privateKeyFile></#if>
      <username>${hostTemplate.username}</username>
      <#if hostTemplate.password??><password>${hostTemplate.password}</password></#if>
      <os>${hostTemplate.os}</os>
      <connectionType>${hostTemplate.connectionType}</connectionType>
      <sudoUsername>root</sudoUsername>
    </cloud.SshHost>
    <www.ApacheHttpdServer id="${hostsPath}/${hostTemplate.name}_${hostAddress}/httpd">
      <host ref="${hostsPath}/${hostTemplate.name}_${hostAddress}"/>
      <startCommand>sudo apachectl stop</startCommand>
      <startWaitTime>3</startWaitTime>
      <stopCommand>sudo apachectl stop</stopCommand>
      <stopWaitTime>3</stopWaitTime>
      <restartCommand>sudo apachectl restart</restartCommand>
      <restartWaitTime>10</restartWaitTime>
      <defaultDocumentRoot>/var/www</defaultDocumentRoot>
      <configurationFragmentDirectory>/etc/httpd/conf.d</configurationFragmentDirectory>
    </www.ApacheHttpdServer>
  </list>
</#escape>

Die folgenden beiden Bildschirmfotos zeigen die Definitionen der Hostvorlagen.

06. Host-Vorlage erstellen
07. Host-Vorlage erstellen tab2

Instanziieren Sie einen Host basierend auf der 'apache-webserver-template'.

Klicken Sie nun mit der rechten Maustaste auf das Repository-Element 'apache-webserver-template' unter 'Konfiguration' und wählen Sie 'instantiieren'. Geben Sie den Namen für die Instanz 'my-apache-webserver' ein und führen Sie den Einsatzplan aus!

08. deployit instantiate host

Starten Sie den Apache-Webserver neu

Aktualisieren Sie das Repository und gehen Sie zum Ordner httpd unter dem neu erstellten Host 'apache-webserver-template-....' unter 'Infrastruktur'. Klicken Sie mit der rechten Maustaste und wählen Sie Neustart. 09. deployit restart webserver

Erstellen Sie eine EC2-Host-Vorlage 'apache-tomcat-template'.

Erstellen Sie im Deployit-Repository eine EC2-Hostvorlage mit dem Namen 'apache-tomcat-template' unter 'Konfiguration'. Alle Parameter sind dieselben wie bei der Apache Webserver-Vorlage, mit Ausnahme des Instanzdeskriptors. Der Instanzdeskriptor beschreibt, wie eine Instanz des SshHosts aussehen wird, sobald die EC2-Instanz instanziiert ist.

ec2-Anmeldeinformationencloud-pack-user-credentials
(Sicherheits-)Gruppecloud-pack-group'
AMI-IDaus Ihrem im vorherigen Schritt neu erstellten AMI
Regioneu-west-1
Instanz-TypT1micro
Schlüsselpaarcloud-pack-user-keypair
Benutzernameec2-Benutzer
Private Schlüsseldatei$HOME/.ec2/cloud-pack-user-keypair.pem
Instanz Deskriptor
<#escape x as x?xml>
<list>
<cloud.SshHost id="${hostsPath}/${hostTemplate.name}_${hostAddress}">
<template ref="${hostTemplate.id}"/>
<cloudId>${cloudId}</cloudId>
<address>${hostAddress}</address>
<#if hostTemplate.privateKeyFile??><privateKeyFile>${hostTemplate.privateKeyFile}</privateKeyFile></#if>
<username>${hostTemplate.username}</username>
<#if hostTemplate.password??><password>${hostTemplate.password}</password></#if>
<os>${hostTemplate.os}</os>
<connectionType>${hostTemplate.connectionType}</connectionType>
<sudoUsername>root</sudoUsername>
</cloud.SshHost>
<tomcat.Server id="${hostsPath}/${hostTemplate.name}_${hostAddress}/tomcat">
<host ref="${hostsPath}/${hostTemplate.name}_${hostAddress}"/>
<startCommand>sudo service tomcat7 start</startCommand>
<startWaitTime>90</startWaitTime>
<stopCommand>sudo service tomcat7 stop</stopCommand>
<stopWaitTime>10</stopWaitTime>
<home>/usr/share/tomcat7</home>
</tomcat.Server>
<tomcat.VirtualHost id="${hostsPath}/${hostTemplate.name}_${hostAddress}/tomcat/localhost">
<server ref="${hostsPath}/${hostTemplate.name}_${hostAddress}/tomcat"/>
</tomcat.VirtualHost>
</list>

Instanziieren Sie einen Host auf der Grundlage der 'apache-tomcat-template'.

Um zu testen, ob Ihre Vorlage wirklich funktioniert, können Sie einen Host instanziieren. Klicken Sie nun mit der rechten Maustaste auf das Repository-Element 'apache-tomcat-template' unter 'Konfiguration' und wählen Sie 'instanziieren'. Geben Sie den Namen für die Instanz 'my-tomcat-appserver' ein und führen Sie den Bereitstellungsplan aus! Danach können Sie über die von Deployit angezeigte IP-Adresse auf Tomcat an Port:8080 zugreifen.

Starten Sie den Tomcat-App-Server neu

Aktualisieren Sie das Repository und gehen Sie zum Ordner tomcat unter dem neu erstellten Host 'apache-tomcat-....' unter 'Infrastruktur'. Klicken Sie mit der rechten Maustaste und wählen Sie stoppen. Vergessen Sie nicht, wieder starten zu wählen!

Zerstören Sie die Instanzen

Aufräumen und Geld sparen! Sie können die Hosts jetzt zerstören und aus AWS und dem Repository entfernen, indem Sie bei den neu erstellten Host-Elementen im Repository "Zerstören" wählen. Wenn Sie sie wieder benötigen, wählen Sie einfach Instanziierung auf den Host-Vorlagen. 10. deployit zerstört den Host

Erstellen Sie eine Cloud-Umgebung

Jetzt werden die beiden Hosts-Vorlagen zu einer einzigen Umgebungsvorlage zusammengefasst.

Erstellen Sie die Umgebungsvorlage 'linux-apache-tomcat-envtemplate'.

Erstellen Sie im Deployit-Repository eine Cloud-Umgebungsvorlage mit dem Namen 'linux-apache-tomcat-envtemplate' unter 'Konfiguration'. Fügen Sie die Host-Vorlagen apache-tomcat und apache-webserver als Mitglieder hinzu. Füllen Sie die folgende Umgebungsvorlage aus. Die Vorlage erstellt ein Wörterbuch und eine Umgebung mit zwei Hosts.

<#escape x as x?xml>
<list>
<udm.Dictionary id="${environmentId}-dictionary">
<entries>
<#list hosts as h>
<#if h.name?starts_with("apache-tomcat")>
<entry key="tomcat-address">${h.address}:8080</entry>
</#if>
<#if h.name?starts_with("apache-webserver")>
<entry key="apache-address">${h.address}</entry>
</#if>
</#list>
</entries>
</udm.Dictionary>
<cloud.Environment id="${environmentId}">
<dictionaries>
<ci ref="${environmentId}-dictionary"/>
</dictionaries>
<members>
<#list hosts as h>
<ci ref="${h.id}" />
<#if h.name?starts_with("apache-webserver")>
<ci ref="${h.id}/httpd" />
</#if>
<#if h.name?starts_with("apache-tomcat")>
<ci ref="${h.id}/tomcat" />
<ci ref="${h.id}/tomcat/localhost" />
</#if>
<#if h.name?starts_with("mysql")>
<ci ref="${h.id}/mysql" />
</#if>
</#list>
</members>
</cloud.Environment>
</list>
</#escape>

Erstellen Sie ein Verzeichnis 'test' unter infrastructure

Erstellen Sie ein Verzeichnis test unter infrastructure.

Instanziieren Sie eine gesamte Umgebung auf der Grundlage der Vorlage

Klicken Sie mit der rechten Maustaste auf die 'linux-apache-tomcat-envtemplate' und wählen Sie 'Umgebung instanziieren'. Geben Sie als Parameter 'Umgebungen/Test' und 'Infrastruktur/Test' ein. Klicken Sie auf Weiter und führen Sie den Befehl aus. 11. Cloude-Umgebung instanziieren Die resultierende Infrastruktur und Umgebung sollte wie folgt aussehen. 12. Deployit Gebaute Umwelt Jetzt können Sie auf der Grundlage dieser Vorlage so viele Umgebungen erstellen, wie Sie möchten! Viel Spaß! Vergessen Sie nicht, Ihre Cloud-Umgebung zu zerstören, um Geld zu sparen! 13. Wolke zerstören Im nächsten Blog werden wir diese Cloud-Vorlage verwenden, um Anwendungen dort zu installieren.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.