Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

Updates

Um die Anwendung zu aktualisieren, kommt Git zum Einsatz, egal ob es sich um neuen Programmcode, ergänzendes HTML oder andere Dateien handelt. Wer Git kennt, ist mit der Befehlsfolge vertraut: »git add« , »commit« , »git aws.push« (Listing 2). Der erste Befehl fügt dem lokalen Repository Dateien hinzu, der zweite speichert sie im Index und der dritte überträgt die Änderungen zum Repository auf dem Server.

Listing 2

Aktualisierung

git aws.push
 ElasticBeanstalk git:(master) git aws.push
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 331 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 remote:
 To https://XXXXX:XXXXX@git.elasticbeanstalk.eu-west-1.amazonaws.com/v1/repos/44616e417070/commitid/37346533646166656662386330633434363938363361616635383863363963356164326535346466/environment/44616e4170702d656e76
 c56f610..74e3daf HEAD -> master

Der Push-Befehl wirkt sich direkt aus und spiegelt sich direkt auf der öffentlichen Webseite des Projekts (»http://ID.elasticbeanstalk.com/« ) wider.

Eine einfache PHP-Anwendung zum Testen der neuen Umgebung gibt beispielsweise die Umgebungsvariablen des Servers aus:

<?php
print_r($_SERVER);
?>

Mit anderen Programmiersprachen funktioniert dies analog.

Git und Zweige

Typischerweise verwendet man in Versionsverwaltungstools wie Git verschiedene Zweige, zumindest einen für die Entwicklung und einen stabilen für den Produktiveinsatz. Das funktioniert auch mit Elastic Beanstalk. Zunächst legt man mit Git einen neuen Zweig an, etwa »stable« :

$ git checkout -b stable

Fragt man nun mit »eb status« den aktuellen Stand ab, bemerkt das Programm, dass der neue Zweig nicht mit Elastic Beanstalk assoziiert ist (Listing  3). Dies ändert der Befehl:

Listing 3

Ein neuer Zweig

$ eb status
The current branch "stable" is not associated with an Elastic Beanstalk environment. Call "eb branch" to set up a new environment for this branch.
Proceeding with default settings.
URL : DanApp-env-ceqwdhduep.elasticbeanstalk.com
Status : Ready
Health : Green
$ eb branch
The current branch is "stable".
Enter an AWS Elastic Beanstalk environment name (auto-generatedvalue is "DanApp-stable-env"):
Do you want to copy the settings from environment "DanApp-env" for the newbranch? [y/n]: y

Eine neuerliche Statusabfrage bestätigt durch den ausbleibenden Hinweis auf den verwaisten Zweig, dass die Integration geklappt hat:

$ eb status
Environment "DanApp-stable-env" is not running.

Der Start der EBS-Anwendung erfolgt wie gewohnt:

$ eb start

Diese wenigen Befehle haben den aktiven Zweig umgestellt, die gesamte Konfiguration der Umgebung kopiert und einen Klon davon gestartet. Auch die AWS-Webkonsole zeigt in der Folge beide Umgebungen an, auch wenn sie per Kommandozeile gestartet wurden.Listing 4 zeigt, dass dieses Mal die »stable« -Version hochfährt, ansonsten ist alles wie beim ersten Start.

Listing 4

Start eines neuen Zweigs

Starting application "DanApp".
 Waiting for environment "DanApp-stable-env" to launch.
 2013-05-08 20:20:43 INFO createEnvironment is starting.
 2013-05-08 20:20:48 INFO Using elasticbeanstalk-eu-west-1-894012917938 as Amazon S3 storage bucket for environment data.
 2013-05-08 20:21:04 INFO Created load balancer named: awseb-e-h-AWSEBLoa-1118ULBZLSFGH
 2013-05-08 20:21:34 INFO Created security group named: awseb-e-hxaxpp3bsa-stack-AWSEBSecurityGroup-ZNUGTMANJ7WO
 2013-05-08 20:21:40 INFO Created Auto Scaling launch configuration named: awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingLaunchConfiguration-12RI7463WQWE3
 2013-05-08 20:23:25 INFO Waiting for EC2 instances to launch. This may take a few minutes.
 2013-05-08 20:23:25 INFO Created Auto Scaling group named: awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP
 2013-05-08 20:25:11 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:eu-west-1:894012917938:scalingPolicy:8bc35c42-856d-4848-8111-9ec4e4df0fcf:autoScalingGroupName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP:policyName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingScaleDownPolicy-179VH5P3Y0VH9
 2013-05-08 20:25:13 INFO Created CloudWatch alarm named: awseb-e-hxaxpp3bsa-stack-AWSEBCloudwatchAlarmLow-1Q23UL8HF2B6K
 2013-05-08 20:25:16 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:eu-west-1:894012917938:scalingPolicy:732bdc0c-4734-4d27-b02e-99d716c66dc6:autoScalingGroupName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP:policyName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingScaleUpPolicy-1Q75QYV2QAY6X
 2013-05-08 20:25:18 INFO Created CloudWatch alarm named: awseb-e-hxaxpp3bsa-stack-AWSEBCloudwatchAlarmHigh-1AD9DJ2JI6IPZ
 2013-05-08 20:26:56 INFO Application available at DanApp-stable-env-3jhebnynie.elasticbeanstalk.com.
 2013-05-08 20:26:56 INFO Successfully launched environment: DanApp-stable-env
 Application is available at "DanApp-stable-env-3jhebnynie.elasticbeanstalk.com".

Um die Applikation nun auch auf dem Webserver erreichbar zu machen, folgt der Befehl »git aws.push« (Listing 5). Nach ein paar Minuten steht auch die zweite Umgebung zur Verfügung. Beide verwenden ihren eigenen Code auf ihrer eigenen virtuellen Hardware.

Listing 5

git aws.push

$ git aws.push
Pushing to environment: DanApp-stable-env
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 589 bytes, done.
Total 7 (delta 0), reused 0 (delta 0)
remote:
 To https://AKIAJ2XDUJ2NAFFPK5SA:20130508T193045Z74f087d7af6327f3447173d8dba5de13b9c695da67033b955885c5cb4a7226b1@git.elasticbeanstalk.eu-west-1.amazonaws.com/v1/repos/44616e417070/commitid/37346533646166656662386330633434363938363361616635383863363963356164326535346466/environment/44616e4170702d737461626c652d656e76 + 04156e4...74e3daf HEAD -> master (forced update)

Um das erste Testprojekt abschließend wieder loszuwerden, genügt der Befehl »eb delete« oder ein Klick auf »Delete« im Web-Fronted.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019