DevOps-Workflow mit AWS CodeDeploy, Teil 2 Wordpress in der AWS Elastic Computing Cloud
Anbieter zum Thema
Der Deployment-Prozess von AWS CodeDeploy besteht darin, den App-Content samt aller involvierten Dateien und Skripte auf EC2-Instanzen bereitzustellen. Wie wir Wordpress in der Elastic-Computing-Cloud lauffähig machen, beleuchtet dieser zweite Teil unseres Workshops.

Als Umgebung dient zunächst weiterhin der Development-EC2-Server aus dem ersten Teil dieser Serie. Hier erstellen wir, via SSH verbunden, wie folgt eine CodeDeploy-Application:
aws deploy create-application --application-name WordPress_App
Das Kommando gibt die „Application-ID“ zurück. 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 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.
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.
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
Auch das kann man natürlich alternativ in der Console tun.
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.
Um die Update-Funktion zu testen, verbinden wir uns wieder mit dem Entwicklungsrechner und nehmen eine geringfügige Änderung 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 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.
(ID:47063017)