Infra as Code - Palvelinten hallinta 2024
ICI001AS3A-3005 Pasila and ICI001AS3A-3004 online

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.

Best instance got 5.0 / 5 feedback - all respondents gave the best grade 5.

Skip to Goals, Agenda.

Overview

Course, both instances
Course name and codePalvelinten hallinta ICI001AS3A, two course instances
Timing2024 period 4 late spring, w13-w20
Credits5 cr
LanguageFinnish (+reading material in English)
Feedback5.0 / 5 * Excellent feedback Five star experience
Tuesday's classroom instance -3005
Instance name and codePalvelinten hallinta ICI001AS3A-3005
ClassesTue 8:15-13:45 Pasila pa5001
Max students30
RemoteNo. In Pasila, laptop required.
First class2024-03-26 w13 Tue 08:15, pa5001
ServicesMoodle: Palvelinten hallinta 3005 Pasila, Laksu
Wednesday's online instance -3004
Instance name and codePalvelinten hallinta ICI001AS3A-3004 online
ClassesWed 17:40-20:30, online video conference
Max students50
RemoteFully remote
First class2024-03-27 w13 Wed 17:40, Jitsi link is in Moodle.
ServicesMoodle: Palvelinten hallinta 3004 online, Jitsi, Laksu

* Best instance got 5.0 / 5 feedback - all respondents gave the best grade 5. Other instances have varied from 4.3/5 good to 4.9/5 excellent.

I've done some research on configuration management systems. I have written my doctoral dissertation on applying malware command and control techniques to benign configuration management systems. I've given 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 palautetaan 24 h ennen seuraavan oppitunnin alkua ja ristiinarvioidaan kahden luokkakaverin työt.

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).
    1. w14 Verkkon yli. Herra-orja -arkkitehtuuri verkon yli. Orjan tavoittaminen tuntemattomasta osoitteesta, NAT ja tulimuurin takaa. Harjoitusympäristöjen rakentaminen Vagrantilla. Vianselvitys verkkoyhteydessä.
    1. w15 Versionhallinta. Git: init, clone, add, commit, pull, push, log. GitHub ja muut avustavat palvelut.
    1. w16 Package-file-service Demonien hallinta. Käsin tehdyn konfiguraation automatisointi. Aikajanan käyttö muutosten tunnistamisessa.

Tekniikoita

    1. w17 Omat komennot. Aikajanan käyttö muutosten tunnistamisessa.
    1. w18 Salt Windowsilla

Soveltava vaihe

    1. w19 Omat modulit.
    1. w20 Omien modulien esittely.

Arviointi

Osien ohjeelliset painoarvot ovat: kotitehtävät 50% ja 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ä?
  • Mitä pidit esityksistä? Itse esittämisestä? Luokkakavereiden esitysten seuraamisesta?
  • 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. 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.

Suosittu ja helppo tapa on laittaa raportit Githubiin.

Kaikki käytetyt lähteet tulee merkitä raporttiin: kurssin tehtäväsivu, kurssikavereiden raportit, man-sivut, kirjat. Mikäli tekoälyltä kysyy neuvoa, se on merkittävä lähteeksi. Tekoälyt hallusinoivat, tiedot on suositeltavaa tarkistaa. Tiivistelmiä tai esseitä ei saa generoida tekoälyllä eikä muilla vastaavilla tekniikoilla, vaan ne on kirjoitettava itse.

h0 Hello

Tuntitehtävä.

a) Tee GitHubilla esimerkkisivu. Ristiinarvioi kaksi.

Vinkit

  • Karvinen 2023: Create a Web Page Using Github
  • Kirjoita sivu MarkDownilla ja katso, että otsikot ja kappaleet näkyvät oikein
  • Palauta linkki suoraan h0 tehtävävastaukseesi (ei esimerkiksi koko varaston etusivuun)

h1 Viisikko

  • 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. Ei siis vaadita pitkää eikä essee-muotoista tiivistelmää.)
  • a) Hello Windows/Mac Salt World! Näytä jollain Salt-komennolla, että olet onnistunut asentamaan Saltin (salt-minion) Windowsille tai Macille. Jos et ole vielä asentanut Saltia, raportoi myös asennus.
  • b) Hello Vagrant! Osoita jollain komennolla, että Vagrant toimii. Jos et ole vielä asentanut niitä, raportoi myös Vagrant ja VirtualBox asennukset.
  • c) Tee Vagrantilla uusi Linux-virtuaalikone.
  • a) Asenna Salt (salt-minion) Linuxille (uuteen virtuaalikoneeseesi).
  • b) Viisi tärkeintä. Näytä Linuxissa esimerkit viidestä tärkeimmästä Saltin tilafunktiosta: pkg, file, service, user, cmd. Analysoi ja selitä tulokset.
  • c) Idempotentti. Anna esimerkki idempotenssista. Aja 'salt-call --local' komentoja, analysoi tulokset, selitä miten idempotenssi ilmenee.
  • d) Tietoa koneesta. Kerää tietoja koneesta Saltin grains.items -tekniikalla. Poimi kolme kiinnostavaa kohtaa, näytä tulokset ('grains.item osfinger virtual') ja analysoi ne.

Tehtävässä h1 kohtien kirjaimet a, b, c... menivät miten sattuu.

Vinkit

  • Tehtävissä tulee tehdä testit tietokoneella ja raportoida tulokset. Pelkkä kuvittelu ei siis riitä. Raporttia tulee kirjoittaa koko ajan samalla kun työskentelee.
  • Vaikeita kohtia?
    • Ratko kaikki mitä osaat, raportoi ja palauta ajoissa.
    • Vaikeasta tai kesken jääneestä kohdasta erityisen tarkka raportti
      • mitä teit, mitä tapahtui.
      • Ota ruutukaappaukset ja sanatarkat virheilmoitukset talteen.
      • Mistä arvelet ongelman johtuvan?
      • Mitä ratkaisuvaihtoehtoja vielä voisi kokeilla?
      • Löydätkö (esim virheilmoituksella hakemalla) lähteitä, joissa ehdotetaan ratkaisuja?
      • Ja katsotaan yhdessä tunnilla loput.
  • Tarkista, että olet viitannut kaikkiin lähteisiin. Viitteet tulee löytyä jokaisesta raportista. Jokaiseen lähteeseen tulee viitata, esimerkiksi tehtäväsivuun, ohjeisiin, toisten raportteihin, man-sivuihin... Eli jokaiseen käytettyyn lähteeseen.
  • Tarkistaessa on hyvä katsoa, että vastauksessa on viite ainakin kurssiin ja tehtäväsivuun.
  • Tietoja koneesta: 'sudo salt-call --local grains.items', 'sudo salt-call --local grains.item osfinger virtual'
  • Kirjoita rinnakkaisarvioinnissa kurssikavereille palautetta, vinkkejä ja kommentteja
  • Asenna Linux virtuaalikoneeseen. Karvinen 2023: Install Debian on Virtualbox - Updated 2023. Linuxin asennusta ei tässä tarvitse raportoida.

Vagrant asennus

Takaisin isäntäkoneelle pääsee 'exit'. Kun haluat tuhota virtuaalikoneen ja kaikki sen sisältämät tiedostot, 'vagrant destroy'.

Saltin asennus

https://docs.saltproject.io/salt/install-guide/en/latest/topics/downloads.html

h2 Soitto kotiin

  • 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. Kannattaa lisätä mukaan myös jokin oma havainto, idea tai kysymys.)
  • a) Asenna kaksi virtuaalikonetta samaan verkkoon. Osoita, että pystyt käyttämään kumpaakin konetta (esim 'vagrant ssh t001'). Osoita, että koneet voivat pingata toisiaan. (Tämä tehtävä on helpointa tehdä Vagrantilla)
  • b) Asenna Saltin herra-orja arkkitehtuuri toimimaan verkon yli. (Verkko voi olla virtuaalinen verkko paikallisten virtuaalikoneiden välillä, kuten muissakin alakohdissa)
  • c) Aja shell-komento orjalla Saltin master-slave yhteyden yli.
  • d) Aja useita idempotentteja (state.single) komentoja master-slave yhteyden yli.
  • e) Kerää teknistä tietoa orjista verkon yli (grains.item)
  • f) Hello, IaC. Tee infraa koodina kirjoittamalla /srv/salt/hello/init.sls. Aja tila jollekin orjalle. Tila voi esimerkiksi tehdä esimerkkitiedoston johonkin hakemistoon. Testaa toisella komennolla, että pyytämäsi muutos on todella tehty.

Vinkit

  • Kaikki läksyt voi tehdä omalla, paikallisella koneella. Virtuaalikoneet voi tehdä Vagrantilla, verkkona voi käyttää näiden paikallisten virtuaalikoneiden välistä verkkoa.
  • Vagrantin asennuspaketit HashiCorp 2023: Install Vagrant
  • Vagrant ohjaa VirtualBoxia. Se kannattaa asentaa isäntäjärjestelmään, koska virtualisointi toimii heikosti sisäkkäin. Jos et ole vielä täysin Linux-käyttäjä, niin Vagrantin saa myös Windowsille.
    • Lähes kaikki koneet ovat amd64-arkkitehtuurilla. Koskee lähes kaikkia Windows- ja Linux-koneita sekä osaa Maciesta.
    • Harvoja poikkeuksia: Apple Mac M1, M2 ja M3 sekä Raspberry Pi ovat muistaakseni arm64.
  • Vanhoja raportteja Vagrantin ja VirtualBoxin käytöstä löytää Googlella ja Duckilla, esim Salminen 2020.
  • Vinkkejä myös Vagrantin virallisista asennusohjeista
  • Jos asennat Salt herran pilveen tai muuhun oikeaan paikkaan, muista tulimuuri.
    • Orjat voivat olla tulimuurin ja NATin takana, osoite voi vaihtua
    • Herran pitää olla tunnetussa osoitteessa ja Saltin avointen porttien (4505/tcp ja 4506/tcp) pitää näkyä orjille.
  • Raportin kirjoittamisesta, samoja vinkkejä mitä tunneilla on käyty läpi: Karvinen 2006: Raportin kirjoittaminen
  • Eikö toimi?
    • Tee tarkemmat muistiinpanot, kun kohtaat ongelmia
    • Katso masterin osoite ('hostname -I', 'ip a')
    • Onko orjilla sama osoite /etc/salt/minion, "master: 192.168.88.12"
    • Muistitko käynnistää demonit asetusten muutkosen jälkeen 'sudo systemctl restart salt-minion'
    • Pystytkö testeillä eristämään ongelman?
    • Kehittämään lisää lähestymistapoja?
    • Saatko virheilmoituksia, joilla tehdä hakuja?
    • Voitko ratkaista vastaavan, mutta helpomman ongelman?

Vianselvitystä (ulkomuistista)

$ nc -vz master.example.com 4505 # onko portti ylipäänsä auki
$ nc -vz master.example.com 4506
$ hostname -I

Tulimuuri herralle. Ulkomuistista. Tarvitaan, jos laitat sen jonnekin muualle kuin lyhytaikaisesti paikalliselle virtuaalikoneelle NATattuun verkkoon. Jotkut ehtivät jo suunnitella tätäkin vapaaehtoista lisähupia.

$ sudo ufw allow 22/tcp # ssh, niin perinteinen hallinta ei katkea
$ sudo ufw allow 4505/tcp # salt
$ sudo ufw allow 4506/tcp # salt
$ sudo ufw enable # estä muu sisääntuleva liikenne

h3 Toimiva versio

  • 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. Kannattaa lisätä mukaan myös jokin oma havainto, idea tai kysymys.)
  • a) Online. Tee uusi varasto GitHubiin (tai Gitlabiin tai mihin vain vastaavaan palveluun). Varaston nimessä ja lyhyessä kuvauksessa tulee olla sana "summer". 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 omalla koneella, 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) Suolattu rakki. Aja Salt-tiloja omasta varastostasi. (Salt tiedostot mistä vain hakemistosta "--file-root teronSaltHakemisto". Esimerkiksi 'sudo salt-call --local --file-root srv/salt/ state.apply', huomaa suhteellinen polku.)
  • f) 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...
  • g) Vapaaehtoinen: yhteistyötä: anna kaverillesi (tai alter egollesi) oikeus kirjoittaa varastoosi (commit access). Tehkää molemmat muutoksia varastoon gitillä.

Vinkkejä

  • Kannattaa käyttää SSH-osoitetta varastoa kloonatessa, kirjautuminen julkisella ssh-avaimella
  • ssh-keygen (enter, enter, enter), cat $HOME/.ssh/id_rsa.pub, Github: Settings: SSH keys... Vain julkisen avaimen - sen mikä päättyy .pub - saa julkaista ja tallettaa Githubiin.
  • 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.
  • GitHubin HTTP-URL:n voi kloonata itselleen ilman tunnistatumista. Muokatessa ja omissa varastoissa SSH-URL on kätevämpi.
  • Karvinen 2021: Install Debian on VirtualBox
  • Microsoft 2023: Get a Windows 11 development environment: Download a virtual machine: VirtualBox
  • Jos menet olemassaolevaan projektiin (työpaikalla, open source)... opiskele projektin käytännöt ja käytä niitä
  • https://github.com/terokarvinen/suolax Salt-tiloja, jotka voi ajaa suoraan salt-varastosta
  • Git asennuspaketit Windowsille ja Macille https://git-scm.com/downloads
  • Macilla 'brew' saattaa olla myös kätevä työkalu Gitin asentamiseen
  • Linuxille Git asentuu helpoimmin paketinhallinnasta: 'sudo apt-get update; sudo apt-get -y install git'

h4 Demoni

  • 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.)
    • Karvinen 2023: Salt Vagrant - automatically provision one master and two slaves, vain kohdat
      • Infra as Code - Your wishes as a text file
      • top.sls - What Slave Runs What States
    • Salt contributors: Salt overview, kohdat
      • Rules of YAML
      • YAML simple structure
      • Lists and dictionaries - YAML block structures
    • Karvinen 2018: Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port
      • Artikkelissa on jonkun toisen Linux-version tiedosto. Jos tekisit samanlaisen, niin käyttäisit tietysti oman järjestelmäsi asetustiedostoa pohjana.
    • Silmäile Saltin ohjeet tilafunktioille pkg, file ja service. Nämä artikkelit ovat pitkiä, riittää kun luet vain johdannon ja silmäilet maintut komennot. Ei kannata yrittää opetella satoja itselle tarpeettomia parametreja ulkoa. (Less-vinkit alla)
      • $ sudo salt-call --local sys.state_doc pkg # johdanto + silmäile pkg.installed, pkg.purged, pkgs
      • $ sudo salt-call --local sys.state_doc file # johdanto + silmäile file.managed, file.absent, file.symlink
      • $ sudo salt-call --local sys.state_doc service # johdanto + silmäile service.running, service.dead, enable
  • a) Hello SLS! Tee Hei maailma -tila kirjoittamalla se tekstitiedostoon, esim /srv/salt/hello/init.sls.
  • b) Top. Tee top.sls niin, että useita valitsemiasi tiloja ajetaan automaattisesti, esim komennolla "sudo salt '*' state.apply" tai "sudo salt-call --local state.apply".
  • c) Apache easy mode. Asenna Apache, korvaa sen testisivu ja varmista, että demoni käynnistyy.
    • Ensin käsin, vasta sitten automaattisesti.
    • Kirjoita tila sls-tiedostoon.
    • pkg-file-service
    • Tässä ei tarvita service:ssä watch, koska index.html ei ole asetustiedosto
  • d) SSHouto. Lisää uusi portti, jossa SSHd kuuntelee.
    • Jos käytät Vagrantia, muista jättää portti 22/tcp auki - se on oma yhteytesi koneeseen. SSHd:n asetustiedostoon voi tehdä yksinkertaisesti kaksi "Port" riviä, molemmat portit avataan.
    • Löydät oikean asetuksen katsomalla SSH:n asetustiedostoa
    • Nyt tarvitaan service-watch, jotta demoni käynnistetään uudelleen, jos asetustiedosto muuttuu masterilla
  • e) Vapaaehtoinen: Apache. Asenna Apache tarjoilemaan weppisivua. Weppisivun tulee näkyä palvelimen etusivulla (localhost). HTML:n tulee olla jonkun käyttäjän kotihakemistossa, ja olla muokattavissa normaalin käyttäjän oikeuksin, ilman sudoa.
  • f) Vapaaehtoinen: Caddy. Asenna Caddy tarjoilemaan weppisivua. Weppisivun tulee näkyä palvelimen etusivulla (localhost). HTML:n tulee olla jonkun käyttäjän kotihakemistossa, ja olla muokattavissa normaalin käyttäjän oikeuksin, ilman sudoa.
  • g) Vapaaehtoinen: Nginx. Asenna Nginx (lausutaan engine-X) tarjoilemaan weppisivua. Weppisivun tulee näkyä palvelimen etusivulla (localhost). HTML:n tulee olla jonkun käyttäjän kotihakemistossa, ja olla muokattavissa normaalin käyttäjän oikeuksin, ilman sudoa.

Vinkit

  • Ensin käsin, sitten automaattisesti
  • Testaa
    • Alkutilanne (taikurin hihat tyhjät)
    • Käsin tehty ja toimii
    • Poistettu käsin tehty ennen automaatiota
    • Yksi tilafunktio (esim. file) sls-tiedostossa
    • Lopputilanne, osat
    • Lopputesti - mitä käyttäjä tekisi
  • /etc/ssh/sshd_config
  • Port: 1234
  • nc -vz localhost 1234
  • ssh -p 1234 foo@localhost
  • echo "Hei"|sudo tee /var/www/html/index.html # ainoa tilanne sudotella html-sivua
  • Omat asetustiedostot
    • Kun teet käsin, saat siitä mallin asetustiedostolle (masterin /srv/salt/foo/bar.cfg)
    • Esimerkkidokumenteissa olevat demonien asetustiedostot tuskin toimivat juuri omassa järjestelmässä
  • Less haku /, seuraava n, edellinen N, alku g, loppu G, q quit.

h5 Tekniikoita

Keskiviikon online-ryhmällä ei ole oppituntia vappupäivänä 2024-05-01 w18 ke. Jos haluat tulla keskiviikon ryhmästä vierailemaan tiistain tunnille, sovi siitä hyvissä ajoin etukäteen kanssani sähköpostitse.

  • 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.)
    • Vapaavalintainen aiemman vuoden kotitehtäväraportti Saltin käytöstä Windowsilla. Löydät raportteja esimerkiksi Google tai Duck-haulla: salt windows karvinen.
  • a) Asenna Salt Windowsille tai Macille. Osoita 'salt-call --local' komentoa ajamalla, että asennus on onnistunut. (Jos olet asentanut jo aiemmin, tässä riittää pelkkä asennuksen testaaminen, eikä asennusta tarvitse tehdä uudelleen.)
  • b) Kerää Windows- tai Mac-koneesta tietoa grains.items -toiminnolla. Poimi 'grains.item' perään muutamia keskeisiä tietoja ja analysoi ne, eli selitä perusteellisesti mitä ne ovat. Kuvaile ja vertaile numeroita.
  • c) Kokeile Saltin file -toimintoa Windowsilla tai Macilla.
  • d) CSI Kerava. Näytä 'find' avulla viimeisimmäksi muokatut tiedostot /etc/-hakemistosta ja kotihakemistostasi. Selitä kaikki käyttämäsi parametrit ja format string 'man find' avulla.
  • e) Komennus. Tee Salt-tila, joka asentaa järjestelmään uuden komennon.
  • f) Vapaaehtoinen: Gui2fs. Muokkaa asetuksia jostain graafisen käyttöliittymän (GUI) ohjelmasta käyttäen ohjelman valikoita ja dialogeja. Etsi tämä asetus tiedostojärjestelmästä.
  • g) Vapaaehtoinen: Ämpärillinen. Tee Salt-tila, joka asentaa järjestelmään kansiollisen komentoja. Tee tila käytten recurse (tms) parametria niin, että et joudu luettelemaan jokaista asennettaa komentoa ja skriptiä eriksiin sls-tiedostossa.

Vinkit

  • Ruma-X: Powershell as Administrator
  • Windowsissa anna tekemäsi srv/salt -hakemisto parametrina. Ulkomuistista suunnilleen näin
    • salt-call --local -l info state.apply hello --file-root C:/srv/salt/
  • Windowsin väliaikaisten tiedostojen kansioita ovat muistaakseni (kannattaa vielä tarkistaa)
    • "C:/Windows/Temp" eli %systemdrive%\Windows\Temp
    • %userprofile%\AppData\Local\Temp
  • find -printf '%T+ %p\n'|sort
  • Uuden komennon lisääminen
    • Tee skripti: "#!/usr/bin/bash" "echo moi"; 'chmod ugo+x foo.sh'
    • Kokeile './foo.sh'
    • Laita kansioon "/usr/local/bin/"
    • Kokeile, että se toimii kaikilla käyttäjillä, jokaisesta kansiosta, ilman polkua. 'foo.sh'
  • Vaihtoehtoisesti voit käyttää jotain yhden binäärin ohjelmaa. Voit kääntää sorsista tai hakea kotisivulta. Githubissa usein Releases alla. Esim
  • Halonen, Rajala ja Ollikainen 2023: Installing Windows 10 on a virtual machine
    • Vain tämä Windowsin asennusohje. Samassa varastossa on hyökkäysohjelmia, joiden käsittely edellyttää, että osaa tehdä sen turvallisesti ja laillisesti, mm. eristää harjoituskoneita Internetistä. Nämä taidot oppii esim. kurssillani Tunkeutumistestaus. Tällä kurssilla ei käytetä hyökkäystyökaluja. Mutta tämä Windowsin asennus virtuaalikoneeseen on yksinkertaista ja turvallista.

h6 Benchmark

  • 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.)
    • Windows Package Manager: Introduction, Install libraries, Populate the local Git repository, Update minion database, Install software package, Usage osa. Eli sivun alusta kappaleen "Remove a package" loppuun, poislukien "Configuration". (Kannatta soveltaa asennuksesta idempotentti versio, ulkomuistista: 'sudo salt-call --local -l info state.apply pkg.installed curl').
  • a) Paketti Windowsia. Asenna Windowsiin tai Macciin ohjelmia Saltin pkg.installed -funktiolla. (Jos teit tarvittavat asennukset jo tunnilla, voit kirjoittaa ympäristön asennuksen ulkomuistista, ja asentaa nyt vain jonkin uuden paketin. Muistinvaraisesti kirjoitetut muistiinpanot ovat paljon epämääräisempiä kuin työn aikana kirjoitetut, joten merkitse selvästi, mitkä osat on kirjoitettu ulkomuistista ja mitkä työskennellessä.)
  • b) Benchmark. Etsi 3-7 keskitetyn hallinnan projektia, esimerkiksi tämän kurssin "Oma moduli" lopputyötä. Työn tulee olla modernia keskitettyä hallintaa (idempotentti, infra koodina, yksi totuus). Esimerkiksi pelkkä shell script ei kelpaa. Työ saa käyttää mitä vain työkalua, esim Salt, Puppet, Ansible, Chef, Conftero, CFEngine. Tässä alakohdassa ei tehdä mitään testejä, vaan arvioidaan töitä vain niiden kotisivujen perusteella. Etsimiseen voit käyttää hakukoneita. Listaa kustakin
    • Tarkoitus (eli "mitä hyötyä tästä on" eli "business purpose" eli "miksi haluaisin asentaa tämän".)
      • Kyllä näin: (business purpose): "Robotti kuljettaa minulla jääkaapista limpparia"
      • Ei näin, tekniikoiden luetteleminen ei ole sovelluksen tarkoitus: "ESP32 ja Arduino ohjaavat servoja, jotka LIDAR:lla väistelevät kappaleita C++-ohjelmalla; tartuntakomponentti käyttää PDI-säädintä..."
    • Lisenssi
      • Lisenssin nimi
      • Missä tuossa työssä se lisenssi lukee
      • Mitä lisenssi tarkoittaa, eli pääasiallinen jurdiinen vaikutus
    • Tekijä ja vuosi
    • Riippuvuudet: Alusta (käyttöjärjestelmä, jokin tietty pilvi...), verkkoympäristö tms.
    • Kiinnostavaa, esim
      • Hyödyllinen lopputulos
      • Kiinnostava tekniikka, esim. jokin tapa käyttää Saltia
    • Avoimet kysymykset ja muut huomiot
  • c) Testbench. Aja toisen tekemä tila.
    • Valitse jokin edellisessä kohdassa tutkimasi moduli. Perustele valintasi.
    • Tarkista koodi.
      • Lataako koodi binäärejä? Lataako paketinhallinnan ulkopuolelta? Onko luotettavia ohjelmistolähteitä?
    • Aja koodi. Käytä tarvittaessa virtuaaliympäristöä tai muuta eristystä.
    • Testaa lopputulos.
    • Ota ruutukaappauksia sopivassa laajuudessa.
    • Kommentoi ja arvioi modulia.
    • Modulin kaikkia bugeja ei tarvitse korjata, tarkoitus on ajaa modulia ja arvioida sitä.
    • Jos jokin moduli vaikuttaa täysin toimimattomalta, kirjaa ylös yrityksesi ja kokeile toista modulia.
  • d) Viisi ideaa. Listaa viisi ideaa omalle modulille, kurssin lopputehtävälle. Modulilla tulee olla tarkoistus. Sen ei tarvitse silti ratkaista mitään oikeaa liiketoiminnan ongelmaa, vaan tarkoitus voi olla keksitty. Kunkin idean kuvaukseen riittää yksi virke. Ensi kerralla katsomme yhdessä aiheen valintaa ja sopivia vinkkejä. Tarvitsen pohjaksi omia ideoitasi, jotta voin antaa hyödyllisiä ja juuri sinulle sopivia neuvoja.

Vinkit

  • Macissa pkg.installed käyttänee automaattisest 'brew' -paketinhallintaa, jos se on sinulla asennettuna.
  • Saltin Windows-package managerin yksinkertainen lähestymistapa on nerokas. Voit lukea siitä lisää läksynä olevan artikkelin lopusta.

h7 Oma miniprojekti

Loppuhuipennus! Viimeisellä kerralla esitellään omat miniprojektit. Pääset harjoittelemaan esiintymistä tutussa ja turvallisessa ympäristössä omille luokkakavereille. Samalla näet, mitä muut ovat rakentaneet.

  • Oma projektisi.
    • Etusivulta tulee näkyä
      • Tarkoitus (Business purpose, mitä hyötyä tästä on. Voi olla keksitty tarkoitus)
      • Ruutukaappaus lopputuloksesta.
      • Lisenssi (Saat valita itse, suosittelen GNU General Public License, versio 3)
      • Asennusohje (Vieraan ihmisen pitäisi saada projektisi käyttöön pelkästään ohjeen avulla, ilman muuta ohjausta)
      • Oma nimi (suositeltavaa) tai nimimerkki (jos haluat)
      • Halutessasi huomion arvioisia tai kiinnostavia tekniikoita (esim. apt-varaston asennus, Foo-rajapinnnan käyttö..)
    • Projektin lähdekoodi

Vapaaehtoista: Palauta "h8 bonus" samassa aikataulussa kuin h7, jos haluat tehdä sen.

Vinkit

  • Ensin yksinkertainen ja toimiva kokonainen versio (matalalla riippuvat hedelmät; ensin valmista ja vasta sitten hienoa)
  • Sen jälkeen on kiva lisäillä hienostelua ja edistyneempiä ominaisuuksia
  • Haasteita?
    • Palauta silloin ainakin suppea projekti ja tule katsomaan ja kommentoimaan muiden työt.
    • Jos tulee kiire: tee suppeampi työ ja palauta se ajoissa.
  • Hauskaa hallintaa!

Esityksen vinkit

  • Tarkoitus (what's in it for me, business purpose, mitä tämä tekee, miksi kuuntelisin)
    • Ehkä myös ruutukaappaus lopputuloksesta
  • Oma nimi
  • Demo olisi kiva
    • Jos näytät demon, se kannattaa laittaa pyörimään heti aluksi. Silloin voit puhua demon pyöriessä, eikä tarvitse odottaa.
    • Teknikset yleisöt arvostavat oikeita demoja. Kannattaa silti olla varalla sama videona tai raporttina.
  • Kiinnostavat tekniikat
  • Mistä yleisö saa työsi?

ps. Muista ilmoittautua syksyn kursseilleni ensi keskiviikkona. Eli 2024-05-15 w20 ke kello 08:00.

h8 Bonus

  • a) Vapaaehtoinen: Parannus: Luettele ja linkitä tehtävät, joihin olet tehnyt olennaisia parannuksia palauttamisen jälkeen.
  • b) Vapaaehtoinen: Bonus: Luettele tekemäsi vapaaehtoiset bonustehtävät.