Manage multiple server & client computers with SaltStack (finnish)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

587 lines
33 KiB

  1. # Kurssimoduuli
  2. - Linkki moduuliin: [Fincer - Salt, GIS Workstation](https://github.com/Fincer/salt_gisworkstation)
  3. Tämä kurssimoduuli 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).
  4. Kurssimoduuli käsittelee SaltStack:n käyttöä usean tietokoneen työympäristössä. Yksinkertaistettuna periaatteena yksi tietokone toimii Master-roolissa, ja käskyttää kytkennässä olevia, Minion-roolissa olevia tietokoneita ohjelmien konfiguraatioiden, asennusten, käyttäjänhallinnan jne. suhteen.
  5. ## SISÄLLYSLUETTELO
  6. - [Järjestelmävaatimukset](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#j%C3%A4rjestelm%C3%A4vaatimukset)
  7. - [Moduulin toteutusperiaatteista](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-toteutusperiaatteista)
  8. - [Moduulin shell-skriptivaatimukset](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-shell-skriptivaatimukset)
  9. - [Asennettavat ohjelmat](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#asennettavat-ohjelmat)
  10. - [Asennettavat binääritiedostot](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#asennettavat-bin%C3%A4%C3%A4ritiedostot)
  11. - [Asennettavat konfiguraatiot](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#asennettavat-konfiguraatiot)
  12. - [Moduulin rakenne](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-rakenne)
  13. - [Moduulin ajo](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-ajo)
  14. - [Miltä näyttää minion-koneilla?](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#milt%C3%A4-n%C3%A4ytt%C3%A4%C3%A4-minion-koneilla)
  15. - [Huomioita moduulin ajosta](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#huomioita-moduulin-ajosta)
  16. - [Moduulin hyvät puolet](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-hyv%C3%A4t-puolet)
  17. - [Moduulin huonot puolet](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-huonot-puolet)
  18. - [Moduulin kehittämistarpeet](https://github.com/Fincer/central-management-of-multiple-servers/blob/master/module.md#moduulin-kehitt%C3%A4mistarpeet)
  19. -------------------
  20. ## Aihe
  21. Moduulin aihekuvaus löytyy [harjoituksen 6 yhteydestä](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)
  22. *"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."*
  23. *"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."*
  24. -------------------
  25. ## Järjestelmävaatimukset
  26. Moduuli edellyttää tietokoneiden käyttöjärjestelmiltä seuraavia vaatimuksia.
  27. - Salt Master -tietokone: Ubuntu 18.04 LTS tai variantti
  28. - Salt Minions -tietokoneet:
  29. - Ubuntu 18.04 LTS tai variantti
  30. - Microsoft Windows (versio 7 testattu)
  31. ### Moduulin toteutusperiaatteista
  32. - Salt Masteria ei ole kokeiltu Microsoft Windowsilla, vaan se on toteutettu kohdistuneena asennuksena yksinoikeudella Linux Ubuntu 18.04 LTS -käyttöjärjestelmälle.
  33. - Tavoitteena on ollut mahdollisimman automatisoitu asennustoimenpide, joka voidaan suorittaa "tyhjille" käyttöjärjestelmille kylmiltään.
  34. - Moduulin ajaminen on tarkoitettu tapahtuvaksi pääsääntöisesti yhdellä komennolla (pois lukien minion-koneiden esikonfigurointi).
  35. -------------------
  36. ## Moduulin shell-skriptivaatimukset
  37. Moduuli tukeutuu vahvasti Unix-ympäristöjen Bash-shelliin, mitä vaaditaan moduulin onnistuneessa ajosuorituksessa.
  38. Moduulin mukana tulevissa shell-skripteissä on lisäksi määritelty lisävaatimuksia ajoympäristön suhteen. Näitä vaatimuksia ovat mm.:
  39. - kriittisten binäärien olemassaolo Salt Master -tietokoneella
  40. - verkkoyhteyden saatavuus
  41. - moduuli ajettava pääkäyttäjän oikeuksin
  42. - Minioneiden käyttöjärjestelmään, yhteyteen ja raportoituun tilaan liittyvät määrittelyt
  43. - jne.
  44. -------------------
  45. ## Asennettavat ohjelmat
  46. Moduuli asentaa alla luetellut ohjelmat Microsoft Windows - ja Linux Ubuntu 18.04 LTS -käyttöympäristöihin.
  47. ### Microsoft Windows
  48. - [Visual Runtime 2013](https://www.microsoft.com/en-us/download/details.aspx?id=40784)
  49. - [CloudCompare](cloudcompare.org)
  50. - [Merkaartor](merkaartor.be)
  51. - Kuvaus: *"map editor for OpenStreetMap.org"*
  52. - [QGIS](qgis.org)
  53. - Kuvaus: *"A Geographic Information System (GIS) manages, analyzes, and displays databases of geographic information."*
  54. - [QuickRoute GPS](http://www.matstroeng.se/quickroute/en/)
  55. - Kuvaus: *"GPS analysis software for getting your route on the map"*
  56. - Ohjelmaa [GPSd](https://code.google.com/archive/p/gpsd-4-win/) ei onnistuttu asentamaan automaattisesti MS Windows -alustalle. Ohjelmakuvaus löytyy seuraavan otsikon alta.
  57. ### Linux Ubuntu 18.04 LTS
  58. - [cloudcompare](cloudcompare.org)
  59. - Kuvaus: *"3D point cloud and mesh processing software"*
  60. - [gpx2shp](gpx2shp.osdn.jp)
  61. - Kuvaus: *"convert GPS or GPX file to ESRI Shape file"*
  62. - [rel2gpx](https://directory.fsf.org/wiki/Rel2gpx)
  63. - Kuvaus: *"create GPX-track from OSM relation"*
  64. - [quickroute-gps](http://www.matstroeng.se/quickroute/en/)
  65. - Kuvaus: *"GPS analysis software for getting your route on the map"*
  66. - [python-gpxpy](https://github.com/tkrajina/gpxpy)
  67. - Kuvaus: *"GPX file parser and GPS track manipulation library (Python 2)"*
  68. - [obdgpslogger](https://github.com/oesmith/obdgpslogger)
  69. - Kuvaus: *"suite of tools to log OBDII and GPS data"*
  70. - [merkaartor](merkaartor.be)
  71. - Kuvaus: *"map editor for OpenStreetMap.org"*
  72. - [gpsbabel](gpsbabel.org)
  73. - Kuvaus: *"GPS file conversion plus transfer to/from GPS units"*
  74. - [gpsbabel-gui](gpsbabel.org)
  75. - Kuvaus: *" GPS file conversion plus transfer to/from GPS units - GUI"*
  76. - [gis-gps]( https://pkg-grass.alioth.debian.org/)
  77. - Kuvaus: *"GPS related programs"*
  78. - [qgis](qgis.org)
  79. - Kuvaus: *"A Geographic Information System (GIS) manages, analyzes, and displays databases of geographic information."*
  80. - [qgis-server](qgis.org)
  81. - Kuvaus: *"QGIS server providing various OGC services"*
  82. - [qgis-providers](qgis.org)
  83. - Kuvaus: *"collection of data providers to QGIS"*
  84. - [qgis-plugin-grass](qgis.org)
  85. - Kuvaus: *"GRASS plugin for QGIS"*
  86. - [gpsd](http://www.catb.org/gpsd/)
  87. - Kuvaus: *"The gpsd service daemon can monitor one or more GPS devices connected to a host computer, making all data on the location and movements of the sensors available to be queried on TCP port 2947."*
  88. ## Asennettavat binääritiedostot
  89. Moduuli asentaa seuraavat suoritettavat tiedostot Microsoft Windows - ja Linux Ubuntu 18.04 LTS -käyttöympäristöihin.
  90. ### Microsoft Windows
  91. LAStools - yhteensä 49 suoritettavaa tiedostoa. Osa on suljettua lähdekoodia, osa avointa.
  92. Nämä tiedostot asennetaan Salt minion-koneen järjestelmäpolkuun C:\lastools\
  93. - las2las
  94. - las2txt
  95. - lasdiff
  96. - lasindex
  97. - lasinfo
  98. - lasmerge
  99. - lasprecision
  100. - laszip
  101. - txt2las
  102. - blast2dem
  103. - blast2iso
  104. - bytecopy
  105. - bytediff
  106. - e572las
  107. - las2dem
  108. - las2iso
  109. - las2shp
  110. - las2tin
  111. - lasboundary
  112. - lascanopy
  113. - lasclassify
  114. - lasclip
  115. - lascolor
  116. - lascontrol
  117. - lascopy
  118. - lasduplicate
  119. - lasgrid
  120. - lasground
  121. - lasground_new
  122. - lasheight
  123. - laslayers
  124. - lasnoise
  125. - lasoptimize
  126. - lasoverage
  127. - lasoverlap
  128. - lasplanes
  129. - laspublish
  130. - lasreturn
  131. - lassort
  132. - lassplit
  133. - lasthin
  134. - lastile
  135. - lastool
  136. - lastrack
  137. - lasvalidate
  138. - lasview
  139. - lasvoxel
  140. - shp2las
  141. - sonarnoiseblaster
  142. - Lisäksi asennetaan suoritettava tiedosto gpx2shp.exe, myös polkuun C:\lastools\
  143. ### Linux Ubuntu 18.04 LTS
  144. LAStools - yhteensä 9 suoritettavaa tiedostoa. Kaikki ovat avointa lähdekoodia.
  145. Nämä tiedostot asennetaan Salt minion -koneen järjestelmäpolkuun /usr/local/bin/
  146. - las2las
  147. - las2txt
  148. - lasdiff
  149. - lasindex
  150. - lasinfo
  151. - lasmerge
  152. - lasprecision
  153. - laszip
  154. - txt2las
  155. -------------------
  156. ## Asennettavat konfiguraatiot
  157. Seuraavat muutostoimenpiteet on toteutettu Salt:n _file.managed_ -toiminnolla eli tiedoston korvauksella.
  158. ### Microsoft Windows
  159. - QGIS -konfiguraatio, joka kytkee QGIS-ohjelmasta automaattisesti päälle laserkeilausdatan prosessoinnissa tarvittavat LAStools -työkalut, jotka on asennettu järjestelmäkansioon C:\lastools\
  160. - QGIS käyttää Windowsissa käyttäjäkohtaisia rekisteriavaimia ohjelma-asetusten muutoksiin. Ohjelman kehittäjien maililistoja ja ohjelmarakennetta tutkimalla tulin johtopäätökseen, jossa ainoa ratkaisu konfiguroida LAStools päälle QGIS:stä automaattisesti ilman käyttäjän toimenpiteitä on tehdä muutokset ohjelman käyttämään [LidarToolsAlgorithmProvider.py](https://searchcode.com/file/115836660/python/plugins/processing/algs/lidar/LidarToolsAlgorithmProvider.py) -tiedostoon. Globaalia konfiguraatiotiedostoa (.conf, .ini tms.) ei ohjelmalle näytä olevan Windows-ympäristössä.
  161. ![lastool-pydiffs](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/lastool-py_diffs.png)
  162. *LidarToolsAlgorithmProvider.py -tiedostoon toteutetut muutokset oikealla*
  163. ### Linux Ubuntu 18.04 LTS
  164. - Sama QGIS-konfiguraatio kuin Windowsissa (kuvailtu ylhäällä)
  165. - Linux-ympäristössä QGIS kirjoittaa Windows-rekisterin sijaan asetustiedostot oletuksena tiedostoon $HOME/.config/QGIS/QGIS2.conf. Linux:ssa QGIS kirjoittaa myös tiedoston /etc/default/qgis, jota muuttamalla en saanut LAStools-työkaluja kytkettyä päälle. Päädyin yhteneväisyyden ja konfiguraation minimoimisen takia käyttämään samaa muokattua [LidarToolsAlgorithmProvider.py](https://searchcode.com/file/115836660/python/plugins/processing/algs/lidar/LidarToolsAlgorithmProvider.py) -tiedostoa myös Linux-ympäristössä
  166. -------------------
  167. ## Moduulin rakenne
  168. Moduuli sisältää seuraavat tiedostot saatavilla GitHub-varastosta [Fincer - salt_gisworkstation](https://github.com/Fincer/salt_gisworkstation).
  169. | Data | Kuvaus |
  170. |--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  171. | [saltscripts](https://github.com/Fincer/salt_gisworkstation/tree/master/saltscripts) | Alaskriptien pääkansio |
  172. | [saltscripts/1-setup-salt-env.sh](https://github.com/Fincer/salt_gisworkstation/blob/master/saltscripts/1-setup-salt-env.sh) | Alaskripti - esiasenna Salt Master & Salt Minion nykyiselle tietokoneelle |
  173. | [saltscripts/2-get-programs-on-master.sh](https://github.com/Fincer/salt_gisworkstation/blob/master/saltscripts/2-get-programs-on-master.sh) | Alaskripti - asenna ja lataa vaadittava ympäristö GIS-ohjelmien asentamiseen minion-tietokoneille |
  174. | [sample_images](https://github.com/Fincer/salt_gisworkstation/tree/master/sample_images) | Esimerkkikuvien pääkansio |
  175. | [sample_images/screen_ubuntu-final.png](https://github.com/Fincer/salt_gisworkstation/blob/master/sample_images/screen_ubuntu-final.png) | Esimerkkikuva - Salt:n tilan ajonjälkeinen tilanne Lubuntu 18.04 LTS -minion-tietokoneella |
  176. | [sample_images/screen_ubuntu-master-final.png](https://github.com/Fincer/salt_gisworkstation/blob/master/sample_images/screen_ubuntu-master-final.png) | Esimerkkikuva - Salt:n tilan ajonjälkeinen tilanne Lubuntu 18.04 LTS -master-tietokoneella |
  177. | [sample_images/screen_windows-final.png](https://github.com/Fincer/salt_gisworkstation/blob/master/sample_images/screen_windows-final.png) | Esimerkkikuva - Salt:n tilan ajonjälkeinen tilanne MS Windows 7 -minion-tietokoneella |
  178. | [sample_images/screen_windows-final-2.png](https://github.com/Fincer/salt_gisworkstation/blob/master/sample_images/screen_windows-final-2.png) | Esimerkkikuva - Salt:n tilan ajonjälkeinen tilanne MS Windows 7 -minion-tietokoneella |
  179. | [srv_pillar](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_pillar) | Pääkansio, josta tuotetaan Salt Master -tietokoneen järjestelmäkansio /srv/pillar |
  180. | [srv_pillar/top.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_pillar/top.sls) | Salt Master -tietokoneella sijaitsevan Salt:n pilarirakenteen päällimmäinen tilatiedosto |
  181. | [srv_pillar/stones.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_pillar/stones.sls) | Salt Master -tietokoneella sijaitsevan Salt:n pilarirakenteen sekundaarinen stones-tilatiedosto |
  182. | [srv_salt](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt) | Pääkansio, josta tuotetaan Salt Master -tietokoneen järjestelmäkansio /srv/salt |
  183. | [srv_salt/top.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/top.sls) | Salt Master -tietokoneella sijaitsevan Salt:n Master -palvelun päällimmäinen tilatiedosto |
  184. | [srv_salt/stone_file](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt/stone_file) | Salt Master -tietokoneelle tuotettava kansiopolku /srv/salt/stone_file (liittyy pilarin stones-tilaan) |
  185. | [srv_salt/stone_file/init.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/stone_file/init.sls) | Salt Master -tietokoneelle tuotettavan tilan /srv/salt/stone_file päällimmäinen tilatiedosto |
  186. | [srv_salt/stone_file/granite.txt](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/stone_file/granite.txt) | Salt Master -tietokoneelle tuotettavan Salt-tilan stone_file muottitiedosto minion-tietokoneille |
  187. | [srv_salt/gis_windows](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt/gis_windows) | Salt Master -tietokoneelle osoitettu Salt:n tilakansio gis_windows, jonka sisällä on määritelty MS Windows -Salt-minion -koneille kohdistetut muutokset |
  188. | [srv_salt/gis_windows/init.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/gis_windows/init.sls) | Salt:n kansion gis_windows päällimmäinen Salt-tilatiedosto |
  189. | [srv_salt/gis_ubuntu-1804](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt/gis_ubuntu-1804) | Salt Master -tietokoneelle osoitettu Salt:n tilakansio gis_ubuntu-1804, jonka sisällä on määritelty Ubuntu 18.04 LTS -Salt-minion -koneille kohdistetut muutokset |
  190. | [srv_salt/gis_ubuntu-1804/init.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/gis_ubuntu-1804/init.sls) | Salt:n kansion gis_ubuntu-1804 päällimmäinen Salt-tilatiedosto |
  191. | [srv_salt/common/qgis_lastools](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt/common/qgis_lastools) | Salt Master -tietokoneelle generoitava kansiopolku /srv/salt/common/qgis_lastools, jonka sisällä on määritelty [QGIS -ohjelmaa](https://qgis.org/) koskevat muutostiedostot minion-tietokoneille |
  192. | [srv_salt/common/qgis_lastools/LidarToolsAlgorithmProvider.py](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt/common/qgis_lastools/LidarToolsAlgorithmProvider.py) | Salt Minion -tietokoneille osoitettu, QGIS:n moduulia [LAStools](https://rapidlasso.com/lastools/) koskeva GPL-lisensoitu [Python-kooditiedosto](https://searchcode.com/file/115836660/python/plugins/processing/algs/lidar/LidarToolsAlgorithmProvider.py) |
  193. | [srv_salt_winrepo](https://github.com/Fincer/salt_gisworkstation/tree/master/srv_salt_winrepo) | Salt Master -tietokoneelle luotava kansiopolku /srv/salt/winrepo, johon tuotetaan MS Windows -ohjelmien asennuspakettien vaatimat Salt-tilatiedostot |
  194. | [srv_salt_winrepo/cloudcompare.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/cloudcompare.sls) | [CloudCompare -ohjelman](cloudcompare.org) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  195. | [srv_salt_winrepo/gpsd.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/gpsd.sls) | [GPSd -ohjelman](http://www.catb.org/gpsd/) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  196. | [srv_salt_winrepo/merkaartor.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/merkaartor.sls) | [Merkaartor -ohjelman](http://merkaartor.be/) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  197. | [srv_salt_winrepo/qgis.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/qgis.sls) | [QGIS -ohjelman](qgis.org) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  198. | [srv_salt_winrepo/quickroute-gps_x86.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/quickroute-gps_x86.sls) | [QuickRoute GPS -ohjelman (x86)](http://www.matstroeng.se/quickroute/en/) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  199. | [srv_salt_winrepo/vcrun2013.sls](https://github.com/Fincer/salt_gisworkstation/blob/master/srv_salt_winrepo/vcrun2013.sls) | [Visual Studio 2013 -ohjelman](https://www.microsoft.com/en-us/download/details.aspx?id=40784) asennusta koskeva Salt-tilatiedosto MS Windows -minion-tietokoneille |
  200. -------------------
  201. ## Moduulin ajo
  202. ### Ajoympäristö
  203. **Testikoneet:**
  204. Moduulia testattiin pääsääntöisesti Oracle VirtualBox:ssa seuraavilla asetuksilla:
  205. - 1x Linux Lubuntu 18.04 LTS Salt Master -tietokone
  206. - 1x Microsoft Windows 7 Salt Minion -tietokone
  207. - 1x Linux Lubuntu 18.04 LTS Salt Minion -tietokone
  208. **Verkkoasetukset:**
  209. Kaikki virtuaalitietokoneet oli kytketty julkiseen verkkoon (NAT) sekä keskenään samaan verkkoon (Internal Network, intnet). Julkinen verkko tarvittiin asennuspakettien latausta varten, yksityinen verkko taas Salt Masterin ja minioneiden keskinäiseen kommunikointiin.
  210. **Lähtötilanne:**
  211. ![vbox-initial-conf](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/0-initial-conf-vbox.png)
  212. **Minionit käsinsäätöä:**
  213. Moduulin huono puoli tällä hetkellä on, että se vaatii Salt Minion -koneiden käsin konfiguroinnin. Salt Minioneiden asennusta ei ole siis automatisoitu, mutta se olisi hyvinkin potentiaalinen kehityskohde.
  214. Ennen moduulin ajoa halusin varmistua, että kaikki _intnet_-verkossa olleet minion-tietokoneet näkevät masterin. Moduuli on tarkoitettu ajettavaksi ilman tätä varmistusta, mutta testin tarkoituksena oli varmistua yhteydestä luotettavasti, jotta GIS-ohjelmien sisäänajon voitiin varmistua onnistuneen "kylmiltään".
  215. Yhteyden testauksen ajaksi Salt Master -koneelle asennettiin Salt Master ja minion-tietokoneet konfiguroitiin myös kuntoon.
  216. ![minion-confs](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/0-minion-confs.png)
  217. *Moduulin tämän hetken huono puoli on, että Salt Minion -tietokoneet täytyy konfiguroida käsin ottamaan yhteys Salt Master -koneeseen. Salt Masterin IP-osoite sisäisessä verkossa intnet oli kuvassa näkyvä 10.13.13.105. Kuvassa ruutukaappaus Lubuntu- ja Windows -minion-tietokoneista*
  218. ![connectiontest](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/1-test-config.png)
  219. *Moduulin ajossa haluttiin olla 100% varmoja määriteltyjen Salt minion-tietokoneiden yhteydestä Salt Master -tietokoneeseen. Moduuli on rakennettu siten, että se hyppää sellaisten hyväksyttyjen koneiden (ID) yli, joihin se ei saa yhteyttä yrityksistä huolimatta. Koska koneita oli hyvin vähäinen määrä ja koska GIS-pakettien asennus haluttiin toteuttaa kylmiltään, haluttiin yhteydestä varmistua kuvassa näkyvällä toimenpiteellä. Testin jälkeen Salt Master -daemoni poistettiin Master-koneelta, koska moduulin mukana tuleva shell-skripti asentaa sen automaattisesti Master-koneelle*
  220. ### Moduulin ajovaiheet - ruutukaappaukset
  221. ![salt-readytogo](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/2-execute-script.png)
  222. *Yhteystestailun jälkeen oli aika laittaa moduuli laulamaan. Moduuli suoritetaan ajamalla halutulla Master-koneella kuvassa näkyvä komento 'sudo bash runme.sh' moduulin pääkansiossa*
  223. ![screen3](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-3.png)
  224. *Heti alussa moduulin shell-skripti tulostaa viestin, jossa käyttäjälle kerrotaan lyhyesti, mitä moduuli tekee. Samalla kysytään käyttäjän varmistusta jatkaa moduulin suoritusta*
  225. ![screen4](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-4.png)
  226. *Moduuli lataa uusimman Salt Masterin version SaltStackin pakettivarastoista. On ensisijaisen tärkeää varmistua, että Salt minioneiden ja masterin versio täsmäävät keskenään. Moduulin shell-skriptistä voidaan kytkeä SaltStackin varasto pois päältä.*
  227. ![screen8](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-8.png)
  228. *Moduuli tekee paikalliselle tietokoneelle oletuskonfiguraation Salt Minionille 'defaultMinion', minkä jälkeen moduuli tarkistaa saatavien minion-tietokoneiden olemassaolon ja hyväksyy koneet. Shell-skriptissä voidaan määritellä, että moduuli hyväksyy koneet joko automaattisesti tai käyttäjän erikseen hyväksyminä*
  229. *Koska moduuli joutuu latamaan hyvin paljon Windows-kohtaisia asennustiedostoja (~ 1 gigatavu), on moduuliin implementoitu erillinen tarkistus sille, onko Windows-koneita minion-koneiden joukossa*
  230. ![screen12](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-12.png)
  231. *Windows-koneiden tarkastuksen jälkeen päivitetään pakettivarastot LASTools:n ja CloudComparen lähdekoodista kasaamista varten. Ohjelmat on pakko kasata lähdekoodista, koska tutkimuksista huolimatta ajantasaisia ja saatavilla olevia pakettivarastoja ohjelmien binääreille ei ole. Ohjelmien kasaaminen lähdekoodista usean koneen tapauksessa on hyvin riskialtista, ja vaatisi ehdottomasti laajempaa testausta.*
  232. ![screen-17](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-17.png)
  233. *Salt Masterille täytyy asentaa aimo tukku paketteja, jotta minioneille kohdistettujen ohjelmien onnistunut asennus menisi onnistuneesti maaliin. Asennuksessa kestää jonkin aikaa.*
  234. ![screen-61](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-61.png)
  235. *CloudCompare on pakko kasata lähdekoodista .deb-paketiksi, mikäli se halutaan asentaa Ubuntu salt-minion -tietokoneille. Windowsille moduuli lataa ohjelmakehittäjän tarjoaman binäärin.*
  236. ![screen105](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-105.png)
  237. *CloudComparen kasaaminen lähdekoodista kestää arviolta noin 10 minuuttia, riippuen kasauksessa käytettävistä optimointiparametreista, saatavien prosessorien lukumäärästä jne. Moduuliin on implementoitu ominaisuus, joka tarkastaa, onko CloudCompare jo kasattu, jolloin ohjelman kasaus voidaan mahdollisesti ohittaa. Moduuli tekee kylläkin vielä lisätarkistuksen, mikäli pakettivarastoista saatavat kehittäjäpaketit on päivitetty ja kasaa ohjelman tarvittaessa uudelleen.*
  238. ![screen117](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-117.png)
  239. *Moduuli ottaa järjestyksessä yhteyden minion-tietokoneisiin CloudComparen kasauksen jälkeen, testaten yhteyden ja tarkistamalla minionin Salt-version. Tämän jälkeen moduuli käy järjestyksessä läpi kaikki hyväksytyt minion-tietokoneet, ilmoittaen minionilta saadut IP-tiedot, ID-tunnuksen sekä järjestysnumeron. Ajossa minionin grains- ja pillars-tiedot päivitetään sekä ajetaan moduulin määrittelemät Salt-tilat (myös pillar:t) sisään minionille*
  240. ![screen178](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-178.png)
  241. *Koska moduulin asentamien GIS-pakettien lataus- ja asennuskoko huitelee useissa sadoissa megatavuissa, havaittiin selkeitä ongelmia Salt masterin ja minion -koneen välisissä kutsuissa. Moduuliin on määritelty jo kasvatettu timeout-arvo, jotta Master ei katkaisisi yhteyttä minioneihin. Siitäkin huolimatta kuvassa näkyviä puutteita havaittiin yhteydenpidossa.*
  242. ![screen183](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-183.png)
  243. *Ratkaisuna yhteysongelmiin moduuliin voisi implementoida tuen seuraaville: 1) Salt Master tarjoaa paketit suoraan minioneille lokaalista varastosta, toimii eritoten lokaaleissa verkoissa (vähentää myös tilojen ajoaikaa, koska nyt ajasta merkittävä osa menee siihen, että minionit lataavat masterin määrittelemät paketit itsekseen) 2) Master ajaa minionien asennustoimenpiteet rinnakkain, ei peräkkäin (onko ongelmatonta?)*
  244. ![screen189](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-189.png)
  245. *Huolimatta edellä kuvatuista ongelmista, master kykeni ajamaan Salt-tilat sisään minionille*
  246. ![screen343](https://raw.githubusercontent.com/Fincer/central-management-of-multiple-servers/master/images/saltstack_module/screen-343.png)
  247. *Minion-tietokoneista Windows tuotti toistuvasti ns. false-positive -tuloksia Salt-tilojen sisäänajosta. Tilassa määritellyt neljä asennusohjelmaa palauttavat samaan aikaan retcode 2:n (virhe) sekä sanallisen viestin 'install_status: success'. Nämä ovat SaltStack:ssa ilmenneitä ongelmia olleet ilmeisesti jo vuosien ajan ja niitä on ajan saatossa korjattu, mutta näköjään kaikkia virhetilanteita ei ole saatu pois. Asiaa tutkittiin (NSIS -asennuspaketeista lähtien), mutta asiaa ei kyetty ratkaisemaan moduulin nykyiseen versioon.*
  248. *Moduuli ilmoittaa ajon lopussa, kuinka moneen Salt-minioniin tilojen sisäänajo onnistui, ja kuinka moneen epäonnistui. Lisäksi epäonnistuneiden minioneiden osalta moduuli ilmoittaa epäonnistuneen minionin ID:n ja saadut IP-osoitteet vikatilanteiden jatkoselvitystä varten.*
  249. -------------------
  250. ## Miltä näyttää minion-koneilla?
  251. Moduulin ajon jälkeen tilanne näyttää seuraavalta minion-koneilla:
  252. ### Microsoft Windows 7 - 64-bit
  253. ![winminion-programs](https://raw.githubusercontent.com/Fincer/salt_gisworkstation/master/sample_images/screen_windows-final.png)
  254. *Salt-moduulissa määritellyt ohjelmat on onnistuneesti asennettu sisään Windows-minion -tietokoneelle. Lisäksi Salt-pillar:ssa määritelty testitiedosto on oikealla sisällöllä ajettu onnistuneesti sisään*
  255. ![winminion-lastools](https://raw.githubusercontent.com/Fincer/salt_gisworkstation/master/sample_images/screen_windows-final-2.png)
  256. *Salt-moduulissa QGIS-ohjelmaan määritelty LAStools-työkalujen konfigurointi on onnistuneesti sisällä kaikille käyttäjille*
  257. ### Linux Lubuntu 18.04 LTS - 64-bit
  258. ![ubuntuminion-programs](https://raw.githubusercontent.com/Fincer/salt_gisworkstation/master/sample_images/screen_ubuntu-final.png)
  259. *Salt-moduulissa määritellyt ohjelmat onnistuneesti asennettuna Linux Lubuntu -minion-tietokoneen sisään. Lisäksi Salt-pillar:ssa määritelty testitiedosto on oikealla sisällöllä ajettu onnistuneesti sisään ja LAStools on onnistuneesti esikonfiguroitu QGIS-ohjelmaan*
  260. ![ubuntumaster-programs](https://raw.githubusercontent.com/Fincer/salt_gisworkstation/master/sample_images/screen_ubuntu-master-final.png)
  261. *Salt Masterilla on sama tilanne kuin ylhäällä Ubuntu minion-tietokoneella, koska master-koneelle oli määritelty myös oma minion-asennus, johon moduuli kohdisti toimenpiteitä*
  262. -------------------
  263. ## Huomioita moduulin ajosta
  264. ### Ajoaika
  265. Moduulin kylmiltä ajo kestää tällä hetkellä huomattavan kauan. Merkittävä osa ajasta menee seuraaviin asioihin:
  266. - asennuspakettien latausaika
  267. - suurimmat paketit ovat kooltaan useita satoja megatavuja. Esimerkiksi LASTools yli 300 mt.
  268. - Kaiken kaikkiaan asennettavia paketteja on noin 1,3 gigatavun edestä.
  269. - ratkaisu: lataa paketit Salt Masterille etukäteen, tiputa ne minioneille.
  270. - Tämä on jo osittain implementoitu. Mikäli moduuli on kertaalleen ajettu ja havaitsee asennuspaketit kansiossa compiled, ei moduuli lataa/kasaa paketteja enää uudelleen
  271. - Ongelma edelleen se, että minion-tietokoneet tekevät vaadittavien riippuvuuspakettien suhteen omat latauksensa (esim. QGIS)
  272. - asennuspakettien asennusaika
  273. - Asennuspakettikokonaisuudet ovat isoja ja vievät paljon prosessointiaikaa niin masterilta kuin minionilta. Masteria tämä tosin valtaosin koskee moduulin ensimmäistä ajokertaa. Minioneiden osalta Ubuntu-koneilla moduulin ajaminen toiseen kertaan on nopeampaa kuin Windows-minioneilla. Moduulin testauksen aikana näytti ilmeiseltä, että SaltStack tukee ja kykenee paremmin kontrolloimaan Linux-ympäristössä tapahtuvia asennuksia
  274. ### Ajon luotettavuus
  275. **Ohjelmien kasaus - CloudCompare**
  276. Merkittävin luotettavuuteen liittyvä ongelma on erityisesti CloudComparen kasausprosessi. Ohjelman kasaus on riippuvainen monesta kehittäjäpaketista, joten tietokoneympäristön fragmentoituminen on omiaan lisäämään riskiä siitä, että joillakin minioneilla asennus menee ajan saatossa siihen kuntoon, ettei ohjelma enää käynnisty (esimerkiksi puuttuvan kirjastoriippuvuuden takia). Ohjelman kasausta hallituissa ympäristöissä tulisi välttää viimeiseen saakka.
  277. CloudComparen merkittävin ongelma Linux-ympäristöissä on virallisten pakettilähteiden puute tai vanhentuneisuus. Esimerkiksi Ubuntulle löytyy CloudComparen PPA, mutta se on osoitettu Linux Ubuntu:n versiolle 16.04 LTS ja [toimittaa CloudComparesta version 2.6.0 vuodelta 2014](https://launchpad.net/~romain-janvier/+archive/ubuntu/cloudcompare), siinä missä uusin versio on edelleen kehityksessä oleva 2.10 Alpha.
  278. CloudCompare on merkittävä avoimen lähdekoodin ohjelma pistepilvien prosessointiin. Eräs vaihtoehtoinen, joskaan ei niin spesifisesti laserkeilausdatan käsittelyyn tarkoitettu ohjelma, on [MeshLab](http://www.meshlab.net/). MeshLab:sta moduulin kirjoittajalla on kokemusta, ja se ei tuotantoympäristössä ole riittävän vakaa ohjelma raskaiden datamassojen prosessointiin (siinä, missä CloudCompare on).
  279. **Ohjelmien kasaus - LAStools**
  280. LAStoolsia vaivaa sama ongelma kuin CloudComparea, mitä tulee joidenkin Linux-jakeluiden pakettivarastoihin. LAStools tuskin kuitenkaan hajoaa niin helposti kuin CloudCompare, koska vaaditut ulkopuoliset kehittäjäpakettiriippuvuudet on minimissään rajoittuen likipitäen _make_ -binäärin löytyvyyteen.
  281. **Salt-tilojen aikakatkaisu**
  282. Salt-tilojen ajon aikana havaittiin huolestuttavia viestejä yhteysongelmasta Salt Masterin ja minioneiden välillä. Ongelma liittyy isojen asennuspakettien lataukseen ja asennukseen, eikä tule juurikaan ilmi pienien järjestelmämuutoksien toteutuksessa tai pieniä asennuspaketteja asentaessa. *Tämä on ongelma, joka pitää ratkaista, mikäli moduuli otetaan laajemmassa tuotantoympäristössä käyttöön.*
  283. Aikakatkaisuun kehitysehdotuksia on lueteltu ylhäällä otsikon "Ajoaika" alla.
  284. -------------------
  285. ## Moduulin hyvät puolet
  286. - Asentaa GIS-ohjelmat Ubuntu- ja Windows -käyttöympäristöihin
  287. - Laajennettavissa helposti
  288. - Potentiaali: vähentää GIS-työasemien asennukseen kuluvaa aikaa
  289. - Jonkin verran kustomoitavissa (shell-skriptit mm.)
  290. ## Moduulin huonot puolet
  291. - Ajo kestää kauan
  292. - Mikäli kaikki paketit ladataan verkosta, kestää 3 minionin kuntoon laittaminen automatiikalla noin 1 tunnin.
  293. - Rajoittaa mm. moduulin skaalautuvuutta laajempiin ympäristöihin
  294. - Shell-skriptien luotettavuus
  295. - Edellyttäisi pidempiaikaista ja vaativampaa testausta
  296. - Bugit mahdollisia
  297. - Tuetut minion-ympäristöt hyvin rajoittuneet
  298. - Laajempi käyttöjärjestelmätuki vaadittaisiin
  299. - Testausympäristö oli moduulin ajossa rajoittunut
  300. - Edelleen, vaatisi ajan kanssa testausta laajemmassa ympäristössä
  301. - Koneet, joissa Salt masterin kanssa konfliktissa oleva minion-versio
  302. - Osittainen tuki tehty, mutta vielä olisi tehtävää
  303. -------------------
  304. ## Moduulin kehittämistarpeet
  305. Moduulissa on paljon kehittämistarpeita, joskin myös potentiaalia. Kriittisiin kohtiin olisi puututtava, mm.
  306. - ajoajan hitauteen
  307. - master- ja minion -tietokoneiden yhteyden luotettavuuteen
  308. - ohjelmien kasauksen minimointiin
  309. jne. Enemmän kehittämistarpeita on lueteltu ylhäällä otsikon "Moduulin huonot puolet" alla sekä shell-skriptissä '[runme.sh](https://github.com/Fincer/salt_gisworkstation/blob/master/runme.sh)' (alussa oleva TODO-lista).
  310. Lisäksi olisi hyvin tärkeää, että Salt Minion -konfiguraatiot tehdään SSH-yhteyden yli kohdekoneille. Tällä erää aika ei riittänyt tämän toiminnallisuuden toteuttamiseen, vaikkakin näkemys tämän toteuttamiseksi on kohtalaisen selkeä.