Het bewaren en managen van je eigen EC2 instantie.

Over Amazon EC2 (Elastic Computing) is veel te doen. En terecht, want het is een grote stap voorwaarts als het gaat om het managen van servers voor vele doeleinden en oplossingen.

Een amazon EC2 server is ook voor de 'gewone man' weggelegd. Want voor een relatief gering maandbedrag heb je de beschikking over een server welke gebaseerd is op een infrastructuur waar de gemiddelde hostingprovider van droomt.

In dit artikel beschrijf ik in het kort hoe je een EC2 instance aanmaakt, naar behoefte inricht en hier een AMI (een image) van kan maken welke je later kan gebruiken om een instance mee te starten. Dit artikel is gebaseerd op de volgende blog post en zal worden bijgewerkt naarmate tijd vordert alsmede de ervaringen met dit proces.

In dit artikel ga ik ervan uit dat je de verschillende certificaten en keys tot je beschikking hebt en een Linux gebaseerde AMI wilt maken. De instance welke in het voorbeeld is gebruikt is gebaseerd op Debian, dus commando's om packages te installeren kunnen verschillen per distributie.

Zoals je wellicht weet zullen wijzigingen welke op een EC2 instance zijn aangebracht verloren gaan wanneer je deze uizet. Je wilt eigenlijk een AMI (image) hebben welke helemaal naar behoefte is ingericht wanneer je a.d.h.v. deze AMI een instance start. Dit kan je als volgt doen;

In de AWS Management console start je een instance op van een distributie naar keuze (community AMI's zijn er genoeg voor de verschillende distributies).

Eenmaal opgestart en ingelogd op je instance dien je de private en public key van het certificaat wat je bij je account gegevens hebt gemaakt te kopieeren naar je machine. Dit doe je met het volgende (OSX) commando;

$ scp -i /Users/ikke/ec2-keys/id_my_rsa_key ~/.ec2/pk-jeprivatekeycertificaat.pem ~/.ec2/cert-jepublickeycertificaat.pem root@[instance_public_address]:/mnt

De reden dat je het naar /mnt zet is dat deze directory niet mee wordt genomen wanneer je je image gaat maken. Deze sleutels wil je allesbehalve in je AMI hebben staan dus kopieer ze niet naar een andere lokatie.

Log via ssh in op je instance en zet er de volgende toosl op welke je nodig hebt voor het maken van een nieuwe AMI.

apt-get install zip unzip ruby openssl libopenssl-ruby curl

Daarnaast heb je de Amazon AMI tools nodig die je op de volgende manier kan installeren.

curl http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip > ec2-ami-tools.zip

Deze tools dien je op een goede plek neer te zetten zodat deze zometeen kan refereren in je pad en in een environment variabele;

Een goede optie is om het als volgt te doen;

# cd ~
# curl http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip > ec2-ami-tools.zip
# mkdir ec2
# cp ec2-ami-tools.zip ec2
# cd ec2
# unzip ec2-ami-tools.zip
# ln -s ec2-ami-tools-* current
# vi ~/.bashrc

De volgende regels heb ik vervolgens aan mijn .profile bestand toegevoegd.

export EC2_AMITOOL_HOME=~/ec2/current
export PATH=${PATH}:~/ec2/current/bin

Je kan deze configuratie als volgt even herladen;

# source ~/.bashrc

Hierna, als je alles goed hebt gedaan, ben je in staat om het volgende commando aan te roepen zonder foutmeldingen;

# ec2-bundle-vol --help

Nadat je je instance zo hebt ingericht dat je tevreden bent kan je het volgende commando aanroepen om de eigen AMI te maken;

# ec2-bundle-vol -d /mnt -k /mnt/pk-jeprivatekeycertificaat.pem -c /mnt/cert-jepublickeycertificaat.pem -u XXXXXXXXXXXX

Waar de X-jes (nee geen kusjes) staan vul je je amazon account number in zonder dashes.

Als je je /mnt directory in de gaten zal houden zie je dat hier de AMI bestanden worden neergezet. Dit proces kan even duren, vooral wanneer je instance redelijk aangepast is.

Wanneer het proces voltooid is dien je de AMI naar een Amazon S3 bucket gekopieerd te worden. Maak er een aan met de tool die je hiervoor gebruikt en kies er een 'slimme' naam voor. bijv. mijnami-webserver-lamp of whatever. Het kopieeren naar S3 gaat middels het volgende commando;

# ec2-upload-bundle -b [mijnami-webserver-lamp] -m /mnt/image.manifest.xml -a [aws-access-key-id] -s [aws-secret-access-key]

Je bucket zal zeer snel gevuld zijn met de bestanden welke zijn aangemaakt tijdens het proces dat je AMI werd aangemaakt.

De laatste stap is om je AMI te registreren zodat deze in je AWS Management console beschikbaar is en je er een instance mee kan opstarten. Hiervoor gebruik ik zelf een plugin voor Firefox genaamd Elasticfox. Na het installeren van de plugin en je accountgegevens te hebben ingevuld kan je hier onder het 'tabje' images een nieuwe image registreren. Er zal je om een manifest path worden gevraagd welke zo simpel is als "mijnami-webserver-lamp/image.manifest.xml"

Wanneer je dit succesvol hebt afgerond zal je je eigen AMI terugvinden onder de AMI's link in de AWS Management console.

Reactie(s)

9 maanden geleden gepost door East Creative

Vandaag is het nieuws naar buiten gekomen dat EC2 instances nu ook op EBS gebaseerd kunnen worden. Dit is een flinke stap voorwaards dus een nieuwe tutorial zal je binnenkort kunnen verwachten.

Het registreren van een AMI zoals in de laatste stap beschreven kan je trouwens ook gewoon via je AWS Management console.

9 maanden geleden gepost door Sven

Ik zal toch eens gaan kijken naar EC2, hoor mijn collega's er ook regelmatig over. Tnx!

Recent werk