Azure ARM (Azure Resource Manager) mallipohjat kuvaavat monimutkaisia laite- ja ohjelmistoympäristöjä tekstimuotoisena koodina. Oppilaitokset voivat hyödyntää Azuren ARM-mallipohjia luodakseen täysin käyttövalmiin ympäristön opiskelijoiden käyttöön tarpeen mukaan muutamassa minuutissa. Kun kurssi on ohi, ympäristö poistetaan muutamalla napinpainalluksella. Tässä blogiartikkelissa kerrotaan miten voit hyödyntää mallipohjia omassa organisaatiossasi, ja saat valmiit mallipohjat esimerkiksi WordPress-oppimisympäristön toteuttamiseen.

Automaatiota oppilaitoksille

Oppilaitoksessa X järjestetään aikuisopiskelijoille tarpeen mukaan WordPress (WP) käyttökursseja. Kurssilla on tyypillisesti 20-30 oppilasta, ja jokainen oppilas tarvitsee oman, käyttövalmiin WordPress-ympäristön kurssin suorittamiseksi. Ohjaaja antaa kurssin alkaessa opiskelijalle henkilökohtaisen WordPress URL-osoitteen, sekä WP:n käyttäjätunnuksen ja salasanan. Kysynnän mukaan järjestettävä kurssi kestää viikon, jonka päätyttyä ympäristöt poistetaan seuraavaan toteutuskertaan asti.

Oppilaitoksen IT-osasto luo Azure-ympäristön päivää ennen kurssin alkua käyttäen Azuren ARM-mallipohjaa, joka kuvaa kurssilla käytetyn wordpress ympäristön. Mallipohjaa käyttävä Powershell-skripti luo parametrina annettavan koneiden lukumäärän verran WordPress-virtuaalikoneita, sekä tekee palomuurit sekä verkkoympäristön laitteille. Luonnin jälkeen apuskripti kokoaa luotujen WordPress-koneiden URL-osoitteet, käyttäjätunnukset ja salasanat annettavaksi kurssin ohjaajalle, joka jakaa ne edelleen oppilaille. Kurssin päätyttyä IT-osasto poistaa ympäristön käytöstä poistamalla Azuren Resurssiryhmän (Resource Group) muutamalla napin painalluksella. Sekä luonti että poisto tapahtuu minuuteissa.

Edellisen lisäksi Azure Automation – toimintoa käytetään yleensä käynnistämään virtuaalikoneet aamuisin, ja sammuttamaan ne illalla automaattisesti. Tavoitteena minimoida kustannuksia, koska Azuren virtuaalikoneista laskutetaan käynnissäolominuuttien mukaan.

Muut käyttökohteet

Esimerkin skripti luo Bitnami WordPress – virtuaalikoneita, mutta samaa skriptipohjaa voidaan käyttää luomaan mikä tahansa Azure marketplacelta löytyvä muu sovellus. Muutama esimerkki; täysin käyttövalmis LAMP stack, MySQL, Moodle, Apache, Jenkins tai PostgreSQL. WordPress muuttuu skriptissä toiseksi sovellukseksi muuttamalla ARM-mallipohjan käyttämää virtuaalikoneen levykuvaa.

Seuraavaksi käydään läpi miten skriptiä ja mallipohjaa käytetään.

Toteutus käytännössä

Esivaatimukset

  • Oppilaitoksella on olemassa oleva Azure-tilaus (Subscription), ja admin-tason käyttäjätunnukset Azure portaaliin.
  • Powershell, jossa mukana AzureRM moduli asennettuna johonkin paikalliseen IT:n työasemaan skriptien ajamista varten.
  • Azure Subscription ID, eli azuren tilauksen tunnus. Tätä tarvitaan skriptin ajamisen yhteydessä yksilöimään mitä Azure-tilausta käytetään ympäristön luomisessa.
    • Mene portal.azure.com, valitse Subscription vasemmasta valikosta. Valitse tilaus listalta, ja tilauksen Subscription ID näkyy tilauksen “Overview” osioissa (pitkä merkkijono).

Hae tiedostot

Hae tiedostot alla olevalla napilla. Lataa kaikki tiedostot powershell-työasemaasi samaan hakemistoon.

  1. azuredeploy.json – ympäristön kuvaava ARM-mallipohjatiedosto.
  2. azuredeploy.parameters.json – Tätä tiedostoa käytetään välittämään parametrit powershellistä ARM-mallipohjalle. Powershell ylikirjoittaa tämän joka ajokerralla.
  3. CreateWordpressMachines.ps1 – Komentotiedosto, joka käskee Azurea luomaan ARM-mallipohjassa kuvatun ympäristön.

Aputiedostot:

  1. GetWpPasswords.ps1 – Apuskripti joka hakee luotujen WordPressien URL-osoitteet, käyttäjätunnukset ja salasanat koneiden Boot-lokista.
  2. azure-automation directory – aputiedostot. Jos haluat luoda Azure Automation Runbookin joka käynnistää ja sammuttaa ajastetusti kaikki virtuaalikoneet, tässä erinomainen lähtökohta.

Skriptin suorittaminen Powershellillä

Käynnistä Windows Powershell komentoriviohjelma, tai käytä Powershell ISEä ajamaan CreateWordpressMachines.ps1 skripti siinä hakemistossa, johon tallensit ladatut tiedostot.

Kuva: Powershell ajaa skriptiämme

Skripti kysyy aluksi seuraavat kysymykset:

  1. Subscription ID jonka kopioit Azure portaalista.
  2. Resource Group name uuden resurssigroupin nimi, johon kaikki resurssit tullaan sijoittamaan
  3. Number of machines – haluttu luotavien koneiden lukumäärä (min 3, max 250)
  4. Admin username & password jotka tullaan laittamaan linux virtuaalikoneisiin. Normaalit salasanasäännöt voimassa(kirjaimet, numerot, erikoismerkki vaaditaan)
  5. Base name for deployment. (vain pieniä kirjaimia, ei välilyöntejä, 6 – 16 merkkiä). Tämä “perusnimi” tulee osaksi kaikkia luotavia resursseja. Virtuaalikoneet tullaan nimeämään tyyliin perusnimi0, perusnimi1, perusnimi2 jne. Vain pieniä kirjaimia, muista!

Kysymysten jälkeen skripti pyytää kirjautumaan Azureen käyttäjätunnuksella ja salasanalla, jolla on riittävät oikeudet suorittaa resurssien luonti valittuun tilaukseen. Sisäänkirjautumisen jälkeen skripti aloittaa resurssien luonnin, jonka etenemistä voit seurata komentoikkunan lisäksi Azure portaalissa. Kun resurssit on luotu, komentoikkunaan tulee “All finished” – ilmoitus, jonka jälkeen virtuaalikoneet ovat luotu ja käynnissä Azuressa. Luonti kestää yleensä 8-15 minuuttia.

Tämän jälkeen aja HETI apuskripti GetWpPasswords.ps1, joka poimii luotujen WordPressien URL-osoitteet, WP-käyttäjätunnukset ja salasanat siistiin listaan, jonka voit antaa kurssin ohjaajalle. Edellämainitut tiedot ovat tallennettuna WP-koneiden Boot-lokiin, ja tiedot katoavat seuraavalla virtuaalikoneen käynnistyskerralla. Älä siis sammuta koneita ennenkuin olet ajanut tiedot poimivan skriptin.

Virtuaalikoneiden sammuttaminen ja käynnistys

Virtuaalikoneet voi käynnistää ja sammuttaa käsin käsin Azure portaalin kautta. Valitse ensin luomasi resurssigroup, ja sieltä haluttu virtuaalikone. Pysäytä virtuaalikone yläpalkin Stop-napilla, jolloin virtuaalikoneen laskutus loppuu (muista, minuuttipohjainen veloitus) ja käynnistä uudelleen Start-napilla (veloitus alkaa).

Käsin sammuttamisen ja käynnistämisen sijaan on yleisesti tapana luoda Azure Automation – tili, johon luodaan automaatio virtuaalikoneiden ajastettua käynnistämistä ja sammuttamista varten. Automation accountin perustamiseta ei käsitellä tarkemmin tässä artikkelissa, linkeistä löydät lisätietoa tästäkin.

Virtuaalikoneiden poisto kurssin loputtua

Mene Azure portaaliin (portal.azure.com) ja poista (delete) luomasi resource group. Valitse vasemmasta valikosta “Resource groups”, avaa luomasi resurssiryhmä ja valitse “Overview” toiminnosta yläpalkin “Delete”.  Portaali kysyy vielä varmistuksen, jonka jälkeen se poistaa resurssiryhmän sisältöineen, ja laskutus resurssien käytöstä loppuu. Kun kurssi järjestetään uudelleen, aloita ohjeet alusta.

Kustannukset?

Mitä kustantaa viikon mittainen WP kurssi 30 oppilaalle? Noin 50 EUR. Kustannukset lasketaan näin: Mene Azure pricing calculator – sivulle, joka laskee hinnat päivän listahintojen mukaan. Laskukaava menee seuraavasti:

  • Basic A1 ubuntu virtuaalikoneiden lkm * käynnissäolotunnit +
  • Arviolta 5 GiB levytilaa per virtuaalikoneen levy.

29.5.2017 listahinnoilla 30 virtuaalikonetta viideksi arkipäiväksi niin, että koneet käynnistetään aamulla 07:00 ja sammutetaan 19:00. Jokainen virtuaalikone käyttää 5 GiBs levyä (vähän yliarvioituna).

  • Tunnit = 30 vm * 5 päivää * 12 h = 1800 tuntia
  • Blob storage levyille: 30 vm * 5 GiB = 150 GiB

Virtuaalikoneet: 40,98 EUR + storage 6,33 EUR =

Yhteensä 47,32 EUR

Laskurista saat myös arvion itsellesi myös Excelinä.

Kuva: Azure pricing calculator, https://azure.microsoft.com/en-us/pricing/

Lisätietoa uteliaille

Avaa ihmeessä tekstieditorilla ps1 ja .json tiedostot! Powershell tiedostot (ps1) sisältävät komennot, jotka suorittavat pyydetyt toiminnot. template.json on itse ympäristön kuvaava ARM-mallipohja.

ARM-mallipohja on json-muotoinen kuvaus ympäristön resursseista ja niiden suhteesta toisiinsa. Jos avaat tiedoston, niin näet kuinka ympäristö muodostuu. Ensin luodaan data- ja diagnostiikkalevyt kaikille virtuaalikoneille, sekä koneiden verkkokortit. Tämän jälkeen skripti luo palomuurin (Network Security Group) sekä yhden virtuaaliverkon ja sille aliverkon. Tämän jälkeen luodan itse virtuaalikoneet, liitetään niihin luodut levyt sekä verkkokortit.

ARM tiedostojen muokkaus ja powershell ovat hieman oma taiteenlajinsa, mutta pienellä ohjelmointikokemuksella pääsee jo hyvin pitkälle. Kuten aiemmin todettiin, kuvattua ARM-menetelmää voi käyttää minkä tahansa ympäristön pystyttämiseen Azuressa. Esimerkkiskripti luo tällä kertaa Bitnamin WordPress-koneita, mutta vaihtamalla virtuaalikoneen määrityksiä ARM-tiedostossa, skripti voi luoda mitä tahansa muitakin virtuaalikoneita. Kokeile rohkeasti!

Tässä muutama linkki kokeilujen tueksi:

Pieni huomautus loppuun: Tämä on kirjoitettu 26.5.2017. Skriptit, kirjastot ja käytännöt vaihtuvat yleensä melko nopeasti. Skriptit on testattu tänään, ja ne toimivat. Huomenna ne eivät enää ehkä toimi, enkä voi antaa näille toimintatakuita. Jos huomaat jonkin hajonneen, tai artikkelin sisältämät linkit eivät enää johda mihinkään, ole ystävällinen ja ilmoita siitä minulle.

Hauskat skriptaukset, ja rohkeasti kokeilemaan!