Palvelinten hallinta tehtävä 1

a) Kaksi resurssia. Tee ja testaa moduli, joka käyttää ainakin kahta eri resurssia (esim. file ja package).

Aivan ensiksi hain päivitykset:

$ sudo apt-get update

Olen aiemmin asentanut puppetin, mutta, jos se ei olisi ollut asennettuna, olisin asentanut sen

$ sudo apt-get install puppet

Moduulin luonti, joka käyttää kahta eri resurssia, file ja package

Ensin loin tarvittavat hakemistot:

$ cd /etc/puppet/modules

$ sudo mkdir h1a

$ cd h1a

$ sudo mkdir manifests

Loin modulin

$ sudoedit init.pp

classh1a

Tallensin tiedoston ctrl + x, y ja enter

Ajoin sen:

$ sudo puppet apply -e ‘class {h1a:}’

Tulostui seuraavat virheilmoitukset:

Error: Syntax error at ‘Kirjoitusta’; expected ‘}’ at /etc/puppet/modules/h1a/manifests/init.pp:4 on node teppo-vaio.bb.dnainternet.fi

Error: Syntax error at ‘Kirjoitusta’; expected ‘}’ at /etc/puppet/modules/h1a/manifests/init.pp:4 on node teppo-vaio.bb.dnainternet.fi

Notice: Compiled catalog for teppo-vaio.bb.dnainternet.fi in environment production in 0.69 seconds

Virhe tulostui koska riviltä file {“/home/teppo/harjoitus1a”: puuttui lainausmerkki ennen kaksoispistettä. HUOM! kuvakaappaus on korjatusta tilanteesta. Lisäsin lainausmerkin.

Ajoin modulin uudestaan

$ sudo puppet apply -e ‘class {h1a:}’

Nyt modulin ajo onnistuu virheittä.

Notice: /Stage[main]/H1a/File[/home/teppo/harjoitus1a]/ensure: defined content as ‘{md5}3568c5f3103ee1fde8dbb2fc26b492c3’

Notice: /Stage[main]/H1a/Package[conky]/ensure: ensure changed ‘purged’ to ‘present’

Notice: Finished catalog run in 6.97 seconds

Testasin onko moduli luonut tiedoston harjoitus1a.

Siirryin kotihakemistoon

$ cd

Listasin hakemiston tiedostot ja hakemistot

$ ls

puppet2

Kuvasta voi todeta, että tiedosto harjoitus1a on luotu

Tulostin tekstiedoston harjoitus1a

$ cat harjoitus1a

puppet3

Voidaan todeta, että moduli on luonut tiedoston harjoitus1a sisältöineen onnistuneesti.

Testasin onko moduli asentanut  paketin conky

$ conky

puppet4

conky

Testin perusteella moduli asensi conkyn onnistuneesti.

b) Analyyttinen ja vertaileva kirjoitus

 

Puppet vs. Salt

Tehtävänä oli vierailla IT PRO –messuilla ja kirjoittaa analyyttinen ja vertaileva arvio jostain messuilla esillä olleesta tuotteesta tai yrityksestä tai messuilla pidetystä esityksestä.

Vierailin messuilla ja kierrettyäni näyttelyosaston kahteen kertaan ympäri ja vierailtuani useilla eri osastoilla tulin siihen tulokseen, että messuilla ei ole kurssin aiheeseen palvelinten hallinta suoraan liittyvää aihetta. Katsoin, että itseäni hyödyttää enemmän vaihtoehtoinen tehtävä ja kirjoitin kahden eri videon perusteella Puppetista ja Saltista.

Sekä Puppet että Salt ovat molemmat konfiguraation hallinta työkaluja (configuration management tools). Seuraavassa on lyhyt esittely molemmista ja lopuksi on lyhyt yhteenveto asiasta.

Puppet

Katsoin Puppetista videon What is puppet. Se löytyy osoitteesta https://www.youtube.com/watch?v=PL_J5Gj3GAQ

Puppetia käytetään useiden koneiden tai palvelimien käyttöönottoon, konfiguroimiseen ja ylläpitoon. Se käyttää master-slave arkkitehtuuria, jossa yksi master voi hallita erittäin suurta määrää koneita tai servereitä (slaves)

Master pitää sisällään kaikki konfiguraatiot. Slavet ”vetävät” konfiguraatiot masterilta. Kone (slave) lähettää masterille dataa itsestään (facts) ja master vertaa saamaansa tietoa katalogiin, josta selviää, miten kone tulee konfikuroida. Master suorittaa konfiguroinnin ja kone lähettää lopuksi masterille raportin, josta ilmenee, onko konfigurointi onnistunut.

Masterin ja orjien (slaves) välinen tietoliikenne on ssl salattua.

Puppet ohjelmia kutsutaan manifesteiksi ja niiden pääte on .pp. Ne sijaitsevat modulien sisällä. Ubuntu perheen käyttöjärjestelmistä moduulit löytyvät hakemistosta /etc/puppet/modules/. Moduleja käytetään organisoimaan puppet koodia, koska ne mahdollistavat koodin jakamisen useisiin osiin (manifesteihin). Manifestit sisältävät class-moduleja, jotka voivat puolestaan sisältää yhdestä rajattomaan määrään resursseja.

Saltstack

Katsoin Saltista Peter Baumgartnerin esityksen, joka löytyy osoitteesta https://www.youtube.com/watch?v=mXjLhFUruzA

Salt käyttää pythonia, YAML:ia ja Jinja2:ta. Salt on nuori projekti ja se kehittyy koko ajan nopeasti. Se ei käytä SSH:ta, mutta se on tulossa ja videon tekohetkellä se oli ”alfa” –vaiheessa. Salt käyttää jatkuvan yhteydenpidon menetelmää (always on communication bus) servereiden välillä. SSH ei sovellu tähän riittävän hyvin ja siksi se ei ole vielä käytössä.

Master-palvelin hallitsee kaikkia ”alaisiaan”, joita kutsutaan minioneiksi. Master sisältää state-paketteja, joiden pääte on .sls. Nämä paketit pitävät sisällään tiedot, miten minionit konfiguroidaan. Lisäksi master pitää sisällään pilareita, jotka ovat muuttujia yhdelle tai useammalle minionille.

Sekä state-paketeista että pilareista tehdään top-filet. Ne yhdistetään minionien tietojen kanssa pythonilla ja näin saadaan highstate, jonka avulla konfiguraatiot siirretään minioneille joko ”työntämällä” ne masterista käsin tai ”vetämällä” ne minioneista käsin.

.sls –tiedostot löytyvät hakemistosta /srv/salt/. Salt pitää sisällään yli 50 valmista sisään rakennettua statea.

Yhteenveto

Katsomieni videoiden perusteella voi todeta, että sekä puppet että salt on suunniteltu hallitsemaan etänä suurta määrää koneita. Niiden käyttötarkoitus on sama, mutta siihen yhtäläisyydet oikeastaan jäävätkin.

Puppet vaikuttaa yksinkertaisemmalta ja selkeä rakenteisemmalta. Tämä saattaa osin johtua siitä, että sitä on alettu käsitellä kurssilla, ja salt on minulle täysin vieras.

Salt ei aivan avautunut minulle katsomani videon perusteella ja oman mystisyyden verhon saltin toimintaan toi se, että yhdistettäessä stateista koostuva top file, pillareista koostuva top file ja grains cache (minionien tiedot) highstateksi videolla käytettiin termiä taikuus, joka tarkoitti pythonia.

c) Vapaaehtoinen: Tärkeimmät resurssit. Tee moduleja, jotka käyttävät resursseja package, file, service, user, exec.

Tein kolme modulia. Moduli 1 käytti resurssia file, moduli 2 käytti resursseja user ja package ja moduli 3 käytti resursseja service ja exec.

Moduli 1

Siirryin modules -hakemistoon ja loin tarvittavat hakemistot moduli 1:stä varten.

$ cd /etc/puppet/modules/
$ sudo mkdir h1cm1

$ cd h1cm1
$ sudo mkdir manifests
$ cd manifests

Loin modulin 1 (h1cm1), joka asentaa tiedoston ‘moduli1’ ja hakemiston hakemisto_modul1.

$ sudoedit init.pp

classh1cm1

Tallensin modulin

Ajoin modulin

$ sudo puppet apply -e ‘class {h1cm1:}’

modul1

Modulin ajo onnistui ilman virheilmoituksia

Testasin asentuiko tiedosto ja hakemisto onnnistuneesti

$ cd
$ ls

modul1_2

Kuvasta voidaan todeta, että hakemisto hakemisto_modul1 ja tiedosto moduli1 ovat asentuneet onnistuneesti

Testasin onko tiedoston moduli1:ssä sisältöä:

$ cat moduli1

modul1_3

Testin perusteella moduli 1 asensi hakemiston ja tiedoston sisältöineen onnistuneesti.

Moduli 2

Siirryin modules -hakemistoon ja loin tarvittavat hakemistot moduli 2:ta varten.

$ cd /etc/puppet/modules/
$ sudo mkdir h1cm2

$ cd h1cm2
$ sudo mkdir manifests
$ cd manifests

Loin modulin 2 (h1cm2), joka asentaa käyttäjän modul2 ja paketit gimp ja vlc

$ sudoedit init.pp

classh1cm2

Tallensin modulin ctrl+x, y ja enter

Ajoin modulin

$ sudo puppet apply -e ‘class {h1cm2:}’

modul2

Modulin ajo onnistui ilman virheilmoituksia.

Testasin luotiinko käyttäjä modul2.

Annoin komennon:

$ puppet resource user modul2

Vastaus:

user

Voidaan todeta, että käyttäjä modul2 on luotu onnistuneesti

Testasin asentuivatko paketit gimp ja vlc onnistuneesti

Testasin asentuiko gimp onnistuneesti ja annoin komennon

$ gimp

gimp

Voidaan todeta, että gimp asentui onnistuneesti

Testasin asentuiko vlc onnistuneesti ja annoin komennon

$ vlc

vlc

Voidaan todeta, että vlc asentui onnistuneesti

Moduli 3

Siirryin modules -hakemistoon ja loin tarvittavat hakemistot moduli 3:a varten.

$ cd /etc/puppet/modules/
$ sudo mkdir h1cm3

$ cd h1cm3
$ sudo mkdir manifests
$ cd manifests

Loin modulin 3 (h1cm3), joka käynnistää pysäytetyn apache2 -palvelimen uudestaan ja asentaa komennolla mkdir uuden hakemiston.

$ sudoedit init.pp

classh1cm3

Koneelle on aiemmin asennettu apache2. Pysäytin sen, jotta pystyin varmistamaan modulin toiminnan.

Apache2:den pysäytys:

$ sudo service apache2 stop

Ajetaan moduli

$ sudo puppet apply -e ‘class {h1cm3:}

modul3

Modulin ajo onnistui ilman virheilmoituksia. Yllä olevasta kuvasta voidaan todeta, että pysäytetty apache2 käynnistyi uudelleen.

Testasin apache2:den toiminnan kirjoittamalla firefox -selaimen osoitekenttään localhost/~teppo

apache2

Voidaan todeta, että apache2 -palvelin on käynnissä.

Testasin asensiko moduli resurssilla exec uuden hakemiston modul3 hakemistoon /tmp/

Annoin komennot

$ cd /tmp
$ ls

tmp

Voidaan todeta, että moduli on luonut hakemistoon /tmp hakemiston modul3

 

Lähteet:

Harjoitus a on tehty oppitunneilla opetetun perusteella.

Harjoituksen c tekemiseen on lähteenä käytetty Puppet Cookbookia, osoite https://www.puppetcookbook.com

 

Advertisements