BlogCode-Bereitstellung in AWS automatisieren – 2

Code-Bereitstellung in AWS automatisieren – 2

WordPress-Bereitstellung in Devops mit AWS – Teil 2

Unter einem Deployment versteht AWS CodeDeploy den Prozess samt der in ihn involvierten Dateien und Skripte, um App-Content auf einer oder mehreren EC2-Instanzen bereitzustellen. In Teil 2 unseres Workshops stellen wir mit Hilfe von CodeDeploy WordPress auf EC2 bereit.

Dazu erstellen wir nun, noch immer auf unserem Entwicklungs-EC2-Server aus Teil 1 via SSH verbunden, wie folgt eine CodeDeploy-Application:

aws deploy create-application –application-name WordPress_App

Das Kommando gibt die „Application-ID“ zurück:

Das Erstellen einer Applikation in CodeDeploy

Nun müssen wir ein S3-Bucket erzeugen, das die in Teil 1 bereitgestellten Source-Dateien aufnehmen soll:

aws s3 mb s3://codedeploybucket989

Dann wechseln wir, sofern noch nicht geschehen ins Quellcode-Verzeichnis /tmp/WordPress und pushen den gesamten Inhalt einschließlich der appspec.yml-Datei auf den S3-Bucket.

aws deploy push –application-name WordPress_App –description „Das ist Revision 1 unserer Applikation WordPress-App“ –ignore-hidden-files –s3-location s3://<BUCKET>/WordPressApp.zip –source

Ist das geschehen, können wir unsere Bereitstellungsgruppe „WordPress_DG“ wir folgt erzeugen:

aws deploy create-deployment-group –application-name WordPress_App –deployment-config-name CodeDeployDefault.AllAtOnce –deployment-group-name WordPress_DG –ec2-tag-filters Key=Name,Value=CodeDeploy,Type=KEY_AND_VALUE –service-role-arn <Rollenname>

Das Erstellen einer Deployment-Gruppe in CodeDeploy

Das kann man selbstverständlich auch grafisch in der AWS Management-Console tun. Der Deployment-Typ kann übrigens „In-place“ oder „Blue/green“ sein. Ferner brauchen wir eine Service-Rolle in IAM und eine „Envrionment configuration“. Hier stehen wie in Teil 1 beschrieben „Autoscaling Gruppen“, „EC2-Instanzen“ oder „On Premise Instanzen“ zur Verfügung.

Spätestens jetzt müssen die gewünschten Ziel-EC2-Instanzen selbstverständlich auch verfügbar sein, denn CodeDeploy erzeugt selbst keine Infrastruktur. Allerdings verwenden wir in diesem Beispiel wie in Teil 1 erwähnt unsere Entwicklungs-Instanz auch als Bereitstellungziel.

Wie man sieht, spezifiziert die Deployment Gruppe ein Set individueller Ziel-Instanzen für das Deployment, die über Tags oder den Namen der Autoscaling Gruppe (sofern vorhanden) spezifiziert werden.

Das Erstellen einer Deployment-Gruppe in der AWS Management Console

Neben dem „Deployment type“ gibt es noch die „Deployment configuration“. Hier kann der Entwickler zwischen „AllAtOnce“, „HalfAtATime“ und „OneAtATime“ oder einer Custom-Configuration (Create deployment configuration) wählen. Eine Bereitstellungskonfiguration definiert Regeln, die bestimmen, wie schnell eine Anwendung bereitgestellt wird und welche Erfolgs- oder Fehlerbedingungen für eine Bereitstellung gelten.

Installiert man eine App auf mehreren Instanzen, braucht man einen Load Balancer

Nun können wir das eigentliche Deployment erzeugen, was letztendlich WordPress auf dem angegebenen Zielsystem ausrollt.

aws deploy push –application-name WordPress_App –description „This is a revision for the application WordPress_App“ –ignore-hidden-files –s3-location s3://<Sorce-Bucket-Name>/WordPressApp.zip –source

Das Erstellen eines Deployments in CodeDeploy

Auch das kann man natürlich alternativ in der Console tun.

Ein Deployment in der CodeDeploy Management-Console

Updates Management

Um zu verifizieren, dass das Deployment funktioniert hat, verbinden wir uns zunächst mit der öffentlichen IP-Adresse der Ziel-Instanz und stellen im Browser die WordPress-Installation/Konfiguration fertig.

Das Prüfen der Bereitstellung

Um die Update-Funktion zu testen, verbinden wir uns wieder mit dem Entwicklungsrechner und nehmen eine geringfügige Änderungen an den Quelldateien vor. Mit dem Linux-Befehl „sed“ können wir auf einfache Weise einige Seitenfarben in den CSS-Dateien unter /wp-conent/themes/twentyfifteen/style.css anpassen.

sed -i ’s/#fff/#768331/g‘ wp-content/themes/twentyseventeen/style.css

Die Änderungen pushen wir dann wieder mit

aws deploy push –application-name WordPress_App –s3-location s3://<Bucket-Name>/WordPressApp.zip –ignore-hidden-files

Nun müssen wir uns nur noch mit der CodeDeploy-Console verbinden, wechseln zu unserer WordPress_App, dort zum Tab „Revisions“ und klicken auf „Deploy application“. Das Ergebnis können wir nach wenigen Minuten wieder visuell auf der Ziel-Instanz überprüfen.

Bewertungen

Kundenstimme
Michael W.
Ernst & Young Retail Services GmbH
star-participantstar-participantstar-participantstar-participantstar-participant
Ich fühlte mich in diesem Seminar hervorragend betreut. Es war sehr praxisorientiert und anschaulich.
Kundenstimme
Wolfgang N.
ThyssenKrupp Nirosta
star-participantstar-participantstar-participantstar-participantstar-participant
Eine gute Adresse für das Erlernen scheinbar schwieriger und trockener Themen, die hier gut aufbereitet werden.
Kundenstimme
Mausolf B.
Struers GmbH
star-participantstar-participantstar-participantstar-participantstar-participant
Tolle Schulung - kompetenter Trainer, der geduldig auf alle Fragen einging, diese beantworten konnte und darüber hinaus viele neue Anregungen mit auf den Weg gab. Die Schulung hat Spaß gemacht.
Kundenstimme
Dimitri B.
HSBC Trinkaus
star-participantstar-participantstar-participantstar-participantstar-participant
Sehr informativ und in der Praxis wiederverwendbar.