2010-05-14 17 views
5

Devo essere in grado di aggiornare la mia istanza ec2 da un'etichetta in mercurial quando si reimposta così la mia applicazione è sempre impostata alla revisione corretta.Esiste effettivamente un hosting mercuriale * su * Amazon EC2?

Sarebbe bello poter inviare le mie modifiche a un host mercuriale e le mie istanze aggiornano automaticamente attraverso la rete ec2 quando vengono ripristinate!

Io davvero non voglio ospitare mercuriale sulla stessa istanza (o anche un'istanza dedicato)

risposta

2

Quello che vogliamo è Mercurial per supportare in modo nativo utilizzando S3 come backend per l'archiviazione dei dati, e non esiste una tale codice . Puoi forse trovare un ponte S3 da eseguire in FUSE (o un ponte S3-> DAV che potresti montare come un filesystem), e poi dire a Hg di spingere e tirare i dati da quel filesystem virtuale, ma altrimenti avresti bisogno un'istanza di ec2 dedicata per servire effettivamente i dati (è possibile avviarli su richiesta, ma la latenza è piuttosto brutta, come probabilmente sapete).

C'è un file system basato su FUSE per S3 chiamato s3fs, ma sembra che sia principalmente un driver per un'offerta commerciale.

(A parte, a seconda dell'architettura di ec2, e supponendo che si abbiano sovrapposizioni su più istanze, si potrebbe teoricamente sfruttare la natura distribuita di Hg per utilizzare le istanze esistenti per passare le modifiche tra di loro, senza un repository "root" .Se si ha solo un'istanza, ovviamente, si tratta di una non-starter.)

+0

Nick è sulla strada giusta. Sospetto che si possa fare l'hosting di sola lettura su S3 utilizzando il metodo di fallback http: // statico fornito da Mercurial. Quindi spingerei su un repo non-ec2 e usare qualcosa come s3sync per mettere la directory .hg su s3, da cui i tuoi nodi ec2 potrebbero effettuare un checkout efficiente. –

+0

Penso che la tua unica opzione realistica sia s3fs, ma devi preoccuparti delle scritture che si sovrappongono - S3 non fornisce il blocco. Ho esaminato alcune altre librerie di filesystem s3, ma sono quasi tutte implementate come iSCSI - emulano un dispositivo a blocchi in s3 che può essere montato come un disco su una macchina locale, ma non è possibile montarlo su più di una macchina alla volta. –