dissabte, de desembre 11, 2010

Passos per instal·lar un servidor de SVN a EC2

Sempre és bo tenir un servidor de Subversion per a ús propi i si tens una connexió ADSL i un ordinador seriós per fer de servidor, o sigui un Linux o un Mac, pots muntar-lo al teu ordinador. Però llavors has de tenir-lo sempre encès, obrir certs ports, etc.
Una alternativa és usar una màquina virtual d'Amazon EC2, és com tenir el teu propi servidor i això fa que l'accés sigui molt fàcil. A més, si vols, pot estar sempre encès. Amazon et deixa provar durant un any el servei, després el servei costa pocs dòlars al mes, quants en concret us ho diré a principis del 2012, que és quan m'hauria de venir la primera factura :)
Què cal fer per tenir un servidor de Subversion corrent a la teva instància d'EC2?
Després de donar-nos d'alta a Amazon EC2 i dir-li a Amazon la targeta de crèdit creem una instància de Linux 64 bits de tipus Micro (la més petita i gratuïta per un any) i ens baixem la clau, amb extensió pem, que necessitem per connectar-nos-hi mitjançant ssh.
Buscant per Internet esbrinem que aquesta instància de fet és un Linux de la distribució Centos, que és molt semblant a la Red Hat Enterprise Linux.
Si la instància es diu per exemple ec2-ab-cd-efg-hij.eu-west-1.compute.amazon,
on de a fins a j seran dígits,
entrem a la instància fent, en un terminal de Mac (per a Linux deu ser molt semblant):
ssh -i fitxer_de_clau ec2-ab-cd-efg-hij.eu-west-1.compute.amazon
Un cop dins fem:
sudo su
yum install svn

i ja podem crear repositoris de Subversion:
mkdir svn
cd svn
svnadmin create repos

Per fer un checkout a la mateixa instància, fem:
cd
cd SVN
svn co file:///home/ec2-user/svn/repos
I per exemple, fem:
svn add fitxer1.txt
svn ci -m "First version of fitxer1.txt"

Però el més interessant és clar és poder baixar el codi des d'una màquina de debò i per a això cal que svn trobi el fitxer d'identitat del ssh. Vaig trobar com fer-ho aquí
S'afegeix un fitxer anomenat config al directori .ssh del teu home.
Allà hi posem una línia que comenci per IdentityFile, seguida d'un espai i el path complet de la clau amb extensió pem.
I llavors ja podem fer:
svn co svn+ssh://ec2-user@ec2-ab-cd-efg-hij.eu-west-1.compute.amazon/home/ec2-user/svn/repos
i això ens baixa el codi al nostre directori local!

A més, després d'haver afegit aquest fitxer de configuració, ja podem fer:
ssh ec2-user@ec2-ab-cd-efg-hij.eu-west-1.compute.amazon
per entrar a la instància, ja no cal usar l'opció -i per dir-li on és la clau amb l'extensió pem.

dimarts, de desembre 07, 2010

Accedint a un subversion instal·lat en una instància d'Amazon EC2 sota Windows

Si volem accedir -en Windows- al subversion instal·lat en una instància d'Amazon EC2 cal fer que el client de Subversion usi el fitxer d'identitat de l'SSH.
Usarem com a client de Subversion el Tortoise. La URL del repositori de Subversion al qual volem accedir comença per "svn+ssh".
Els passos a seguir comencen amb les instruccions que dóna Amazon per connectar-te via SSH a una instància d'EC2. Aquest pas ens serveix per convertir la clau privada d'EC2 a una clau que el PuTTY pugui fer servir, que té l'extensió ppk.
Després hem de fer que el Tortoise usi també aquesta clau.
Els passos són alguns dels que es descriuen aquí.
Hem de salvar una sessió de PuTTY. En aquesta sessió, afegim la URL de la nostra instància d'EC2. Podem afegir-hi també la clau amb extensió ppk que hem generat, així podrem fer servir aquesta sessió per connectar-nos fàcilment a la nostra instància amb el PuTTY. Després hem d'afegir la clau privada amb extensió ppk al Pageant, que és un programa que s'instal·la amb el PuTTY si instal·les el paquet complet del PuTTY, tal com suggereix Amazon a la documentació esmentada a dalt.
Després hi ha prou amb què el Tortoise usi el nom de sessió que hem salvat al PuTTY, per exemple:
svn+ssh://svn-session/home/ec2-user/svn/project-directory
Un error a evitar és especificar l'executable de SSH a les opcions del Tortoise, això fa que surti un error bastant difícil de resoldre, com malauradament he experimentat. Els detalls són aquí.