Vagrant ei ollutkaan täyttä unelmaa

Kirjoitettu

Jossain vaiheessa devauspiireissä alkoi olla jonkin sortin muotia softaympäristön ajaminen joko Vagrantin tai Dockerin kautta. Siis sen sijaan, että devausserverin olisi käynnistänyt suoraan omalla koneella, se tuupattiin näihin virtuaalisiin purkkeihin.

Vagrantin ja Dockerin etuna on kieltämättä se, että niiden avulla softaprojektin saa teljettyä ihan omaan karsinaansa. Ei haittaa mitkään ristiriidat kahden eri projektin välillä, ja vaikka devausympäristön paskoisi ihan huolella, niin uusi nousee pystyy tuossa tuokiossa.

Itsekin innostuin kokeilemaan Vagrantia omissa Rails-projekteissani. Muutaman kuukauden käytön jälkeen haittapuolet alkoivat ärsyttää sen verran, että palasin takaisin simppeliin host-konedevaukseen.

No mikä sitten meni pieleen?

Ensinnäkin Vagrantin käyttö loi devausta hidastavaa overheadia. Aina kun teki mieli koodata, piti odottaa vagrantboxin käynnistymistä. Sen jälkeen piti mennä ssh:lla sisään ja käynnistää sovelluspalvelin. Tai no, ehkä sen olisi saanut automatisoitua, mutta se devauslogi on vallan kätevä olla silmien edessä.

Toinen merkittävä seikka olisi levytilan käyttö. Yksi boksi vie normaaliasetuksilla 10 gigaa. Pienemmäksi sitä ei taida saada. Isoimmillaan jouduin antamaan Vagrantille 50 gigaa tilaa.Kun on useampi projekti työn alla, tuosta kertyy äkkiä ihan julmettu määrä dataa. Siinä alkoi jo SSD-levy paukkua.

Kolmas haitta liittyy siihen, miten Vagrant mounttaa hakemiston host-koneelta guestille näkyviin. Siinä käytettävä tiedostojärjestelmä on aika nihkeä. Se ei tue symlinkkejä, joka vähän aiheuttaa ongelmia vaikka C-projekteja devatessa ja makea käyttäessä. Lisäksi Rails-devauksessa huomasin, että ihan kuin masiina ei olisi havainnut tiedostoihin tehtyjä muutoksia. Näin ollen automaattinen uudelleenlataus ei toiminut, ja devausserveriä piti käynnistellä uusiksi käsin.

Lopulta oli helppo todeta, että en ainakaan normaalissa devauksessa tarvitse Vagrantia. Rbenv ja bundler hoitavat Ruby-versioiden ja kirjastoversioiden hallinnoinnin mainiosti. Toistaiseksi en ole tarvinnut omissa projekteissani Rediksen kaltaisia lisähärpäkkeitä. Ja esimerkiksi cachetuksen tapauksessa Railsissa voi käyttää simppeliä muisticachea, jolloin vaikkapa Memcahedia ei tarvitse devauksen vuoksi asentaa.

Yhdessä asiassa Vagrant on kuitenkin ihan käyttökelpoinen. Sen avulla voi näppärästi luoda testiversion tuotantoympäristöstä.