Vagrant ja Windows-boxien rakentaminen

Vagrant on erittäin kätevä työkalu kehitys- ja testausympäristöjen rakentamiseen. Sillä voidaan helposti ja toistettavasti luoda virtuaalikoneita, joiden asetukset säädetään halutunlaisiksi provisioning-vaiheessa esimerkiksi skripteillä (shell, powershell) tai konfiguraationhallintatyökaluilla kuten Puppetilla. Vagrantin taustalla on yleensä käytössä Oraclen Virtuabox, mutta myös muita virtualisointialustoja tuetaan ns. providerien avulla.

Vagrantilla luodut virtuaalikoneen on myös helppo verkottaa keskenään. Vagrant toimiikin siten hyvin palvelinympäristöjen testauksessa; hyvänä esimerkkinä käy puppet-ipa -moduuli, jossa Vagrantilla luodaan FreeIPA multi-master -palvelinympäristö sekä useita asiakaskoneita eri käyttöjärjestelmillä. Toinen hyvä esimerkki on puppet-bacula -moduuli, jossa Vagrantilla luodaan täydellinen Bacula-varmuuskopiointiympäristö.

Koska virtuaalikoneet asentuvat ja konfiguroituvat automaattisesti, voidaan ne tuhota ja rakentaa uudelleen jos ne pääsevät soseutumaan. Lisäksi kullakin kehittäjällä tai sysadminilla voi olla oma testiympäristönsä, jonka rikkominen ei vaikuta kehenkään muuhun, saati tuotannossa oleviin palveluihin, millä onkin todistetusti stressiä alentava vaikutus. Vagrant onkin hyvä ottaa esimerkiksi työnkulun osaksi esimerkiksi Puppet-moduuleja kehitettäessä - etenkin silloin, kun moduulit ovat erityisen monimutkaisia, kuten yllä mainitut puppet-ipa tai puppet-bacula.

Vagrant luo virtuaalikoneita ns. boxeista eli virtuaalikonekuvista. Vaikka julkisia boxeja onkin saatavilla suuri määrä, on toisinaan tarpeen luoda myös omia boxeja. Työkaluna tähän käytetään Packeria, jonka käyttöä voi helpottaa valmiilla Boxcutter-templateita.

Esimerkiksi Windows-boxin luonti WIndows Server 2012r2:n evaluointiversion pohjalta 64-bittisessä Linuxissa onnistuu melko helposti. Ensin asennetaan Packer:

$ wget https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip
 $ unzip packer_1.1.3_linux_amd64.zip
 $ chown john:john packer
 $ chmod 755 packer
 $ mv packer /usr/local/bin
Nyt packer on asennettu. Packerin versionumero epäilemättä vaihtuu ajan saatossa, mutta tällä hetkellä tämä 1.1.3 on uusin versio. Seuraavaksi ladataan Windowsin Boxcutter-tiedosto:
$ git clone https://github.com/boxcutter/windows boxcutter-windows
 $ cd boxcutter-windows
Tässä hakemistossa on lukuisia Packerin json-muotoisia template-tiedostoja. Kustakin templatesta voidaan luoda boxeja eri Vagrant providereille (esim. Virtualbox ja VMWare).
Tämän jälkeen Windows-boxin luonti onkin hyvin suoraviivaista:
$ make virtualbox/eval-win2012r2-standard
Lopputuloksena syntyy Vagrant box:
$ ls box/virtualbox
 eval-win2012r2-standard-nocm-1.0.4.box
Tähän boxiin voidaan sitten viitata Vagrantfile-tiedostossa. Tästä lisää myöhemmin.
menucross-circle