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'.
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!

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 |
| ALLE | sg-....(wolken-pack-group) |
| Hafen (Dienst) | Quelle |
| 0 - 65535 | sg-.....(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.
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".
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.

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-Anmeldeinformationen | cloud-pack-user-credentials |
| (Sicherheits-)Gruppe | cloud-pack-group |
| AMI-ID | aus Ihrem im vorherigen Schritt neu erstellten AMI |
| Region | eu-west-1 |
| Instanz-Typ | T1micro |
| Schlüsselpaar | cloud-pack-user-keypair |
| Benutzername | ec2-Benutzer |
| Private Schlüsseldatei | $HOME/.ec2/cloud-pack-user-keypair.pem |
| Instanz Deskriptor |
|
Die folgenden beiden Bildschirmfotos zeigen die Definitionen der Hostvorlagen.


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!
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.
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-Anmeldeinformationen cloud-pack-user-credentials (Sicherheits-)Gruppe cloud-pack-group' AMI-ID aus Ihrem im vorherigen Schritt neu erstellten AMI Region eu-west-1 Instanz-Typ T1micro Schlüsselpaar cloud-pack-user-keypair Benutzername ec2-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.
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.
Die resultierende Infrastruktur und Umgebung sollte wie folgt aussehen.
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!
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.
Unsere Ideen
Weitere Blogs
Contact




Die resultierende Infrastruktur und Umgebung sollte wie folgt aussehen.
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!
Im nächsten Blog werden wir diese Cloud-Vorlage verwenden, um Anwendungen dort zu installieren.


