sa ne jucam de-a cloudul

Azi am avut ocazia sa imi pun contul de EC2 la contributie pt. ceva concret (un setup demo cu 2 webservere si 1 loadbalancer), asa ca notez cum am facut pt. ultimii 2 oameni de pe planeta care nu au mai facut asa ceva. Scuze pentru stilul dezlanat, e mai mult pentru a-mi nota mie pasii. In functie de interes, o sa mai piaptan articolul si-l pun pe wiki.

Pasul 0: sign up for EC2 la http://aws.amazon.com/ec2/ , enjoy the phone.

Pasul 1: Get the certificates. aws.amazon.com, sign it to aws console, account, security credentials, access credentials, x509 certificates, create new. Downloadeaza si cheia privata si certificatul. Fa un director ~/.ec2 in care sa le salvezi. Pentru siguranta, chmod -R go-rwx ~/.ec2 . (Atentie mare cu certificatul ala ca are acces direct la credit card ;) ).

Pasul 2: Downloadeaza utilitarele de consola de ec2 de la http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip . Extrage bin si lib din el si muta-le in ~/.ec2. Daca n-ai sun-java6-jre, instaleaza-l.

Pasul 3: Environment-ul. Pune-ti undeva in ~/.bashrc sau unde iti pui variabile de mediu urmatoarele:

# environment variables for EC2
export EC2_HOME=~/.ec2
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=$EC2_HOME/pk-XXXXXXXXXXXXXXXXXXXXXXXX.pem
export EC2_CERT=$EC2_HOME/cert-XXXXXXXXXXXXXXXXXXXXXXXX.pem
export EC2_URL=https://ec2.eu-west-1.amazonaws.com
export JAVA_HOME=/usr/lib/jvm/java-6-sun

"XXX"-urile se inlocuiesc cu numele certificatului si cheii luate in pasul 1. De notat ca mi-am setat EC2_URL astfel incat daca nu specific regiunea sa foloseasca by default regiunea eu-west-1, unde prefer sa-mi fac instantele. In lipsa acestei variabile, va prefera ec2.amazonaws.com care este us-east-1. Diferentele probabil nu conteaza. JAVA_HOME trebuie setat daca nu l-a facut Java la instalare, trebuie sa dea in directorul care contine jre/bin/java.

Test time: Source the profile (sau deschide un terminal nou) si ruleaza 'ec2-describe-regions'. Daca nu merge, you skipped a step. Daca merge, trebuie sa apara o lista cu regiunile de ec2 (la ora actuala, 1 europa, 2 america si 2 asia). Da, e normal sa dureze >5s , get used to it :)

Pasul 4: Cheie de ssh.

ec2addkey RPETRE > ~/.ec2/RPETRE.pem
chmod 600 ~/.ec2/RPETRE.pem

(Ofc, in loc de RPETRE poti utiliza alt identificator al cheii).

Pasul 5: Pornirea unei instante noi.

Dat fiind ca Ubuntu de ceva vreme face release-uri si in cloud, am decis sama joc cu o imagine de la ei. La http://uec-images.ubuntu.com/releases/lucid/release/ sunt AMI-urile oficiale pentru 10.04 LTS, in toate regiunile, pe 32 si 64 biti. Eu am notat ami-311f2b45, varianta 32bit din eu-west-1. De notat ca AMI-urile nu sunt valide decat in regiunea aleasa via EC2_URL.

ec2-run-instances ami-311f2b45 --instance-type t1.micro -k RPETRE

Comanda de mai sus o sa returneze numele instantei (i-xxxxxx) si statusul "pending".

ec2-describe-instances i-xxxxxxx va returna starea instantei, dureaza cateva minute pana se transforma din "pending" in "running". Cand e "running", va avea un nume foarte lung, care se termina in compute.amazonaws.com. Ala e IP-ul pe care se poate face SSH. But first...

Editeaza ~/.ssh/config si adauga urmatorul paragraf:

host *.amazonaws.com
User root
StrictHostKeyChecking no
IdentityFile ~/.ec2/RPETRE.pem
UserKnownHostsFile ~/.ssh/ec2_hosts

Asta ca sa nu se planga la fiecare noua instanta ca n-a mai vazut-o si sa nu polueze known_hosts cu catralioanele de instante viitoare. Pentru cei paranoici care vor sa verifice fingerprintul cheii de ssh (bravo!), scoateti linia cu keycheck si tineti minte comanda ec2-get-console-output.

Ok, acum ar trebui ca ssh ubuntu@numefoartelungdeinstanta.compute.amazonaws.com sa mearga seamlessly (cu cheia cu care a fost creata instanta).

Cand te-ai plictisit de instanta, ruleaza ec2-terminate-instances i-xxxxxx si cateva minute mai tarziu o sa dispara. Atentie, billingul se face cu ora, incepand din momentul in care s-a lansat instanta, practic daca ii dai terminate in primele 55 de minute de cand ai pornit-o, ai de plata 2.5 centi, daca depasesti 60 de minute inca 2.5 centi, samd. (plus costul de bandwidth).

Mno, cam atat deocamdata. Daca ma mai joc, o sa mai pomenesc si despre security groups si load balancer, poate si despre storage.

Comments are closed.