Ubuntu ja cloud-init kotipalvelimella

Virtuaalikoneen asennuksen ei tarvitse olla vaikeaa. Ubuntu julkaisee viralliset levykuvat pilvipalveluita varten, joita voi käyttää yhtä hyvin myös kotona. Itse asiassa se ei ole edes vaikeaa, mutta ohjeita saa hieman kaivaa.

Jos olet ikinä käynnistänyt virtuaalikoneen pilveen esimerkiksi Amazonin EC2:n tai Digital Oceaniin, tiedät että se on aika helppoa ja nopeaa. Jos olet puolestaan asentanut Linux-virtuaalikoneita perinteisin menetelmin, eli esim. lataamalla CD-kuvan ja käynnistämällä siitä asennuksen, tiedät että siinä menee vähintään 5-15 minuuttia. Pilvipalveluiden käyttö maksaa kuitenkin rahaa (vaikkakaan ei paljon).

Minä olen useamman kerran halunnut tehdä jotain kikkailua, joka on luonteeltaan sellaista että haluan eristää sen käyttöläppäristäni ja palvelimestani. Tällöin virtuaalikone tulee kysymykseen. Samaan aikaan jos alkaisin asentamaan käyttöjärjestelmän perinteisin keinoin, monissa tilanteissa ehtisin unohtaa mitä olin tekemässä tuon 15 minuutin aikana, ja pahimmillaan asennus vaatisi välikysymyksiä ja jopa salasanan valintaa tai muuta vastaavaa. Kaikenlaiset kysymykset katkaisevat ajatuksen. Täytyi siis löytää ratkaisu miten saadaan kestävästi luotua uusia virtuaalikoneita nopeasti, kotona ilman pilvipalveluita, ja ilman että käytetään jo lähtökohtaisesti vanhentunutta asennusta tai sen kopiota.

Aloin tutkimaan pilvipalveuissa viime aikoina yleistynyttä cloud-init teknologiaa. Jos se ei ole tuttu entuudestaan, kyseessä on yksinkertainen tekstimuotoinen määrittely asioista, joita uudelle virtuaalikoneelle sovelletaan sen ensimmäisellä käynnistyskerralla.

Esimerkki cloud-config tiedostosta

#cloud-config
hostname: fuzz01

ssh_pwauth: False
package_upgrade: true

password: ubuntu

packages:
- vim-tiny

ssh_authorized_keys:
- ssh-rsa AAAAB...

runcmd:
- update-alternatives --set editor /usr/bin/vim.tiny

Löysinkin hetken selailulla ohjeen cloud-initin käyttöön kvm:ssä. Loppuviimein cloud-initin käyttäminen paikallisesti on itse asiassa hyvin helppoa.

Ubuntu tarjoaa viralliset virtuaalikonekuvat pilvipalveluita varten. Ne muodostetaan säännöllisesti ja automaattisesti ja ovat pohjalla useimpien pilvipalveluiden tarjoamiin Ubuntu-asennuksiin. Vastaavia löytyy varmastikin muillekin jakeluille, mutta en ole perehtynyt niihin. Ainakin Red Hat vaikuttaisi ottaneen käyttöön cloud-initin.

Vaiheet ovat:

  1. Luodaan user-data määrittely
  2. Tehdään user-datasta levykuva
  3. Käynnistetään Ubuntu Cloud -virtuaalikone ja annetaan sille edellinen

Tästä eteenpäin homma olikin vain naputtelua kun värkkäsin miten asiat tehdään skriptillä niin että käyttäminen on helppoa ja että skripti toimii helposti vielä puolen vuoden päästäkin kun Cloud image on päivittynyt.

Lopputuloksena syntyi kasa skriptejä, joilla Ubuntu Cloud-imagen käyttäminen on helppoa. Koodit löytyvät Githubista. Saa käyttäää vapaasti ja jos herää ajatuksia niin kuulen mielelläni palautetta esim. sähköpostitse. Skriptien avulla riittää kun määrittelee cloud-config kuvauksen ja antaa käskyn luoda virtuaalikoneen. Noin minuuttia myöhemmin virtuaalikone on valmis käyttöön.

PÄIVITYS 29.11.2014: Lisäsin tuen Fedora 20:lle.