Infra as Code course
Palvelinten Hallinta 2023 kevät

Control 10, 100, 1000 many computers.

Or control 2071 computers, like Jussi did on a earlier course. Or handle 7 different operating systems and OS versions with a single master, like Matias.

Previous instance got excellent 5.0 / 5 feedback - all respondents gave the best grade 5. Palvelinten hallinta ici001as3a-3001.

Course name and codePalvelinten hallinta ici001as3a-3001 Tue; ici001as3a-3002 Thu
Timing2023 period 4 late spring, w13-w20
Credits5 cr
ClassesTue 17:40 - 20:30, online, mandatory participation (-3001); OR Thu 08:15-13:45 online or pa3014, mandatory participation (-3002).
Max students30
LanguageFinnish (+reading material in English)
RemoteTuesday -3001 fully remote. Thursday: blended, online+pa3014.
Feedback5.0 / 5 Excellent feedback Five star experience
ServicesMoodle: Palvelinten hallinta, Jitsi, Laksu
First class2023-03-28 w13 Tue 17:40, Tero emailed video conference link. OR 2023-03-30 w13 Thu 08:15 Pasila pa3014 (physically there).

My current research area is configuration management systems: I gave an invited speech in IEEE ICIM Chengdu and a plenary speech in IEEE ICIM Oxford; I’ve also been teaching these modern methods to companies. Previous feedback for this course has been from very good 4.3 to excellent 4.9 5.0 out of 5.

As the course is in Finnish, the rest of this page will be in Finnish.

Opintojakson suoritettuaan opiskelija

  • Osaa hallita palvelimia kuvailemalla tavoitetilan (idempotenssi)
  • Osaa tehdä asetukset pelkkänä tekstinä ja versioitavasti (infrastruktuuri koodina)
  • Pystyy tekemään tavalliset ylläpitotoimet valitulla työkalulla Saltilla (yksi totuus)

Esitiedot

Esitiedot, kertaa nämä.

Opettele komennot ja hakemistot ulkoa. Harjoittele niitä kokeilemalla moneen kertaan Linuxissa.

Alustava aikataulu

Kurssi kestää 8 viikkoa. Edellyttää aktiivista osallistumista etäopetukseen videokonfferensissa lukkariin merkittynä aikana.

Läksyt 24 h ennen seuraavan lähiopetuskerran alkua.

Tämä alustava aikataulu elää kurssin aikana.

Perusteet

    1. w13 Hello Salt! Master-slave, pull -arkkitehtuuri. Komentojen etäsuoritus (cmd.run, pkg.install). Tietojen kerääminen orjista (grains.items). Idempotentti konfiguraatio (foo.sls, top.sls). Esimerkkejä tiloista (file.managed). Torstain ryhmä Pasilassa pa3014
    1. w14 Package-file-service. Demonien hallinta. Käsin tehdyn konfiguraation automatisointi. Aikajanan käyttö muutosten tunnistamisessa. Orjan tavoittaminen tuntemattomasta osoitteesta, NAT ja tulimuurin takaa. Torstain ryhmä Pasilassa pa3014
    1. w15 Versionhallinta. Git: init, clone, add, commit, pull, push, log. GitHub ja muut avustavat palvelut. Torstain ryhmä Pasilassa pa3014

Edistynyttä asiaa

    1. w16 Omat komennot Torstain ryhmä Pasilassa pa3014
    1. w17 Salt Windowsilla Torstain ryhmä Pasilassa pa3014
    1. w18 Omien modulien rakentamista Tiistain ryhmällä ei online-oppituntia 2023-05-02, vaan itsenäistä työskentelyä. Torstain ryhmä Pasilassa pa3014
    1. w19 Palautetta ja vinkkejä omiin moduleihin. Tiistain ryhmä online tutulla kanavalla. Torstain ryhmä Pasilassa pa3014.

Loppuhuipennus

    1. w20 Omien modulien esittely. Molempien toteutusten esitykset tiistaina 17:40 videokonfferenssissa. Helatorstaina ei ole opetusta.

Arviointi

Osien ohjeelliset painoarvot ovat

  • Kotitehtävät 50%
  • Oma moduli 50%

Arvosana perustuu kokonaisarvioon suorituksista. Kaikki kotitehtävät pitää tehdä. Etäopetukseen pitää osallistua aktiivisesti.

Anna palautetta

Palaute on todella tärkeä tapa kehittää kurssia – kiitos kommenteista jo etukäteen. Palaute kahteen kanavaan

1) Vapaamuotoinen palaute kommenttina tämän kurssisivun perään

Vapaamuotoinen palaute kommenttina tämän kurssisivun perään

Vapaamuotoiseen palautteeseen saa kirjoittaa mitä vain, eikä kysymyksiä tarvitse toistaa. Mutta tässä vinkiksi:

  • Opitko jotakin – eli osaatko nyt sellaista, mitä et osannut ennen kurssia?
  • Teitkö jotain ensimmäistä kertaa? Käytit modernia hallintatyökalua (Salt tms), kirjoitit idempotentin tilan, kirjoitit infraa koodina...
  • Oliko opittu hyödyllistä? Luuletko, että sille on käyttöä esim. tulevaisuudessa töissä tai kotona?
  • Mitä mieltä olit läksyistä? Luku/video/podcast -materiaalista? Hands-on tehtävistä?
  • Miten voisin parantaa kurssia?
  • Viihdyitkö kurssilla?
  • Suosittelisitko kurssia? Kenelle kurssi sopisi? Koulutoverille tai kollegalle?

2) Numeerinen palaute Haaga-Helian palautejärjestelmään MyNetissa

Numeerinen palaute Haaga-Helian palautejärjestelmään MyNetissa

Numeerisen palautteen avulla mm. verrataan Haaga-Helian kursseja toisiinsa. On tärkeää saada jokaiselta palaute, jotta tulos on tilastollisesti merkitsevä.

Numeeriset: Asteikko 1-välttävä (huonoin) ... 5-kiitettävä (paras)

  • Oma aktiivisuutesi opiskelussa 1-5
  • Osaamistavoitteiden saavuttaminen 1-5
  • Työskentelytavat tukivat oppimista 1-5
  • Opiskeluympäristö tuki oppimista 1-5
  • Hyödyllisyys työelämään 1-5

Avoimet kysymykset (näihin voi myös kopioida samat vastaukset jotka kirjoitit aiemmin)

  • Mitkä asiat edistivät oppimistasi?
  • Miten kehittäisit toteutusta / toteutuskokonaisuutta, jotta osaamistavoitteet saavutettaisiin paremmin?

Kokonaisarviosi toteutuksesta / toteutuskokonaisuudesta 1-5

Suosittelisitko 1 - 10 (1 en varmasti, 10 aion varmasti suositella tai olen jo suositellut)

Kiitos palautteesta ja jännittävästä kurssista! Seuraavilla kursseilla nähdään.

Läksyt

Palautus 24 h ennen seuraavaa lukujärjestykseen merkittyä aikaa (riippumatta siitä, onko silloin videotapaamista). Weppisivulle (HTML), ja palauta linkki Laksuun. Halutessasi voit laittaa linkin myös kommentiksi tämän sivun perään, niin sivusi saa lisää kävijöitä ja nousee PageRankissa.

Nämä läksyt ovat alustavia. Läksyt ovat virallisia vasta, kun ne on annettu tunnilla. Tämä on edistynyt kurssi, joten pystymme tekemään muutoksia kurssin kuluessa ja sovittamaan läksyt aiheen mukaan. Jos et uskalla tai muuten halua julkaista, voit laittaa weppisivun salasanan taakse (sama salasana koko kurssille ja jokaiselle tehtävälle, ei kirjautumista eri tunnuksilla eri henkilöille) ja jakaa salasanan kurssilaisten kanssa - mutta suosittelen julkaisua. Kotisivutilaa saa esim wordpress.com, github.com, gitlab.com ja monista muista paikoista.

h1 Suolaa

  • x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
  • a) Asenna Debian 11 Vagrantilla.
  • b) Asenna artikkelissa (Karvinen 2023) kuvattu kolmen koneen verkko
  • c) Hyväksy orjat (t001 ja t002) ohjattavaksi ja testaa yhteys
  • d) Näytä esimerkit seuraavista tiloista: package, file, service, user, cmd.run. (voit käyttää state.single)
  • e) Tee infraa koodina, esim oma hei maailma.

Vinkit

h2 Demonit

  • x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
  • a) Asenna OpenSSH-palvelin käsin. Laita se kuuntelemaan oletusportin lisäksi jotain toista porttia. Testaa lopputulos.
  • b) Automatisoi äsken tekemäsi SSH-konfiguraatio Saltilla.
  • c) Tee jokin muu asetus äsken tekemääsi SSH-palveluun. Osoita testein, että Salt käynnistää demonin uudelleen, kun asetustiedosto on muuttunut (jolloin uudet asetukset tulevat voimaan). Osoita, että Saltin ajaminen ei käynnistä demonia uudelleen, jos asetukset eivät ole muuttuneet. (Helpoin asetus on lisätä kolmas portti mukaan, haastavampia löytyy esim 'man sshd_config').
  • d) Vapaaehtoinen: Säädä jotain toista demonia Saltilla, esim Apache.

Vinkkejä

  • Ensin käsin, vasta sitten automaattisesti
  • Pienin testattava kokonaisuus kerrallaan
  • Dokumentoi samalla kun teet
  • Kannattaa jättää SSH:sta myös vakioportti 22/tcp auki. Muuten 'vagrant ssh' ei toimi. SSH:ssa voi olla useampi portti yhtä aikaa auki.
  • Tiedoston polku (file.managed, source) toimii näin: source: "salt://ssh/sshd_config"
    • "salt://" vastaa herran polkua "/srv/salt/", joka lähetetään kaikkien orjien käyttöön
    • "ssh/" kansio /srv/salt/ alla, modulin kansio
    • "sshd_config" mallitiedosto, samassa kansiossa kuin init.sls
  • Toisin sanottuna init.sls mainittu source "salt://ssh/sshd_config" viittaa masterin tiedostoon "/srv/salt/ssh/sshd_config".
  • Testaa välivaiheet. Testaa lopputulos.
  • Miksi? Selitä, miksi eri komennot tai asetukset on valittu. Selitä tulokset.

h3 Git

a) Online. Tee uusi varasto GitHubiin (tai Gitlabiin tai mihin vain vastaavaan palveluun). Varaston nimessä ja lyhyessä kuvauksessa tulee olla sana "winter". Aiemmin tehty varasto ei kelpaa. (Muista tehdä varastoon tiedostoja luomisvaiheessa, esim README.md ja GNU General Public License 3)

b) Dolly. Kloonaa edellisessä kohdassa tehty uusi varasto itsellesi, tee muutoksia, puske ne palvelimelle, ja näytä, että ne ilmestyvät weppiliittymään.

c) Doh! Tee tyhmä muutos gittiin, älä tee commit:tia. Tuhoa huonot muutokset ‘git reset --hard’. Huomaa, että tässä toiminnossa ei ole peruutusnappia.

d) Tukki. Tarkastele ja selitä varastosi lokia. Tarkista, että nimesi ja sähköpostiosoitteesi näkyy haluamallasi tavalla ja korjaa tarvittaessa.

e) Vapaaehtoinen: yhteistyötä: anna kaverillesi (tai alter egollesi) oikeus kirjoittaa varastoosi (commit access). Tehkää molemmat muutoksia varastoon gitillä.

f) Vapaaehtoinen: Suolattu rakki. Tee uusi moduli. Kloonaa varastosi toiselle koneelle (tai poista srv/salt ja palauta se kloonaamalla) ja jatka sillä. (Salt tiedostot mistä vain hakemistosta, huomaa suhteellinen polku: 'sudo salt-call --local --file-root srv/salt/ state.apply')

g) Vapaaehtoinen: Se toinen järjestelmä: kokeile Gittiä eri käyttöjärjestelmällä kuin sillä, millä teit muut harjoitukset. Selitä niin, että kyseistä järjestelmää osaamatonkin onnistuu. Mahdollisuuksia on runsaasti: Debian, Fedora, Windows, OSX...

Vinkkejä

  • Kannattaa käyttää SSH-osoitetta varastoa kloonatessa, kirjautuminen julkisella ssh-avaimella
  • ssh-keygen (enter, enter), cat $HOME/.ssh/id_rsa.pub, Github: Settings: SSH keys...
  • Github-varaston sivulta Code: SSH. git clone https://github.com/hattupuu/earplotter.git ; cd earplotter
  • git pull
  • git add . && git commit; git pull && git push
  • git log --patch
  • git config --global user.email "tonystudent@example.com"
  • git config --global user.name "Tony Student"
  • Commit message: yksi englanninkielinen virke määräysmuodossa ja nykyajassa: "Add reverse thurst estimation to main view"
  • GitHub-varastoon kannattaa tehdä tiedostoja luomisvaiheessa, suosittelen tekemään README.md ja vapaista lisensseistä itse tykkään GPLv3 eli GNU General Public License, version 3. Oman työsi lisenssin saat itse valita.
  • Karvinen 2021: Install Debian on VirtualBox
  • Microsoft 2023: Get a Windows 11 development environment: Download a virtual machine: VirtualBox
  • Olli Uronen: Git Windows-vinkit kommenteissa
  • Jos menet olemassaolevaan projektiin (työpaikalla, open source)... opiskele projektin käytännöt ja käytä niitä

h4 Komennus

  • a) hello.sh. Tee oma shell script (bash, sh...) ja laita se kaikille käyttäjille. Yksinkertainen skripti voi tehdä mitä vain, mutta sen tulee tulostaa "shine". Tee skripti alusta, vaikka olisit joskus aiemmin tehnyt skriptejä. Testaa lopputulos (kuten aina).
  • b) hello.py. Tee oma Python-skripti ja laita se kaikille käyttäjille.
  • c) Automatisoi näiden skriptien asennus orjille Saltilla.
  • d) Asenna jokin yhden binäärin ohjelma Saltilla orjille.
  • e) Vapaaehtoinen: moniOSsaaja. kokeile Saltia jollain muulla käyttöjärjestelmällä kuin Linuxilla.

Vinkit

  • Ensin käsin, sitten automaattisesti.
    • Ensin yhdelle (omalle käyttäjälle), sitten vasta monelle.
    • Skriptit ja ohjelmat kehitetään omassa kotihakemistossa, ja kopioidaan muille toimivina ja testattuina.
  • Python helloworld.py: print("hello world")
  • Pieniä yhden binäärin ohjelmia esim. micro (micro-2.0.11-linux64-static.tar.gz) tai gron
  • Karvinen 2018: Control Windows with Salt
  • Linuxissa omille skripteille ja binääreille /usr/local/bin/. Windowsissa ehkä C:/Windows/System32/.

h5 Vaihtoehdot

  • x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva. Huomaa, että osa artikkeleista on luonteeltaan raportteja tai muistiinpanoja, eli vähemmän valmiita kuin testatut ja siivotut ohjeet. Keskity kohtiin, joita voisit itse kokeilla tai hyödyntää)
  • a) Asenna Salt Windowsille
  • b) Ei voi kalastaa. Käytä Windowsilla Salttia paikallisesti ilman verkkoa (Ruma-X, powershell as admin, salt-call --local state.single ...)
  • c) Hei ikkuna! Tee hei maailma Windowsin Saltille. Voit vaikkapa tehdä tyhjän tiedoston johonkin väliaikaistiedostojen kansioon. Käytä idempotentteja komentoja, esim file.managed.
  • d) Installed. Asenna Windowsille ohjelma Saltilla. (Voit käyttää eri vaihtoehtoja: kopioida binäärin suoraan sopivaan kansioon, pkg.installed ja choco, pkg.installed ja salt winrepo).
  • e) Vapaaehtoinen: Kokeile jotain muuta ominaisuutta tai toimintoa Saltilla Windowsissa.

Vinkit

  • Pieniä yhden binäärin ohjelmia esim. micro, zip-paketti tai tervapallo pitää myös purkaa, binääri löytyy sieltä sisältä.
  • Linuxissa omille skripteille ja binääreille /usr/local/bin/. Windowsissa ehkä C:/Windows/System32/.
  • Microsoft 2023: Get a Windows 11 development environment: Download a virtual machine: VirtualBox

h6 Puolikas

a) Puolikas miniprojekti. Tee ensimmäinen versio omasta miniprojektista - puolikas. Tässä tehtävässä palautettavan version ei tarvitse olla täysin valmis.

Projektin sivulle

  • Tarkoitus. Yhden lauseen kuvaus (tarkoitus, business purpose, what's in it for me)
  • Ruutukaappaus
  • Lisenssi (esim. vapaista lisensseistä suosittelen "GNU General Public License 3". Voit lisensoida haluamallasi tavalla.)
  • Kuinka valmis tämä on (alpha, beta, ... ja kuvaus ihmisten kielellä). "h6 Puolikas" palautuksessahan tämä on useimmilla aivan kesken, alpha.
  • Download-nappi, lähdekoodi
  • Miten asennan / otan tämän käyttöön
  • Viittaus tai linkki kurssiin ja kaikkiin muihinkin käytettyihin lähteisiin

Vinkkejä

  • Kaiken ei tarvitse olla vielä valmista, mutta miniprojektin sivulla pitäisi olla keskeneräinen versio. Olisi hyvä, jos pääsisit kunnolla ongelmiin asti, jotta voit ratkoa niitä rauhassa - ja jotta minä voin antaa niihin neuvoja ensi viikolla.
  • Ensin käsin, sitten automaattisesti.
  • Ei skripti. Miniprojekti ei ole pelkkä shell script, eikä saltiksi naamioitu shell script. Käytä package, file, service, user ensisijaisesti, cmd.run vain jos nuo muut eivät sovi.
  • Olisi mukavaa katsella töitä, joissa on tehty muutakin kuin asennettu Apache tai SSHd täsmälleen samalla tavalla kuin läksyssä.
  • Mielenkiintoisia piirteitä voi olla vaikkapa
    • Asennetaan eri ohjelmia kuin ne, joita kurssilla on käsitelty
    • Saa olla palvelin- tai työaseman ohjelmia
      • Tai edistyneemmille näiden yhdistelmä
    • Toimitaan eri käyttöjärjestelmässä (tai useammassa)
    • Käytetään oikean yleisön kanssa jossain suppeassa ja harmittomassa ympäristössä (pelipalvelin tms)
  • Projekti on mini, ja vain osa koko kurssia. Tästä ei siis tarvitse tulla yhtä hieno kuin esimerkiksi monialaprojekti infrasta. Joillain vanhoilla kursseilla voi olla yksittäisiä erittäin hienoja ja laajoja projekteja, jotka saattavat ylittää kurssin vaatimustason.
  • Tiistain ryhmäläiset saavat halutessaan osallistua myös torstain tunnille 08:15 pa3014, ilmoita sähköpostilla jos tulet silloin.
  • Saat ensi viikolla vinkkejä ongelmien ratkaisuun. Tämä onnistuu sitä paremmin, mitä pidemmällä työsi on.

Vanhoista projekteista voi saada vinkkiä, esimerkiksi

Miniprojektin tekoon on kaksi viikkoa, joten aloittaessa ei tietenkään tarvitse olla vielä valmista.

h7 Miniprojekti ja koko paketti