Palvelinten hallinta – Puppet package-file-service

Tehtävänanto:

h2. Asenna jokin palvelin package-file-server -tyyliin. Voit käyttää esimerkkikoodejani pohjana, mutta koita lisätä mukaan jotain omaa.
Bonus: Asenna Puppet herra-orja arkkitehtuuriin niin, että herra (puppetmaster) ja orja (aka agent, puppet) ovat samalla tietokoneella.
BonusBonus: kokeile Puppetia jossain toisessa käyttöjärjestelmässä, esimerkiksi Windowsissa.
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.

Apache moduuli

Päätin asentaa apache-webpalvelimen. Aloitin asentamalla Puttyn terminaalin komennolla $ sudo apt-get install puppet.
Teen harjoitusta live-tikulla, mutta tarkistan silti, että apachea ei ole asennettu.
Screenshot_2016-10-30_16-58-04.png
Tämän jälkeen navigoin kansioon $ cd /etc/puppet/modules/.

xubuntu@xubuntu:/etc/puppet/modules$ pwd
/etc/puppet/modules

Kyseiseen kansioon tein uuden kansion nimeltä “apache2” komennolla $ sudo mkdir apache2. Kyseisen kansion sisään tein toisen kansion nimeltä manifests: $ sudo mkdir manifests, johon tein sudoeditillä init.pp nimisen tekstitiedoston, joka tulee sitten sisältämään apachemoduulini.

Package

$ sudoedit init.pp
Tein moduuliin tässä vaijeessa vain package osion, jolla apachen asentumisen. Moduulin sisälle kirjoitin:

class apache2 {
        package { "apache2":
        ensure => "installed",
        allowcdrom => "true",
        }
}

Koska työskentelen livetikulla, lisäsin moduuliin myös “allowcdrom => “true”,“.
Seuraavaksi suoritin komennon $ sudo puppet apply -e ‘class {apache2:}’
Vastaukseksi sain:

Notice: Compiled catalog for xubuntu in environment production in 0.15 seconds
Notice: /Stage[main]/Apache2/Package[apache2]/ensure: ensure changed 'purged' to 'present'
Notice: Finished catalog run in 7.45 seconds

Katsotaan asentuiko apache oikein.
Screenshot_2016-10-30_17-04-33.png
Palvelin on asentunut oikein.
Seuraavaksi tein apache2 kansioon manifests:n ohelle uuden kansion nimeltä templates: $ sudo mkdir templates

xubuntu@xubuntu:/etc/puppet/modules/apache2$ ls
manifests  templates

File

Nyt lisätään moduuliin file-osio, joka muokkaa apachen oletussivua:
$ sudoedit init.pp

class apache2 {
        package { "apache2":
        ensure => "installed",
        allowcdrom => "true",
        }
        file { "/var/www/html/index.html":
        content => template("apache2/index.html),
        }
}

Seuraavaksi tein manuaalisesti templates kansioon nanolla index.html tiedoston, jonka sisälle kirjoitin perus html5 pohjan, jonka katsoin täältä: http://terokarvinen.com/2012/short-html5-page.
$ sudo nano index.html

<!doctype html>Testimoduuli

Markuksen moduuli

Let’s test UTF-8 with “päivää”
Sitten suoritetaan taas komento $ sudo puppet apply -e ‘class {apache2:}’

Vastaus:

Notice: Compiled catalog for xubuntu in environment production in 0.20 seconds
Notice: /Stage[main]/Apache2/File[/var/www/html/index.html]/content: content changed '{md5}9ad421244b28db9cb4a6857edd297ef5' to '{md5}5f10ceb6a7ff11b9fc4e97e74c29f2ab'
Notice: Finished catalog run in 0.04 seconds

Katsotaan, miltä oletussivu nyt näyttää:
Screenshot_2016-10-30_18-07-23.png
Eli template toimii oikein.

Service

Viimeiseksi lisäsin vielä service osion moduuliin.
$ sudoedit init.pp

class apache2 {
        package { "apache2":
        ensure => "installed",
        allowcdrom => "true",
        }
        file { "/var/www/html/index.html":
        content => template("apache2/index.html"),
        }
        service { "apache2":
        ensure => "running",
        enable => "true",
        }
}

Sitten taas komento: $ sudo puppet apply -e ‘class {apache2:}’, johon sain vastaukseksi:

Notice: Compiled catalog for xubuntu in environment production in 0.26 seconds
Notice: Finished catalog run in 0.04 seconds

Testasin vielä servicen toimivuutta sammutamalla palvelimen komennolla $ sudo service apache2 stop. Katsotaan, miltä localhost nyt näyttää:
Screenshot_2016-10-30_18-23-24.png
Nyt, jos ajan moduulini, sen pitäisi käynnistää www-palvelimeni uudelleen.
$ sudo puppet apply -e ‘class {apache2:}’

Notice: Compiled catalog for xubuntu in environment production in 0.27 seconds
Notice: /Stage[main]/Apache2/Service[apache2]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 1.20 seconds

Screenshot_2016-10-30_18-26-10.png
Toimii.
Tällä hetkellä tekemäni www-sivu ei siis toimi käyttäjän kotihakemistossa, vaan se vaatisi muutamia lisävaiheita.

Yhteenveto

Tässä harjoituksessa luotiin onnistuneesti Puppet-moduuli, joka asentaa Apache webpalvelimen, muuttaa Apachen oletussivun ja luo sille html-sisältöä sekä varmistaa, että palvelin on koko ajan toiminnassa.

Lähteet:

Harjoituksen ohjeet
URL: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016
HTML-pohja
http://terokarvinen.com/2012/short-html5-page
Vinkkejä ja lisäapua  Joona Leppälahden harjoitus 1 – raportista.
https://joonaleppalahti.wordpress.com/2016/10/24/palvelinten-hallinta-harjoitus-1/

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

Leave a Comment

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

Scroll to Top