Aikataulu – Palvelinten hallinta ict4tn022 3004-ti ja 3002-to – loppukevät 2018 5p

My student Jussi controls 2071 computers.

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 (read the paper); I’ve also been teaching these modern methods to companies. This autumn course feedback average for my courses has been excellent 4.9 / 5.0, and the previous feedback for this course was excellent 4.6 / 5.0.

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

Toteutus 3004-ti 12:00 ja 3002-to 08:00. Kaikki opetus labrassa 5004. Kurssi kestää 8 viikkoa, 2018 loppukevään.

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? w43

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-server. 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’ w44

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. Forking. Fork: terokarvinen/sirotin. Publish Your Project with GitHub w47

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. w45

5. Pilarit. Kertaus. 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) }}. w46

Karvinen 2018: Secrets in Salt Pillars. Official Salt Get Started: SaltStack Configuration Management: Pillar. Official Salt Documentation: Pillar Walkthrough

6. Kertaus, omien modulien aloitus. Vierailija: Puolustusvoimien Kyberosasto. w48

7. Modulien rakentamista, läksyn kuulustelu, modulien esittämistä. w49

8. Omien modulien esittely w50

Karvinen 2016: Publish Your Project with GitHub

Luettavaa: Karvinen 2018: SaltStack Get Started [official tutorial]: SaltStack Configuration Management: Jinja. Manage files.   Make a Million of Those – Jinja Templating Salt States.  Karvinen 2018: Name Based Virtual Hosts on Apache – Multiple Websites to Single IP Address.

(Luettavaa jollekin myöhemälle tapaamiskerralle: Karvinen 2015: Preseed MySQL Server Password with Salt Stack. Salt module reference: salt.states.debconfmod.)

Arviointi

Osien ohjeelliset painoarvot ovat
- Kotitehtävät 50%
- Oma moduli 50%
Arvosana perustuu kokonaisarvioon suorituksista.

Salt Docs Offline

Official Salt Documentation is available on GitHub. Download salt documentation as zip, docs are in doc/. For example: How Do I Use Salt States?

Salt documentation is also available in package management. This version is older than the one on GitHub and SaltStack homepage, because it’s the same version as salt in the default package repository. ‘sudo apt-get -y install salt-doc; firefox /usr/share/doc/salt/html/index.html’.

Linkit

Moodle 3004-ti ja 3002-to (edellyttää kirjautumista)

Läksyt

Läksyt tehdään ja raportoidaan kunkin tunnin jälkeen. Tehtävät saa julkaista missä haluaa ja palauttaa linkin Moodleen.

Kotitehtäväraportin tulee olla suoraan selaimella katseltavassa muodossa, tavallisena HTML-weppisivuna. Ei odt, ei odp, ei ppt, ei docx, ei doc, ei pdf. Kotitehtäviä ei voi palauttaa sähköpostitse. Linkit palautetaan Moodleen, mutta itse raportteja ei voi palauttaa Moodleen. Maksutonta kotisivutilaa saa esimerkiksi WordPress.com (helppo) ja GitHub.com.

Läksyt käydään läpi seuraavalla tapaamiskerralla, ratkotaan yhdessä ongelmia ja annetaan suullista palautetta. Arvosana kotitehtäväpaketista tulee vasta kurssin lopuksi, mutta tehtävät tulee silti palauttaa aina vuorokautta ennen seuraavia tunteja. Kurssilta poistetaan ne, jotka eivät ala suorittaa kurssia palauttamalla tehtäviä.

Julkaiseminen on vapaaehtoista, mutta erittäin suositeltavaa. Jos et jostain syystä uskalla tai muuten halua julkaista, voit laittaa työn weppisivulle salasanan taakse (kaikille kotitehtäville sama salasana) ja jakaa tämän salasanan kurssilaisten kanssa.

Kaikkien ajan säästämiseksi poistan kurssilta ne, jotka eivät ala suorittaa kurssia palauttamalla kotitehtäviä.

Jos tuntien yhteydessä järjestetään testejä läksyjen aiheista, niiden pisteet sisältyvät arvostelun kohtaan läksyt (50%).

Alustavat tehtävänannot

Tehtävät ovat virallisia vasta, kun ne on annettu tunnilla. Tehtävänannot muuttuvat vielä, koska tuntien aiheetkin voivat muuttua, ja lopullisessa arvioinnissa tehtävät arvioidaan niiden annettujen, virallisten tehtävien mukaan.

h1

a) Lue virallisesta Salt Getting Started Guide -kirjasta luvut Understanding SaltStack (noin 8 alasivua) ja SaltStack Fundamentals (6 alasivua, ei tarvitse asentaa demoympäristöä) ja SaltStack Configuration Management: Functions (1 alasivu). (Tätä lukutehtävää ei tarvitse raportoida).

b) Silmäile Laineen 2017 varastossa olevia salt -asetuksia. (Tätä lukutehtävää ei tarvitse raportoida).

c) Asenna Salt Master ja Slave pull-arkkitehtuurilla (eli master on server). Voit laittaa herran ja orjan myös samalle koneelle. Kokeile suorittamalla salt:illa komentoja etänä.

d) Kokeile jotain Laineen esimerkistä lainattua tilaa tai tee jostain tilasta oma muunnelma. Muista testata lopputuloksen toimivuus. Huomaa, että varastossa on myös keskeneräisiä esimerkkejä, kuten Battlenet-asennus Windowsille.

e) Kerää laitetietoja koneilta saltin grains-mekanismilla.

f) Oikeaa elämää. Säädä Saltilla jotain pientä, mutta oikeaa esimerkiksi omalta koneeltasi tai omalta virtuaalipalvelimelta. (Kannattaa kokeilla Saltia oikeassa elämässä, mutta jos se ei onnistu, rakenna jotain oikeaa konettasi vastaava virtuaaliympäristö ja tee asetus siinä).

g) Vapaaehtoinen: asenna ja konfiugroi jokin palvelin Saltilla. (package-file-server)

h2

Tehtävät tästä eteenpäin (h2, h3…) tulee ratkaista tekemällä Saltin tila (state), ellei tehtävänannosta muuta ilmene. Tee ensin käsin, automatisoi vasta sitten. Muista testata lopputulos.

h2 torstain ryhmä

Merkitse tehtävän alkuun, kumman ryhmän (tiistai vai torstai) h2-tehtävän olet tehnyt.

a) Opiskele yllä aikataulussa olevat artikkelit. (Tätä lukutehtävää ei tarvitse raportoida). Luettava materiaali on kunkin tapaamiskerran kohdalla, esimerkiksi nyt “2. Package-file-server. [...] Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt..”

b) Asenna SSH eri porttiin Package-File-Service rakenteella. Käytä service:watch -tekniikkaa niin, että demoni käynnistyy uudelleen, kun asetustiedosto muuttuu. (Vinkki: Pkg-File-Service – Control Daemons with Salt)

c) Asenna Apache käsin niin, että käyttäjien kotisivut näkyvät. Etsi muutetut tiedostot komennolla ‘find /etc/ -printf ‘%T+ %p\n’|sort’. (Muista korjata lainausmerkit oikeiksi, automaattimuotoilu usein sotkee ne). Yritä nyt tehdä tila, joka asettaa nuo tiedostot (file.symlink) paikoilleen. (Katso tarvittaessa: Apache User Homepages Automatically)

d) Eri package-file-service. Tee package-file-service tilalla jokin eri asetus tai asennus kuin tunnilla ja tehtävän muissa kohdissa.

h2 tiistain ryhmä

Merkitse tehtävän alkuun, kumman ryhmän (tiistai vai torstai) h2-tehtävän olet tehnyt.

a) Opiskele yllä aikataulussa olevat artikkelit. (Tätä lukutehtävää ei tarvitse raportoida). Luettava materiaali on kunkin tapaamiskerran kohdalla, esimerkiksi nyt “2. Package-file-server. [...] Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt..”

b) Laita käyttäjien kotisivut toimimaan Apachella.

c) Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. Jos et ole koskaan tehnyt nimipohjaisia virtuaalipalvelimia Apachelle, katso ohje (Name Based Virtual Hosts on Apache) tee tehtävä niin pitkälle kuin osaat.

e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.

f) Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa. Voit muuttaa jotain toista asetusta samoista demoneista tai valita kokonaan eri demonit.

h3

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

b) MarkDown. Tee tämän tehtävän raportti MarkDownina. Helpointa on tehdä raportti samaan GitHub-varastoon kuin Salt-modulit. Tiedostoon .md-pääte. Tyhjä rivi tekee kappalejaon, risuaita ‘#’ tekee otsikon, sisennys merkitsee koodinpätkän.
c) Laita /srv/salt/ gittiin. Tee uusi moduli. Kloonaa varastosi toiselle koneelle (tai poista /srv/salt ja palauta se kloonaamalla) ja jatka sillä.
d) Näytä omalla salt-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.

h4

Tämän tehtävän saa poikkeuksellisesti palauttaa tunnin alkuun mennessä, eli ei tarvitse olla vuorokautta ennen.

a) Tee skripti, joka tekee koneestasi salt-orjan.

Tee joko b tai c:

b) Lokianalytiikka. Kokeile viimeisintä versiota Jussin, Einon ja Sakun lokien analytiikasta. Täytä tai kommentoi GitHub-sivulla jotain bugia tai kehitysehdotusta. (Jos teit tätä tunnilla, tee uusi bugiraportti/kommentti uusimmasta versiosta) https://github.com/jisosomppi/log-analysis/tree/master/salt

c) Vagrant. Asenna Vagrant. Kokeile jotain uutta kuvaa Atlaksesta. Huomaa, että kuvat ovat vieraita binäärejä, ja virtuaalikoneista on mahdollista murtautua ulos. Jokohan Ubuntun virallinen  Suodatin: VirtualBox, järjestys: Most downloads. https://app.vagrantup.com/boxes/search?provider=virtualbox

d) Ota tunnille mukaan ylimääräinen muistitikku. Jos osaat ja sinulla on Windowsin lisenssejä, tee siitä Windows 10 asennustikku. Levykuvia saa Microsoftin kotisivulta “download windows iso” ja koulun palveluista. Tikkua käytetään joko ensi tunnilla tai sitä seuraavalla.

ps.

Jos sinulla on miniprojektin aihe mietittynä, sen saa varata kurssisivun perään.

Vapaaehtoinen kilpa: Kuka hallitsee isointa määrää orjia? Kuka ohjaa suurinta määrää eri käyttöjärjestelmiä ja arkkitehtuureja? Voittajan palkintona huima arvosanabonus.

hx

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

b) Tiedosto muotista: tee yksinkertainen SLS-tilatiedosto, joka laittaa muuttujan tiedostoon. Käytä jinjan kontekstimuuttujaa (template: jinja, context: …).

c) SLS tilaa Jinjalla: tee yksinkertainen SLS-tilatiedosto, joka käyttää for-in -silmukaa. Voit esimerkiksi tehdä kolme tiedostoa silmukalla. (Tässä tehtävässä siis käytetään jinjaa vain SLS-tiedoston sisällä, älä sotke samaan esimerkkiin tekstitiedostojen sisällön muuttamista.)

d) SSH-demonin portti: tee tila, joka asentaa SSH-demonin valittuun porttiin. Käytä portin valintaan Jinjaa, siten että sshd_config:issa “Port:”-kohdan arvo tulee Jinjan muuttujasta.

e) Kokeile jonkun toisen opiskelijan tekemää Salt-tilaa. Kokeiltava tila voi olla mistä vain harjoituksesta. Opiskelijoiden raportteja ja koodeja löydät tämän sivun perästä kommenteista.

f) Tee kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummalekin orjalle mene eri tieto. Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

g) Tee kahdella orjalla esimerkki, jossa toinen orja saa muuttujan pilarista ja toinen käyttää oletusarvoa (pillar.get). Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

h5

Poikkeuksellisesti pidempi palautusaika w18 perjantaina 2018-05-04 12:00 asti. Vappupäivänä ei ole opetusta. Hauskaa Wappua!

a) Valitse aihe omaksi kurssityöksi ja varaa se kommenttina aikataulusivun perään.

b) Julkaise raportti MarkDownilla. Jos käytät GitHub:ia, se tekee muotoilun automaattisesti “.md”-päätteisiin dokumentteihin.

c) Aja oma Salt-tila suoraa git-varastosta. Voit joko tehdä tilan alusta lähtien itse tai forkata sirottimen.

h6 – DL perjantaina

Tämän tehtävän määräaika on jo w19 perjantaina 2018-05-11, koska tämä tehtävä korvaa viikon lähiopetustunnit.

a) Kultainen polku. Tee ensimmäinen versio modulistasi, joka toimii ainakin optimiolosuhteissa. Jos jokin säätö on poikkeuksellisen hankala, voit tehdä sen tässä versiossa käsin, ja dokumentoida ajamasi käskyt. (Valmis moduli tarvitaan vasta esitykseen ensi viikolla).

b) Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.

c) Käyttäjätarina (user story): ketkä ovat modulisi käyttäjät? Mitä he haluavat saada aikaan modulillasi? Missä tilanteessa he sitä käyttävät? Mitkä ovat tärkeimmät parannukset käyttäjän kannalta, joita moduliin pitäisi vielä tehdä? Tähän c-kohtaan vain sanallinen vastaus, tämä kohta ei poikkeuksellisesti edellytä testejä tietokoneella.

d) Kertaa materiaali ja valmistaudu kokeeseen. Tätä d-kohtaa ei tarvitse raportoida.

Kaikki tehtävät arvioitavaksi

Palauta yksi linkki, josta löytyvät kaikki kurssipalautukset, eli läksyt ja miniprojekti. Moodlessa kohta “Kaikki tehtävät arvioitavaksi”.

Jos haluat näkyvyyttä ja viittauksia sivullesi, kannattaa laittaa linkki myös tämän sivun kommentiksi.

Karvinen 2016: Publish Your Project with GitHub

Luettavaa: Karvinen 2018: SaltStack Get Started [official tutorial]: SaltStack Configuration Management: Jinja. Manage files.   Make a Million of Those – Jinja Templating Salt States.  Karvinen 2018: Name Based Virtual Hosts on Apache – Multiple Websites to Single IP Address.

(Luettavaa jollekin myöhemälle tapaamiskerralle: Karvinen 2015: Preseed MySQL Server Password with Salt Stack. Salt module reference: salt.states.debconfmod.)

Salt Docs Offline

Official Salt Documentation is available on GitHub. Download salt documentation as zip, docs are in doc/. For example: How Do I Use Salt States?

Salt documentation is also available in package management. This version is older than the one on GitHub and SaltStack homepage, because it’s the same version as salt in the default package repository. ‘sudo apt-get -y install salt-doc; firefox /usr/share/doc/salt/html/index.html’.

Tämä sivu päivittyy koko kurssin ajan.
Posted in Uncategorized | Tagged , , , , , , , , , , , , , , , , , , , , | 25 Comments

25 Responses to Aikataulu – Palvelinten hallinta ict4tn022 3004-ti ja 3002-to – loppukevät 2018 5p

  1. Juha Immonen says:

    Varailen mikroprojektin aiheeksi Python Flask pinon tekemisen.

    Se on jo aika pitkällä, aloitin tekemisen H3 yhteydessä.

    Flask pino Saltilla

  2. MarkDownilla tehty opinnäyte, Kim Salmen vanhusten kaatumisen tunnistaminen

    https://github.com/infr/falldetector-public/blob/master/thesis.md

  3. Vagrant-vieraan weppipalvelin näkyviin isännän selaimessa:

    config.vm.forward_port 80, 8080

    http://terokarvinen.com/2012/apache-web-server-vagrant-ubuntu-forward-port

  4. Lokit yhteen monelta koneelta ja nätille dashboardille. Beta.
    https://github.com/jisosomppi/log-analysis/tree/master/salt

    Jussi Isosomppi, Eino Kupias, Saku Kähäri

  5. GitHub.com Education https://education.github.com/, ensin GitHub vahvistettu @haaga-helia.fi sähköpostiosoite

  6. find -printf ‘%T+ %p\n’|sort

  7. Kysymyksiä package-file-server -tunnilta

    - hyvät salasanat
    - käyttäjätunnus yksilöi ihmisen terote01 “Tero Karvinen test user”
    - git?
    - loopback, network interface
    - peruskomentojen harjoittelu
    - asetustiedostojen löytäminen;
    – cd /etc/teroTAB; ls
    – dpkg –listfile terod
    - systemd voitti, sudo systemctl restart terod
    - adduser tero
    - ensin käsin, sitten vasta automaattisesti
    - systemctl restart ssh vai sshd
    - miksi lukita, miten lukita, passwd, mitä hyökkääjä tekee
    - echo -e ‘foo\nbar’|sudo tee /tmp/overwritten
    - mitä komento (esim a2enmod) tekee? find, stat; salainen kastike; file vs exec
    - public_html, milloin voi päällekirjoittaa kotihakemistoja; mitä jos käyttäjällä on jotain tärkeää? /etc/skel; tekn. käyttäjä
    - .bashrc vs /etc/bash.bashrc
    - apt cdrom error / warning
    - oma virtuaalipalvelin. Github rek @haaga-helia.fi ja vahvista sähköposti. “Github Education”. Digitalocean.

  8. Oma virtuaalipalvelin.

    Rekisteröidy ensin GitHubiin @haaga-helia.fi -tunnuksella ja vahvista se klikkaamalla sähköpostin linkkiä.

    Sitten hae “GitHub Education”

    http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean

  9. Pekka Seppänen says:

    Tervehdys,

    Linkistä 1. viikon tehtäviin

    https://pseppanen296518693.wordpress.com/

Leave a Reply

Your email address will not be published. Required fields are marked *

*

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • Recent Posts

  • Picks

  • Boxing Clock for AndroidOcton8 Diving T-ShirtsShaking Tower Panda Android GameLearn Chinese with Android
  • Student projects