đšâđŹ Einsteinium
Docker vs. Multipass
Docker sopii moneen, mutta jos tarve on hallita esim. systemd-palveluita, luoda kÀyttÀjiÀ, tai sitoa eri prosesseja yhteen tavalla tai toisella, niin virtuaalikone on parempi ratkaisu. KehitysympÀristömme on Ubuntu, joten Canonicalin oma Multipass on oiva valinta. Qemu mahdollistaa rautatason virtualisoinnin (KVM), joten suorituskyky on parempi kuin tyypin 2 hypervisoreilla (VirtualBox, VMware).
Muut OS:t?
Multipass toimii myös macOS ja Windows -kÀyttöjÀrjestelmissÀ, mutta nÀiden kÀyttöÀ ei erikseen neuvoja tÀllÀ kurssilla. Windowsissa default local.driver
on hyperv, joten jos kÀytÀt Windowsia, niin Windows Pro on suositeltu. Muutoin joudut tyytymÀÀn VirtualBoxiin driverinÀ.
TehtÀvÀt
TehtÀvÀ: Argumenttien parsiminen
Luo skripti arguments.sh
, joka vastaa seuraavaan kÀyttökuvaukseen: Usage: arguments.sh [-n instance_name] [-c cloud-init-file] [FILE]..
Skriptin tulee tulostaa argumentit. Alla muutama esimerkki skriptin ajamisesta:
Image name: Name Here
Cloud Init file: config/notexists.yaml
Positional arguments one by one:
abc
def
efg
Vihje
KÀytÀ getopts
-rakennetta. Ohjeet esim. Greg's Wiki. Mallia voit ottaa myös runbash.sh
-skriptistÀ.
TehtÀvÀ: Multipass-harjoituskenttÀ
Luo skripti, joka alustaa sinulle Multipassin avulla harjoituskentÀn. Tarvitset tÀssÀ ylemmÀn tehtÀvÀn apuja: sinun pitÀÀ voida antaa sille argumentteja.
Aloita tehtÀvÀ asentamalla Canonical Multipass jos se ei ole jo asennettu. On suositeltavaa tehdÀ tÀmÀ tehtÀvÀ, kuten muutkin kurssin tehtÀvÀt, Ubuntu Linuxissa. Voit omalla vastuulla kuitenkin asentaa Multipassin myös macOS- ja Windows-kÀyttöjÀrjestelmiin. JÀlkimmÀisessÀ tapauksessa suosittelen Windows Pro -versiota, jotta saat Hyper-V:n kÀyttöön.
Warning
Huomaa, ettÀ nÀitÀ komentoja ei ajeta kontissa. NÀmÀ ajetaan sinun host-koneella.
Komennon pitÀisi toimia esimerkiksi nÀin:
Komennossa kestÀÀ ympÀristöstÀsi riippuen noin minuutti: se lataa ~500 megatavun Ubuntu cloud imagen koneellesi ja kÀynnistÀÀ sen pohjalta virtuaalikoneen. TÀmÀn jÀlkeen voit ottaa yhteyttÀ koneeseen komennolla multipass shell harjoituskentta
. Skripti hello.sh
tulisi löytyÀ ubuntu-kÀyttÀjÀn kotihakemistosta. Voit ajaa sen komennolla bash hello.sh
tai ./hello.sh
- aivan kuten olet aiemmin oppinut. PÀÀset ulos koneesta komennolla exit
tai Ctrl+D pikanÀppÀimellÀ.
Vihje
Skriptin pitÀisi ajaisi seuraavanlaisia komentoja:
Note
Kun haluat tuhota komeet, aja multipass delete <koneennimi>
tai multipass delete --all
. Kone jÀÀ vielÀ kummittelemaan, etkÀ voi luoda uutta samannimistÀ ennen kuin ajat multipass purge
.
TehtÀvÀ: Einstein-level OppimispÀivÀkirja
Automatisoi oppimispÀivÀkirjan alustaminen Cookiecutter-templaatista ja tarvittavien riippuvuuksien asentaminen. Luo skripti, joka ottaa argumenttinaan konfiguraatiotiedoston, josta se lukee muuttujat itselleen. NÀmÀ muuttuja-arvot mÀÀrÀÀvÀt, minkÀ kurssin oppimispÀivÀkirjan skripti alustaa, mihin lokaatioon se tulee ja kuka on kirjoittaja. NÀiden vaiheiden pitÀisi olla sinulle tuttuja muilta minun kursseiltani.
Konfiguraatiotiedosto on YAML. Sen rakenne neuvotaan Cookiecutter: User Config-sivulla. MeidÀn tapauksessa se on esimerkiksi:
default_context:
course_name: "Skriptiohjelmointi 2054"
author: "John Anderton"
containing_folder: "/home/john/Code/skriptiohjelmointi-2054/johnanderton"
__week_nro: "42"
MitÀ YAML:iin?
Default context -arvot eivÀt ole sattumanvaraisia muuttujanimiÀ. KÀytetty Cookiecutter-templaatti, tai tarkemmin sen gh:sourander/kamk-coociecutters/oppimispaivakirja/cookiecutter.json-tiedosto mÀÀrittelee ne. Tutustu tiedostoon ja sen logiikkaan. Huomaa, ettÀ tiedosto ei ole raakakoodattu JSON vaan Jinja2-pohjainen templaatti - tavallaan skriptausta sekin!
Kun olet sitÀ mieltÀ, ettÀ skripti on kenties valmis ajettavaksi, aja:
# Luo
./runmulti.sh -n oppimispaivakirja scripts/luo-paivakirja.sh config/skriptiohjelmointi-2054.yaml
# YhdistĂ€ âŁïž-koneeseen
multipass shell oppimispaivakirja
TÀmÀn jÀlkeen olet valmis kokeilemaan skriptin ajamista virtuaalikoneen sisÀllÀ.
Ideaalitilanne on, ettÀ skripti ei kysy kÀyttÀjÀn syötettÀ. Sen sijaan skripti lukee konfiguraatiotiedoston ja suorittaa tarvittavat toimenpiteet, ja lopuksi tulostaa, missÀ oppimispÀivÀkirja sijaitsee. Tarkka tulosteen muotoilu ei ole tÀrkeÀ, mutta se voi olla nÀtti ja hymiöitÀ hyödyntÀvÀ. Esimerkiksi:
TehtÀvÀ: OppimispÀivÀkirjan jatkot
TÀmÀ tehtÀvÀ on edellisen viimeisen viimeistelyÀ ja varmistelua. Kun olet saanut yllÀ olevan tehtÀvÀn suoritettua, niin haluat varmasti myös nÀhdÀ oppimispÀivÀkirjan selaimessa? TÀmÀ onnistuu seuraavilla komennoilla:
# Varmista ettÀ uv löytyy PATH:sta
source .bashrc
# Mene oikeaan hakemistoon
cd Code/skriptiohjelmointi-2025/yourname/docs
# Aja mkdocs lisÀosineen uv:lla
uv tool run \
--with mkdocs-material \
--with mkdocs-awesome-nav \
mkdocs serve --dev-addr 0.0.0.0:8000
TÀmÀn jÀlkeen selvitÀ virtuaalikoneen IP-osoite ja yhdistÀ siihen. Virtuaaliosoitteen nÀet ajamalla komennon multipass info <koneennimi>
. TÀmÀn jÀlkeen voit avata selaimen ja kirjoittaa osoiteriville http://<virtuaalikoneen-ip>:8000
.
Nyt olet virallisesti varmistanut skripti, joten se olisi valmiina kĂ€ytetĂ€vĂ€ksi myös muuallakin kuin virtuaalikoneessa. Success! đ