Palvelinten Hallinta
Configuration Management Systems course - 2025 spring
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.
Course, both instances | |
---|---|
Course name and code | Palvelinten hallinta ICI001AS3A-3008 |
Timing | 2025 period 4, late spring, w13-w20 |
Credits | 5 cr |
Language | Finnish (+reading material in English) |
Feedback | 5.0 / 5 * Excellent feedback ![]() |
Classes | Wed 17:40 - 20:30, online video conference, mandatory participation |
Max students | 50 |
Remote | Fully remote |
First class | 2025-03-26 w13 Wed 17:40, Jitsi link will be in Moodle. |
Services | Moodle: 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.
- Linuxin komennot, apt Command Line Basics Revisited
- Tiedostojärjestelmän rakenne (etc, var…). Alkeet löytyvät samasta Command Line Basics Revisited
- Demonien hallinta (esim Apache) Install Apache Web Server on Ubuntu (paitsi demonin potkaisu nykyisin 'sudo systemctl restart apache2')
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 keskiviikkoisin online 14:00 - 16:45 videokonfferenssina.
Päivä | Aihe |
---|---|
Perusteet | |
2025-03-26 w13 Wed | 1. Hello Salt. Master-slave, pull -arkkitehtuuri. Komentojen etäsuoritus (cmd.run, pkg.install). Tietojen kerääminen orjista (grains.items). Esimerkkejä tiloista (file.managed). |
2025-04-02 w14 Wed | 2. Verkkon yli. Herra-orja -arkkitehtuuri verkon yli. Orjan tavoittaminen tuntemattomasta osoitteesta, NAT ja tulimuurin takaa. Harjoitusympäristöjen rakentaminen Vagrantilla. |
2025-04-09 w15 Wed | 3. Vierailija Arttu Uskali, Head of Strategic Development, UpCloud: Self-hosted vs as a Service. |
2025-04-16 w16 Wed | 4. Pkg-file-service eli demonien hallinta. Käsin tehdyn konfiguraation automatisointi. |
Erityisaiheet | |
2025-04-23 w17 Wed | 5. Versionhallinta. Git: init, clone, add, commit, pull, push, log. GitHub ja muut avustavat palvelut. Omien modulien aloitus. |
2025-04-30 w18 Wed | (vappuaatto, ei iltaopetusta) |
Soveltaminen | |
2025-05-07 w19 Wed | 6. Omien modulien esittely I. |
2025-05-14 w20 Wed | 7. 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.
Vanhoja toteutuksia
Palvelinten hallinta ICI001AS3A-3010 - 2024 periodi 2, loppusyksy
Vanhoja toteutuksia vuoteen 2018 asti
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
- Karvinen 2023: Create a Web Page Using Github
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ää. Lisää kuhunkin jokin oma kysymys tai huomio.)
- Karvinen 2023: Run Salt Command Locally
- Karvinen 2018: Salt Quickstart – Salt Stack Master and Slave on Ubuntu Linux
- Karvinen 2006: Raportin kirjoittaminen
- WMWare Inc: Salt Install Guide: Linux (DEB) (poimi vain olennainen osa)
- 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.
Vinkit
- Tehtävissä tulee tehdä testit tietokoneella ja raportoida tulokset. Pelkkä kuvittelu ei siis riitä. Raporttia tulee kirjoittaa koko ajan samalla kun työskentelee.
- Artikkeleissa tärkeintä on niiden lukeminen ja ajattelu. Tiivistelmät saavat olla suppeita.
- Linuxin asentaminen virtuaalikoneeseen: Karvinen 2024: Install Debian on Virtualbox - Updated 2024
- 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
- Saltin asennus edellyttää nykyään (Debian 12 Bookworm) uuden pakettivaraston asentamista. WMWare Inc: [Salt Install Guide: Linux (DEB)] (https://docs.saltproject.io/salt/install-guide/en/latest/topics/install-by-operating-system/linux-deb.html)
- 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?
- Kaikkia alakohtia pitää yrittää ratkaista
- Ja katsotaan yhdessä tunnilla ratkaisut.
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. Ei siis vaadita pitkää eikä essee-muotoista tiivistelmää.)
- Karvinen 2021: Two Machine Virtual Network With Debian 11 Bullseye and Vagrant (Huomaa: nykyinen Debian stable on 12-Bookworm, Vagrantissa "debian/bookworm64". Vanhentunutta 11-bullseye:ta ei enää käytetä)
- Karvinen 2018: Salt Quickstart – Salt Stack Master and Slave on Ubuntu Linux (Huomaa: Nykyisin ennen Saltin asentamista on asennettava ensin varasto [package repository], ohje h1 vinkeissä)
- 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
- 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) Kokeile vähintään kahta tilaa verkon yli (viisikosta: pkg, file, service, user, cmd)
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 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 Infraa koodina
- 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 2014: Hello Salt Infra-as-Code
- Salt contributors: Salt overview, kohdat
- Rules of YAML
- YAML simple structure
- Lists and dictionaries - YAML block structures
- a) Hei infrakoodi! Kokeile paikallisesti (esim 'sudo salt-call --local') infraa koodina. Kirjota sls-tiedosto, joka tekee esimerkkitiedoston /tmp/ -kansioon.
- b) Aja esimerkki sls-tiedostosi verkon yli orjalla.
- c) 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.
Vinkit
- Näissä vinkeissä komennot ovat ulkomuistista, syntaksivirheitiä saattaa olla
- Infra koodina, ne sls-tiedostot
- Herran (master) /srv/salt/-kansion alle
- Omiin kansioihinsa, esimerkiksi /srv/salt/hello/init.sls (ei hujan hajan eli
ei /srv/salt/hups.sls )
- Orjien komentaminen, ajakaa masterin /srv/salt/hello/init.sls
- $ sudo salt '*' state.apply hello
- Lisätietoa tiloista, esim. pkg, file, service, user. Sisältää myös esimerkkejä sls-tiedostoista.
- $ sudo salt-call --local sys.state_doc pkg
- Less haku /, seuraava n, edellinen N, alku g, loppu G, q quit.
h4 Pkg-file-service
Itsenäistä opiskelua: 2025-04-16 w16 keskiviikkona ei ole oppituntia.
Apache, MariaDB, PostgreSQL, Nginx, OpenSSHd - kaikki demoneja. Ja kaikki näistä asennetaan suunnilleen samalla tavalla.
Asennetaan itse ohjelma, tehdään asetukset tiedostoon ja lopuksi käynnistetään. Jos asetustiedosto muuttuu, se demoni käynnistetään uudelleen.
Tältä se näyttäisi käsin tehtynä (vastaava salt-funktio # kommenttina):
$ sudo apt-get install ssh # pkg
$ sudoedit /etc/ssh/sshd_config # file
$ sudo systemctl start ssh # service
$ sudo systemctl restart ssh # service - watch
pkg-file-service on vain automaatio samasta. Service vahtii (watch) tiedostoa, jotta demoni käynnistetään uudelleen asetustiedoston muuttuessa.
- 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 esimerkkinä jonkun toisen Linux-version sshd_config tiedosto. Jos tekisit samanlaisen, niin käyttäisit tietysti oman järjestelmäsi asetustiedostoa pohjana.
- Nykyisin suosittelen asentamaan jokaisen modulin omaan kansioonsa, eli
/srv/salt/ssh/init.sls (eikä hujan hajan /srv/salt/ssh.sls)
- Karvinen 2018: Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port
- 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) Vapaaehtoinen, haastavahko tässä vaiheessa: Asenna ja konfiguroi Apache ja Name Based Virtual Host. Sen tulee näyttää palvelimen etusivulla weppisivua. Weppisivun tulee olla muokattavissa käyttäjän oikeuksin, ilman sudoa.
- d) Vapaaehtoinen, 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.
- e) Vapaaehtoinen, 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.
- f) 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ä