Palvelinten hallinta - Harjoitus 6
==============

*Disclaimer:*
--------------

Tämä harjoitus on tehty osana Haaga-Helian Tietojenkäsittelyn koulutusohjelman kurssia [Palvelinten hallinta (ICT4TN022, kevät 2018)](http://www.haaga-helia.fi/fi/opinto-opas/opintojaksokuvaukset/ICT4TN022). Kurssin pitäjänä toimii [Tero Karvinen](http://terokarvinen.com/), joka on määritellyt tämän harjoituksen tehtävänkuvaukset. Tehtävien vastaukset ovat Pekka Heleniuksen (allekirjoittanut) tuottamia.

*SISÄLLYSLUETTELO*
--------------

- [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).](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/h6.md#a-kultainen-polku-tee-ensimm%C3%A4inen-versio-modulistasi-joka-toimii-ainakin-optimiolosuhteissa-jos-jokin-s%C3%A4%C3%A4t%C3%B6-on-poikkeuksellisen-hankala-voit-tehd%C3%A4-sen-t%C3%A4ss%C3%A4-versiossa-k%C3%A4sin-ja-dokumentoida-ajamasi-k%C3%A4skyt-valmis-moduli-tarvitaan-vasta-esitykseen-ensi-viikolla)

- [b) Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/h6.md#b-kokeile-moduliasi-tyhj%C3%A4ss%C3%A4-koneessa-voit-k%C3%A4ytt%C3%A4%C3%A4-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.](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/h6.md#c-k%C3%A4ytt%C3%A4j%C3%A4tarina-user-story-ketk%C3%A4-ovat-modulisi-k%C3%A4ytt%C3%A4j%C3%A4t-mit%C3%A4-he-haluavat-saada-aikaan-modulillasi-miss%C3%A4-tilanteessa-he-sit%C3%A4-k%C3%A4ytt%C3%A4v%C3%A4t-mitk%C3%A4-ovat-t%C3%A4rkeimm%C3%A4t-parannukset-k%C3%A4ytt%C3%A4j%C3%A4n-kannalta-joita-moduliin-pit%C3%A4isi-viel%C3%A4-tehd%C3%A4-t%C3%A4h%C3%A4n-c-kohtaan-vain-sanallinen-vastaus-t%C3%A4m%C3%A4-kohta-ei-poikkeuksellisesti-edellyt%C3%A4-testej%C3%A4-tietokoneella)

**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).
--------------

**Vastaus:**

Ensimmäinen versio moduulistani löytyy git-varastostani [salt_gisworkstation](https://github.com/Fincer/salt_gisworkstation). Moduulia on testattu Lubuntu 18.04 LTS Salt Master/Minion -konfiguraatiolla.

Suurimmat puutteet liittyvät ei-implementoituihin logiikoihin sekä hyvin rajattuun käyttöympäristöön. Olen sisällyttänyt TODO-listan varaston pääskriptiin [runme.sh:een](https://github.com/Fincer/salt_gisworkstation/blob/master/runme.sh).

Moduulin testauksesta lisää kohdassa b).


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

**Vastaus:**

Käyttötestaus tehtiin Oracle VirtualBox:ssa [Lubuntu 18.04 LTS:llä](http://cdimage.ubuntu.com/lubuntu/releases/18.04/release/lubuntu-18.04-desktop-amd64.iso). Käyttöjärjestelmä asennettiin Oracle VirtualBoxiin oletusasetuksilla testausta varten.

Virtuaalikoneessa moduuli ladattiin GitHub:sta ja suoritettiin seuraavilla komennoilla:

```
sudo apt-get update && sudo apt-get install git
git clone https://github.com/Fincer/salt_gisworkstation.git
cd salt_gisworkstation
bash runme.sh
```

![salt_gisworkstation_0](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/salt-testing_0.png)

_GIS Workstation -skriptin alkuvaiheen ajoa_

![salt_gisworkstation_1](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/salt-testing_1.png)

_Kaikkia moduulin vaatimia paketteja ei ole missään pakettivarastoissa uusimmille Ubuntu-jakeluille. Lisäksi jakeluissa olevat versiot CloudComparesta ovat vanhentuneita. Ohjelman kasaus master-koneella vie aikaa, joten se kannattaa tehdä vain kerran, mikäli suinkin mahdollista. Ohjelman kasaus kasvattaa asennusprosessin virheriskiä selkeästi._

![salt_gisworkstation_2](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/salt-testing_2.png)

_GIS Workstation -skriptien suorittamisen jälkeinen tila, jonka Salt master raportoi käyttäjälle. Myöhemmällä tarkastelulla huomataan, että kaikki asennukset ovat menneet testiajossa onnistuneesti sisään kohdetietokoneeseen konfigurointeineen._

Testiajon aikana ei havaittu merkittäviä virhetilanteita.

Ohjelmakasauksen (ennen kaikkea CloudCompare) takia testiajo kestää jonkin aikaa.

Ohjelmien kasaus moduulissa on hieman ongelmallista, koska se voi rikkoontua helposti eikä välttämättä skaalaudu kovin monelle koneelle virheettömästi. Kuitenkaan CloudComparea ei ole saatavilla esimerkiksi Ubuntu 18.04 -jakeluille missään PPA-varastossa, joten toistaiseksi kasaus on välttämätön. LASTools ei todennäköisesti rikkoudu niin helposti, koska kasauksessa vaadittavat kehittäjäpaketit (makedepends) ovat paljon rajatumpia.

CloudCompare, QGis ja LASTools ovat saatavilla myös Windows:lle. Muiden ohjelmien saatavuutta Windows:lle ei ole tässä vaiheessa vielä tutkittu riittävästi.

Virtuaalikoneelle osoitettujen CPU:iden määrää olisi voinut kasvattaa, tämä tuli huomattua erityisesti CloudComparen kasauksessa. Skriptissä ytimien hyödyntäminen on otettu huomioon (make-parametri _-j$(nproc --ignore 1)_)

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

**Vastaus:**

Moduuli on tarkoitettu pieneen käyttöympäristöön (suuruusluokka 7-13 konetta) paikkatiedon prosessointiin. Moduulin käyttäjät koostuvat paikkatietoasiantuntijoista, jotka haluavat saada avoimen lähdekoodin paikkatietotyökaluja. Käyttötarkoitus rajautuu asennettavien ohjelmien mukaan: LASTools, QGIS, gpsbabel, CloudCompare jne. Näitä ohjelmia käytetään  rasteri- ja vektorimuotoisten paikkatietoaineistojen sekä laserkeilausaineistojen prosessointiin sekä analytiikkaan.

Tärkeimmät moduulin parannukset ovat

- laajempi käyttöjärjestelmätuki

- laajempi skaalautuvuus

- _vakaa tuki_ laajalle konekannalle (edellyttää huolellista testausta)

- ohjelmien lisäkonfigurointi ja asentaminen käyttäjien tarpeiden mukaan

    - Salt:n pillars:ien avulla esimerkiksi

- logiikoiden ja virheentarkastuksen lisäys

- parempi lähestymistapa LASTools:n ja CloudComparen jakeluun sekä QGIS2.conf -tiedoston jakeluun koneille

- lähtötilanteen parempi huomiointi: esimerkiksi kaikki kohdekoneet PXE-boottausta tukevia tyhjiä työasemia

**HUOM!** Alkuskenaarioon liittyvä haaste:

Moduulin toteuttamisessa haastavin kysymys liittyy alkuskenaarioon. Mikä on ennen kaikkea minion-tietokoneiden ja verkon rakenteen alkuskenaario?

- A) Ei käyttöjärjestelmää lainkaan

- B) Osassa tietokoneita Windows, osassa Ubuntu

- C) Kaikissa koneissa Ubuntu/Windows

- D) Kuinka Salt Minion -asennetaan? SSH-yhteyden yli? Jos kyllä, niin tarvitaan toimiva SSH-konfiguraatio minion-koneelle. Onko se asennettu etukäteen vai täytyy konfiguroida koneelle? Tapahtuuko SSH:n asennus käyttöjärjestelmä-imagen asennuksen yhteydessä automaattisesti?

- E) Onko kaikki koneet verkossa jatkuvasti olevia staattisia työasemia vai onko verkossa myös kannettavia tietokoneita, joille edellytetään Salt-konfigurointia?

Pienellä konekannalla tämä ei välttämättä ole kovinkaan ihmeellinen kysymys, mutta useammalla kymmenellä tai sadalla tietokoneella, jos alkuskenaarioon ei ole varauduttu, asiasta muodostuu ongelma.
