Configuration Management Systems - Palvelinten Hallinta - Spring 2020

Tux the Linux penguin

Just write what you want (idempotency). Control almost everything with one system (single source of truth). In plain text (infrastructure as code, versionable).

Control 10 computers. Or 100. Or 1000. Or control 2071 computers, like Jussi did on a previous course. Or handle 7 different operating systems and OS versions with a single master, like Matias. Course is in Finnish.

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 out of 5.

As the course is in Finnish, the rest of this page will be in Finnish. Moodle (Haaga-Helia account required)

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ä):

  • Linuxin komennot, apt
  • Demonien hallinta (esim Apache),
  • Tiedostojärjestelmän rakenne (etc, var…).

Alustava aikataulu

Pidän kaikki kurssini kokonaan etäopetuksena keväällä 2020. Kurssi kestää 8 viikkoa, 2020 loppukevään.

Läksyt 24 h ennen seuraavan lähiopetuskerran alkua linkkinä Moodleen (vaatii Haaga-Helian tunnukset).

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

  1. 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, pkg.installed). Miten tavoittaa orja muuttuvasta, tuntemattomasta osoitteesta, NAT:n ja tulimuurin takaa? Luettavaa: Karvinen 2018: Salt Quickstart – Salt Stack Master and Slave on Ubuntu Linux, Salt States – I Want My Computers Like This, Run Salt SLS File Locally, Quick Fix for Useless Salt Warning. Salt official documentation: Salt Getting Started Guide-kirjasta luvut Understanding SaltStack ja SaltStack Fundamentals ja SaltStack Configuration Management: Functions.
  2. Package-file-service. How to install and configure daemons, such as Apache web server or MySQL database management system. pkg.installed, file.managed, service.running, watch. ‘find /etc/ -printf ‘%T+ %p\n’|sort’ Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port, Apache User Homepages Automatically – Salt Package-File-Service Example. [Official] Salt Tutorials: How Do I Use Salt States?, States tutorial, part 1 – Basic Usage, Salt Best Practices.
  3. Versionhallinta. (+ torstaina Package-File-Service). Git. git init hellotero; git clone; git add .; git commit; git pull; git push; git log. GitHub. github.com/terokarvinen/sirotin. Publish Your Project with GitHub
  4. Muotit. Tiedoston tekeminen orjalle muotista. SLS-tilan tekeminen muotista. Jinja. for-in-endfor. {% for terosVariable in [‘foo’, ‘bar’] %}. {{ terosVariable }}. Apache Name Based Virtual Hosting.
  5. Pilarit. Omien modulien aloitus. Salaisuudet /srv/pillar/. Kaikki orjat näkevät /srv/salt/. SLS-tilan generointi jinjalla vs orjan tiedoston tekeminen muotista. ‘sudo salt-call –local sys.state_doc’ ‘sudo salt state.show_sls hellotero –out yaml’. ‘sudo salt ‘*’ pillar.items’. {{ pillar.get(‘port’, 22) }}. Karvinen 2018: Secrets in Salt Pillars. Official Salt Get Started: SaltStack Configuration Management: Pillar. Official Salt Documentation: Pillar Walkthrough
  6. *Muut keskitetyt hallintajärjestelmät
  7. Omien modulien työstämistä
  8. Omien modulien esittely

Arviointi

Osien ohjeelliset painoarvot ovat

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

Arvosana perustuu kokonaisarvioon suorituksista. Kaikki kotitehtävät pitää tehdä.

Läksyt

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

h1 Hei maailma, verkon yli ja idempotenssi.

Lue aikataulussa mainitut artikkelit. Joko linkistä tai googlettamalla/duckittamalla artikkelin nimeä.

a) Asenna Salt ja siihen uusi orja. Voit tehdä ne esimerkiksi uudelle virtuaalikoneelle, niin pääset kokeilemaan puhtaalta pöydältä.

b) Tee saltille idempotenssi hei maailma (siis tiedostosta, foo.sls)

d) Kerää tietoa koneesta saltin avulla (grains.items)

e) Kokeile jotain toista tilaa kuin file.managed. Tärkeitä ovat pkg.installed, file.managed, service.running, file.symlink, user.present, group.present. Ohjeita saa esim 'sudo salt kissa sys.state_doc pkg.installed|less'

f) Vapaaehtoinen: Laita Salt Master palvelimelle, joka näkyy Internetiin. Silloin orjat saavat siihen yhteyden tulimuurin läpi, ei-julkisista (NAT) osoitteista ja vaikkapa virtuaalikoneista.

h2 Package-File-Service

a) Demonin asetukset. Säädä jokin demoni (asenna+tee asetukset+testaa) package-file-service -rakenteella. Tunnilla muutettiin ssh:n porttinumeroa, joten tee jotain muuta.

b) Uusi ohjelma. Asenna + tee asetukset + testaa jokin sovellus, jota ei ole käsitelty tunnilla. Asenna ensin käsin, ja käytä sen jälkeen find-komentoa etsiäksesi muuttuneet tiedostot.

c) Aja jokin tila paikallisesti ilman master-slave arkkitehtuuria. Tutki debug-tulostetta. 'sudo salt-call --local state.apply hellotero --state-output terse'

d) Vapaaehtoinen: Omaa koiranruokaa. Asenna ja säädä salt:lla jokin ohjelma, jota oikeasti käytät. Esimerkiksi omalla läppärillä tai omalla Linoden/DigitalOceanin/OVH:n tms palvelimella.

e) Vapaaehtoinen: Suolapääsiäinen. Säädä useita käytössäsi olevia ohjelmia salt:lla. Tällainen käyttö antaa kokemusta ja itsevarmuutta keskitettyyn hallintaan. Ja tekee helpoksi ottaa uusia koneita omaan käyttöön.

h3 Versionhallinta

z) Opiskele yllä aikataulussa olevat artikkelit. Noissa artikkeleissa opetetaan ne asiat, joilla läksyt saa tehtyä. Tätä z-kohdan lukutehtävää ei tarvitse raportoida. Luettava materiaali on kunkin tapaamiskerran kohdalla.

a) MarkDown. Tee tämän tehtävän raportti MarkDownina. Helpointa on tehdä raportti GitHub-varastoon, jolloin md-päätteiset tiedostot muotoillaan automaattisesti. Tyhjä rivi tekee kappalejaon, risuaita ‘#’ tekee otsikon, sisennys merkitsee koodinpätkän.

d) Näytä omalla git-varastollasi esimerkit komennoista ‘git log’, ‘git diff’ ja ‘git blame’. Selitä tulokset.

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

f) Tee uusi salt-moduli. Voit asentaa ja konfiguroida minkä vain uuden ohjelman: demonin, työpöytäohjelman tai komentokehotteesta toimivan ohjelman. Käytä tarvittaessa ‘find -printf “%T+ %p\n”|sort’ löytääksesi uudet asetustiedostot. (Tietysti eri ohjelma kuin aiemmissa tehtävissä, tarkoitushan on harjoitella Salttia)

d) Vapaaehtoinen: Laita srv/salt/ gittiin. Tee uusi moduli. Kloonaa varastosi toiselle koneelle (tai poista srv/salt ja palauta se kloonaamalla) ja jatka sillä.

h4 CinCan Digital Forensics tai Modulikimara

Tee jompi kumpi, kohta a tai b. w17 on mahdollisuus osallistua CinCan vierailuun, mutta ei ole videokonfferenssia keskiviikkona eikä torstaina.

JOKO

a) CinCan digital forensics - vierailijan työpaja. Suosittelen tätä vaihtoehtoa, jos tekniset taidot riittävät. Asenna etukäteen tarvittavat työkalut ja osallistu CinCan työpajaan w17 tiistaina 2020-04-21 kello 12:00. Voit kirjoittaa työpajasta raportin jälkikäteen, jotta voit keskittyä työpajan aikana opetukseen ja tehtäviin. Työpajan aikana voit laittaa ylös tärkeitä komentoja ja avainsanoja. Raportissa kannattaa mainita, että se on muistista jälkikäteen kirjoitettu. Ohjeet työpajaan valmistatumiseen. Lähetän videokonfferenssin linkin sähköpostilla.

TAI

b) Modulikimara. Asenna 6 saltin tilaa/modulia. Tässä siis yksi tila/moduli on esimerkiksi Apachen asennus package-file-service rakenteella. Tiloista/moduleista enintään neljä voi olla muiden tekemiä, esimerkiksi verkosta löytyneitä. Muista lähdeviitteet ja lisenssit. Käytä tiloja, joita et ole aiemmin käyttänyt ja joita ei ole käsitelty tunnilla. Tilojen tulee tehdä muutakin kuin pelkästään asentaa yksittäinen paketti, esimerkiksi tehdä sille asetuksia (siis vaikka package-file, ei pelkkä package). Asennettavat ja konfiguroitavat ohjelmat voivat olla mitä vain valitset: palvelimia, graafisen käyttöliittymän ohjelmia, komentorviohjelmia, vapaita, suljettuja... Muista testata lopputulos käyttämällä ohjelmaa sen pääasiallisessa käyttötarkoituksessa. Jos jäät jumiin, tee kaikki mitä osaat ja dokumentoi ongelmat, niin ratkotaan niitä yhdessä.

h5 Muotteja ja Moduleja

a) Hello templates! Tee muotilla esimerkkitiedosto, jossa on muuttujien (esim grains) arvoja.

b) Message of the Day. Sisäänkirjautuessa näytetään päivän viesti. Lisää päivän viestiin tietoa ympäristöstä käyttäen muotteja. Sopiva tiedosto on /etc/motd.

c) Bash. Tee bashiin asetuksia Saltilla. Ensin käsin, vasta toimivaa automatisoidaan. Muista testata lopputulos käyttäjän näkökulmasta.

d) Nginx. Tee nginx-weppipalvelimeen asetuksia Saltilla. Voit esimerkiksi tehdä uuden site:n, niin että etusivu vaihtuu. Kun nginx on todennäköisesti sinulle uusi palvelin, tässä tehtävässä on siis ensin laaja osuus valita sopiva asetus nginx:lle ja saada se toimimaan käsin. Vasta toimivaa, käsin kokeiltua kannattaa automatisoida. Muista lopputuloksen testaus käyttäjän näkökulmasta.

x) Vapaaehtoinen: poista kaikki ylimääräinen motd:sta niin, että vain oma viestisi näkyy.

h6 Yksi totuus

Tavoitat Saltilla jo monet eri tyyppiset koneet. Vaikka läppärit vaihtavat osoitetta, jäävät tulimuurin ja NAT:n taakse, pystyt ohjaamaan niitä masterilla. Nyt tarkastellaan eri levityspakettien hallintaa.

a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille. CentOS on hyvä vaihtoehto. Voit esimerkiksi asentaa CentOS:n VirtualBoxiin ja tehdä koneiden välille virtuaaliverkon. Jos käytät Vagrantia, 'cent.vm.box = "centos/7"' on kätevä.

b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.

c) Tee päivän viesti (motd), jossa koneen tyyppi tulee grains osfinger -muuttujasta. Kokeile, että saat eri levityspaketeilla eri tuloksen. Voit hyödyntää aiemmin tekemääsi motd:ia.

d) Tee tila, joka tekee RedHat-perheellä (esim. CentOS) tiedoston /tmp/redhat ja Debian-perheellä (esim Ubuntu) tiedoston /tmp/debian. Voit käyttää mitä vain eri perheiden levityspaketteja.

d) Tee tila, joka asentaa ja konfiguroi Apachen kahteen erilaiseen järjestelmään, esim. CentOS ja Ubuntu. Paketin nimi on CentOS:ssa "httpd". Käytä Salt-koodin generointia muoteilla.

e) Vapaaehtoinen: Tee tila, joka asentaa nginx kahteen erilaiseen levityspakettiin.

d) Vapaaehtoinen, vaikeampi: Kokeile Salt:ia Windowsilla.

h7 Oma moduli

a) Vapaaehtoinen: Kokeile ja kommentoi ConfTeroa.

b) Oma moduli (iso tehtävä). Ratkaise jokin oikean elämän tai keksitty tarve omilla tiloilla/moduleilla. Voit käyttää Salttia tai muuta valitsemaasi modernia keskitetyn hallinnan ohjelmaa. Esitä tulos viimeisellä opetuskerralla, 5-10 min (keskiviikon ryhmä). Live demo olisi kiva. Raportoi modulisi tarkoitus, koodi ja testit.