Palvelinten Hallinta
Configuration Management Systems course - 2024 autumn

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.

Enroll 2024-05-15 w20 Wednesday at 08:00 in MyNet / Peppi.

Looking for the earlier Spring 2024 Palvelinten hallinta?

Course, both instances
Course name and codePalvelinten hallinta ICI001AS3A-3010
Timing2024 period 2, late autumn, w43-w50
Credits5 cr
LanguageFinnish (+reading material in English)
Feedback5.0 / 5 * Excellent feedback Five star experience
ClassesThu 14:00 - 16:45, online video conference, mandatory participation
Max students50
RemoteFully remote
First class2024-10-24 w43 Thu 14:00, Jitsi link will be in Moodle.
ServicesMoodle: Palvelinten hallinta 3010 online, Jitsi, Laksu. Optional: Tero's list.

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.

Tunnit torstaisin online 14:00 - 16:45 videokonfferenssina.

PäiväAihe
Perusteet
2024-10-24 w43 Thu1. 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).
2024-10-31 w44 Thu2. Verkkon yli. Herra-orja -arkkitehtuuri verkon yli. Orjan tavoittaminen tuntemattomasta osoitteesta, NAT ja tulimuurin takaa. Harjoitusympäristöjen rakentaminen Vagrantilla. Vianselvitys verkkoyhteydessä.
2024-11-07 w45 Thu(ei oppituntia, ei videokonfferenssia)
2024-11-14 w46 Thu3. Pkg-file-service eli demonien hallinta. Käsin tehdyn konfiguraation automatisointi. Aikajanan käyttö muutosten tunnistamisessa. Omien modulien aloitus.
Erityisaiheet
2024-11-21 w47 Thu4. 14:00 Vierailija: Arttu Uskali, Head of Strategic Development, UpCloud: How to get employed in a cloud?
2024-11-28 w48 Thu5. Versionhallinta. Git: init, clone, add, commit, pull, push, log. GitHub ja muut avustavat palvelut.
Soveltaminen
2024-12-05 w49 Thu6. Omien modulien esittely I.
2024-12-12 w50 Thu7. Omien modulien esittely II.

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.

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.

Tekoälyn käyttö: Tällä kurssilla on samat AI säännöt kuin YAMK:n kurssillani: "AI and large language models (LLM): You can ask AI or LLM a question and use the answer as facts for your own answer, written in your own words. AI must be marked as a reference, with details such as prompt (and for advanced users system prompts, temperature, jailbreaks...). LLMs tend to hallucinate, so you should check answers from more reliable sources. It's not allowed to generate text with AI or similar technologies. For example, it's not allowed to generate essay answers or summaries with AI, LLM or similar technologies."

h0 Hei weppi

a) Julkaise oma sivu weppiin. Palauta Laksuun ja ristiinarvioi vähintään kaksi.

Vinkit

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) Asenna Debian 12-Bookworm virtuaalikoneeseen. (Poikkeuksellisesti tätä alakohtaa ei tarvitse raportoida, jos siinä ei ole mitään ongelmia. Mutta jos on ongelmia, sitten täsmällinen raportti, jotta voidaan ratkoa niitä yhdessä.)
  • b) Asenna Salt (salt-minion) Linuxille (uuteen virtuaalikoneeseesi).
  • c) Viisi tärkeintä. Näytä Linuxissa esimerkit viidestä tärkeimmästä Saltin tilafunktiosta: pkg, file, service, user, cmd. Analysoi ja selitä tulokset.
  • d) Idempotentti. Anna esimerkki idempotenssista. Aja 'salt-call --local' komentoja, analysoi tulokset, selitä miten idempotenssi ilmenee.
  • e) Herra-orja. Kokeile herra-orja arkkitehtuuria niin, että herra ja orja ovat samalla koneella.

Vinkit

  • Tehtävissä tulee tehdä testit tietokoneella ja raportoida tulokset. Pelkkä kuvittelu ei siis riitä. Raporttia tulee kirjoittaa koko ajan samalla kun työskentelee.
  • Linuxin asentaminen virtuaalikoneeseen: Karvinen 2024: Install Debian on Virtualbox - Updated 2024
  • Masterin osoitteeksi voi laittaa tässä localhost. Eli "/etc/salt/minion", "master: localhost".
  • 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.
  • Kirjoita rinnakkaisarvioinnissa kurssikavereille palautetta, vinkkejä ja kommentteja
  • 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.

Saltin asennus

Saltin asennus Debian 12-Bookworm:

$ sudo mkdir -p /etc/apt/keyrings
$ sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/12/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/12/amd64/latest bookworm main" | sudo tee /etc/apt/sources.list.d/salt.list

[Korjasin hakemiston luovan komennon yllä]

h2 Infra-as-code

Tässä läksy ja vähän viihdettä ensi viikoksi. Viikolla w45 ei ole tunteja, joten laitoin reilusti askarreltavaa.

Infra koodina on se, mitä tuotannossa kirjoitetaan. Ja kun koneita on paljon, tietysti ohjaamme niitä verkon yli.

Läksyt pitää palauttaa 24 h ennen seuraavan oppitunnin alkua, eli vasta w47w46. Kannattaa aloittaa ajoissa, sillä tässä voi olla enemmän tehtävääkin.

Ensi kerralla w46 torstaina opimme hallitsemaan demoneja, kuten Apache tai SSHd.

  • 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 Vagrant! Osoita jollain komennolla, että Vagrant on asennettu (esim tulostaa vagrantin versionumeron). Jos et ole vielä asentanut niitä, raportoi myös Vagrant ja VirtualBox asennukset. (Jos Vagrant ja VirtualBox on jo asennettu, niiden asennusta ei tarvitse tehdä eikä raportoida uudelleen.)
  • b) Linux Vagrant. Tee Vagrantilla uusi Linux-virtuaalikone.
  • c) Kaksin kaunihimpi. Tee kahden Linux-tietokoneen verkko Vagrantilla. Osoita, että koneet voivat pingata toisiaan.
  • d) Herra-orja verkossa. Demonstroi Salt herra-orja arkkitehtuurin toimintaa kahden Linux-koneen verkossa, jonka teit Vagrantilla. Asenna toiselle koneelle salt-master, toiselle salt-minion. Laita orjan /etc/salt/minion -tiedostoon masterin osoite. Hyväksy avain ja osoita, että herra voi komentaa orjakonetta.
  • e) Hei infrakoodi! Kokeile paikallisesti (esim 'sudo salt-call --local') infraa koodina. Kirjota sls-tiedosto, joka tekee esimerkkitiedoston /tmp/ -kansioon.
  • f) Aja esimerkki sls-tiedostosi verkon yli orjalla.
  • g) Tee sls-tiedosto, joka käyttää vähintään kahta eri tilafunktiota näistä: package, file, service, user. Tarkista eri ohjelmalla, että lopputulos on oikea. Osoita useammalla ajolla, että sls-tiedostosi on idempotentti.
  • h) Top file. Automatisoi vähintään kahden tilan / modulin ajaminen. Esim. komento 'sudo salt "*" state.apply' tai 'sudo salt-call --local state.apply' ajaa modulit "hello" ja "apache".
  • i) Vapaaehtoinen, haastavahko tässä vaiheessa: Asenna ja konfiguroi Apache. Sen tulee näyttää palvelimen etusivulla weppisivua. Weppisivun tulee olla muokattavissa käyttäjän oikeuksin, ilman sudoa.

Vinkkejä

  • 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
  • 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

Yhden koneen vagrant-asennus (ulkomuistista):

$ vagrant init debian/bookworm64
$ vagrant up

$ vagrant ssh
vm$ exit

$ vagrant destroy # tuhoaa myös kaikki virtuaalikoneen tiedostot

h3 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 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) 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
  • b) 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
  • c) Oma moduli. Valitse aihe omalle modulille. Varaa se myös kommentilla tämän kurssisivun perään. Kuvaile aihetta niin, että se yksilöi, mitä aiot tehdä. Aihesiin voi toki tulla muutoksia, kun rakennellessa oppii lisää ja paljastuu uusia yllätyksiä. (Tämä kohta ei edellytä testejä tietokoneella. Suosittelen omaa nimeä, mutta jos uskalla tai muuten halua, voit käyttää varauskommentissa etunimeä tai samaa nimimerkkiä, jota käytät läksyissä. ps. Käytä luovuutta, yleisönä ovat omat luokkakaverit. Voit vaikka viritellä jotain, mitä teet muutenkin. On nähty pelipalvelimia, Windows-työpöytiä, taiteilijan työasemaa, harjoitusmaaleja ja vaikka mitä.)
  • d) VirtualHost. 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.
  • e) Vapaaehtoinen, hieman haastava: 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.
  • f) Vapaaehtoinen, hieman haastava: 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.
  • g) Vapaaehtoinen, haastava: PostgreSQL. Asenna PostgreSQL-tietokannanhallintajärjestelmä. Anna jollekin käyttäjälle oma tietokanta. Osoita testillä, että se toimii.

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.

h4

h5

h6

h7

h8 Bonus

Vapaaehtoinen bonus: luettele ja linkitä tähän tekemäsi

  • a) Vapaaehtoiset tehtävät
  • b) Ristiinarvioinnin jälkeen olennaisesti parannetut tehtävät

Tehtävän määräaika on kurssin viimeisen oppitunnin alku. Tämä bonustehtävä on kokonaan vapaaehtoinen.