Palvelinten hallinta – Linux-palvelimet kurssin koe Puppetilla

Tehtävänanto:

h6. Ratkaise osa jonkin Linux-kurssini arvioitavasta harjoituksesta. Pyri ratkaisemaan ainakin kaksi isompaa kohtaa.
Tehtävien ohje otettu: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016

Harjoituksessa käytetty laitteisto/ohjelmisto:

  • 16GB Kingston DataTraveler 100 G3 USB 3.0 muistitikku
  • Tietokone (Asus Z170-A, i7-6700K , 16GB DDR4 3200MHz, Evga 1070 sc)
  • Oheishärpäkkeet
  • Xubuntu 16.04.1 LTS

Alustavat valmistelut:

Seuraavat toimet suoritan aina, kun alan tekemään linux-harjoitusten eri osioita.
Boottasin Xubuntu-livetikulle valitsemalla USB-muistitikun käynnistyksen yhteydessä bootattavaksi levyksi.  Kun kysyttiin haluanko testata Xubuntua vaiko asentaa sen, valitsin vaihtoehdon “Try Xubuntu without installing“. Lyhyen latauksen päästä pääsin työpöydälle.
Yhdistin heti kotini langattomaan verkkoon työpöydän oikeasta yläkulmasta sekä muutin näppäimmistön layoutin suomiversioksi komennolla terminaalin komennolla “$ setxkbmap fi”.
Seuraavaksi syötin komennon “$ sudo apt-get update“. Kyseinen komento päivittää pakettivarastot, ja se kannattaa suorittaa aina ennen kuin hyödyntää paketinhallintaa mihinkään.

Tehtävän kuvaus

Päätin ratkaista osan syksyn 2016 Linux palvelimet – kurssin arvioitavasta laboratorioharjoituksesta. Kokonaisuuden ohjeet: http://terokarvinen.com/2016/arvioitava-laboratorioharjoitus-%E2%80%93-linux-palvelimet-ict4tn021-1-uusi-ops-alkusyksylla-2016

Käyriä

“Tilastoi eri resurssien (CPU, RAM…) kuormitus koko harjoituksen ajalta.”
Aloitin tekemällä moduulia varten tarvittavat kansiot ja asentamalla Puppetin.
$ sudo apt-get install puppet
Tämän jälkeen navigoin kansioon $ cd /etc/puppet/modules/. Kyseiseen kansioon tein uuden kansion nimeltä “asennus” komennolla:
$ sudo mkdir asennus
Kyseisen kansion sisään tein kansiot nimeltä templates ja manifests:
$ sudo mkdir templates
$ sudo mkdir manifests
Manifests kansioon tein sudoeditillä init.pp nimisen tekstitiedoston, joka tulee sitten sisältämään apachemoduulini.
$ sudoedit init.pp
Polku näyttää nyt siis tältä:

/etc/puppet/modules/asennus/manifest/init.pp

Kirjoitin moduulin package-osion, joka asentaa munin-paketit.

class asennus {
Package {ensure => "installed", allowcdrom => "true"}
 package { "munin":}
}

Suoritin Puppet moduulin komennolla
$ sudo puppet apply -e ‘class {asennus:}’
Asennuksen jälkeen menin hakemistoon /var/cache/munin/www/, jonka jälkeen  avasin firefoxilla muninin index.html-tiedoston.
$ firefox /var/cache/munin/www/index.html
Screenshot_2016-11-13_00-11-21.png
Kuten kuvasta näkee, Munin on asentunut oikein. Jätin sen taustalle keräämään dataa loppuharjoituksen ajan.

PHP:tä kaukomailta

“Asenna meille tarvittavat palvelut, jotta voimme tehdä PHP-sivuja etänä.”
Tässä siis tarvitaan vähintäänkin Apache ja Php. MySQL olisi kiva lisä täydentämään koko LAMP stackin, mutta en asenna sitä nyt tässä harjoituksessa.
Aloitin tekemällä moduuliini Apache-demonin asentaman pakettiosuuden sekä tekemällä tarvittavat muokkaukset käyttäjän kotihakemiston käyttöönottoa varten. Asensin Apachen samalla tavalla, kuin harjoituksessa 4. https://markuspyharanta.wordpress.com/2016/11/05/palvelinten-hallinta-harjoitus-4/

class asennus {
Package {ensure => "installed", allowcdrom => "true"}
 package { "munin":}
 package { "apache2":}
file { "/home/xubuntu/public_html/index.php":
 content => "It's working! Welcome user!\n",
 }
 file { "/etc/apache2/mods-enabled/userdir.conf":
 ensure => "link",
 target => "../mods-available/userdir.conf",
 notify => Service ["apache2"],
 }
file { "/etc/apache2/mods-enabled/userdir.load":
 ensure => "link",
 target => "../mods-available/userdir.load",
 notify => Service ["apache2"],
}
 service { "apache2":
 ensure => "true",
 enable => "true",
}
}

Moduulin lisäksi tein tarvittavat kansiot käyttäjän kotihakemistoon.
$ mkdir /home/xubuntu/public_html
Moduulin joutui ajamaan kahdesti, jotta käyttäjän kotihakemisto toimi.
$ sudo puppet apply -e ‘class {asennus:}’
Testataan toimiiko uusi sivu käyttäjän kotihakemistossa:
Screenshot_2016-11-13_00-18-51.png
Seuraavaksi siirryin Php-osuuteen. Katsoin apua aiemman kurssin harjoitus 3:sta. URL: https://markuspyharanta.wordpress.com/2016/10/10/harjoitus-3/
Lisäsin package-osioon asennettavat php-paketit eli libapache2-mod-php ja php

class asennus {
Package {ensure => "installed", allowcdrom => "true"}
 package { "munin":}
 package { "apache2":}
 package { "libapache2-mod-php":}
 package { "php":}

Lisäksi seuraavat filet:

file { "/var/www/html/index.html":
 content => "It's working!",
 }
 file { "/home/xubuntu/public_html/index.php":
 content => template ("asennus/index.php"),
 }
 file { "/etc/apache2/mods-available/php7.0.conf":
 content => template ("asennus/php7.0.conf"),
 notify => Service ["apache2"],
 }

Menin templates kansioon ja tein sudoeditillä tiedostot index.php ja php7.0.conf.
Index.php tiedostoon tein simppelin html pohjan Tero Karvisen ohjeiden mukaisesti:http://terokarvinen.com/2012/short-html5-page. Body tagien sisään tein yksinkertaisen php-koodin, joka tulostaa sivulle “Hello world in php”.
Php7.0.conf tiedoston sisälle kopion sijainnista /etc/apache2/mods-available/php7.0.conf alla olevan sisällön, josta vielä kommentoin ifmodulet pois. (#)
screenshot_2016-11-13_00-06-18
Lopuksi tein site.pp nimisen tiedoston sijaintiin /etc/puppet/.
Sisälle laitoin ainoastaan:

class {asennus:}

Ajoin taas moduulin uudelleen ja testasin toimiiko php-sivu käyttäjän kotihakemistossa:
Screenshot_2016-11-13_20-16-18.png

iot12tools

“Tee ja asenna meille “iot12tools” -niminen metapaketti, joka asentaa Internet of Things -kehitystyökalut: arduino IDE, gedit tekstieditori ja gedit-plugins, curl komentoriviltä toimiva selain ja Python3 -ohjelmointikieli.”
Lisäsin pakettien asennukset moduuliin seuraavasti:

class asennus {
Package {ensure => "installed", allowcdrom => "true"}
 package { "munin":}
 package { "apache2":}
 package { "libapache2-mod-php":}
 package { "php":}
 package { "arduino":}
 package { "gedit:}
 package { "gedit-plugins":}
 package { "curl":}
 package { "python3":}

Hello Python 3

“Jalmari haluaa tehdä Python 3 -kehitystä. Tee hänen kotihakemistoonsa Python 3 “hei maailma”.”
Jalmarin sijaan tein omaan kotihakemistooni tiedoston hello.py

file { "/home/xubuntu/hello.py":
 content => print '"Hei maailma!"',
 }

$ sudo puppet apply -e ‘class {asennus:}’
Testasin kotihakemistossa komennolla $ python hello.py
Lopputulos:

xubuntu@xubuntu:~$ python hello.py
Hei maailma!

Yhteenveto

Tein tässä harjoituksessa osan aikaisemman Linux palvelimet-kurssin arvioitavan laboratorioharjoituksen tehtävistä. Aloitin harjoituksen tekemällä Muninin asentaman moduulin, ja annoin kyseisen ohjelman pyöriä taustalla koko harjoituksen ajan. Seuraavaksi asensin LAMP stackin (-MySQL) PHP-sivujen tekoa varten. Laitoin samaisen moduulin myös asentamaan toivotut Internet of Things -kehitystyökalut. Kokeilin lopuksi tehdä myös yksinkertaisen “Hei maailma” esimerkin Pythonilla.
Koko asennus-moduuli kokonaisuudessaan:

class asennus {
 Package {ensure => "installed", allowcdrom => "true"}
 package { "munin":}
 package { "apache2":}
 package { "libapache2-mod-php":}
 package { "php":}
 package { "arduino":}
 package { "gedit":}
 package { "gedit-plugins":}
 package { "curl":}
 package { "python3":}
 file { "/var/www/html/index.html":
 content => "It's working!",
 }
 file { "/home/xubuntu/public_html/index.php":
 content => template ("asennus/index.php"),
 }
 file { "/etc/apache2/mods-enabled/userdir.conf":
 ensure => "link",
 target => "../mods-available/userdir.conf",
 notify => Service ["apache2"],
 }
 file { "/etc/apache2/mods-enabled/userdir.load":
 ensure => "link",
 target => "../mods-available/userdir.load",
 notify => Service ["apache2"],
 }
 file { "/etc/apache2/mods-available/php7.0.conf":
 content => template ("asennus/php7.0.conf"),
 notify => Service ["apache2"],
 }
 service { "apache2":
 ensure => "true",
 enable => "true",
 }
 file { "/home/xubuntu/hello.py":
 content => 'print "Hei maailma!"',
 }
}

Kaikki asennettuna:
Screenshot_2016-11-13_20-36-56.png

Lähteet:

Harjoituksen ohjeet
URL: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016
Arvioitavan laboratorioharjoituksen ohjeet
URL: http://terokarvinen.com/2016/arvioitava-laboratorioharjoitus-%E2%80%93-linux-palvelimet-ict4tn021-1-uusi-ops-alkusyksylla-2016
Apache moduuli
URL: https://markuspyharanta.wordpress.com/2016/11/05/palvelinten-hallinta-harjoitus-4/
Munin asennus
URL: https://markuspyharanta.wordpress.com/2016/10/10/harjoitus-7/
HTML-pohja
URL: http://terokarvinen.com/2012/short-html5-page
PHP
http://php.net/manual/en/tutorial.firstpage.php

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Markus Pyhäranta

1 thought on “Palvelinten hallinta – Linux-palvelimet kurssin koe Puppetilla”

  1. Pingback: Palvelinten hallinta – Harjoitus 8 – Markus Pyhäranta

Leave a Comment

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

Scroll to Top