Tehtävänanto:
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.
Hostnimen vaihtaminen
Aloitin harjoituksen vaihtamalla koneen hostnimen Tero Karvisen ohjeiden mukaisesti: http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04
$ sudo hostnamectl set-hostname markus
Tämän jälkeen lisäsin uuden nimen /etc/-kansion hosts-tiedostoon sudoeditillä.
$ sudoedit /etc/hosts
Kirjoitin uuden hostnimen xubuntun viereen tähän malliin ja tallensin:
Nimenvaihdon jälkeen tuli käynnistää avahi-demoni uudelleen.
$ sudo service avahi-daemon restart
Kokeilin pingata markus.localin:
$ ping markus.local
PING markus.local (192.168.1.15) 56(84) bytes of data. 64 bytes from 192.168.1.15: icmp_seq=1 ttl=64 time=0.027 ms 64 bytes from 192.168.1.15: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 192.168.1.15: icmp_seq=3 ttl=64 time=0.034 ms 64 bytes from 192.168.1.15: icmp_seq=4 ttl=64 time=0.034 ms 64 bytes from 192.168.1.15: icmp_seq=5 ttl=64 time=0.015 ms 64 bytes from 192.168.1.15: icmp_seq=6 ttl=64 time=0.014 ms ... --- markus.local ping statistics --- 43 packets transmitted, 43 received, 0% packet loss, time 42000ms rtt min/avg/max/mdev = 0.011/0.030/0.039/0.008 ms
Uusi hostnimi näyttäisi pingauksen perusteella toimivan.
PuppetMasterin asennus
Seuraavaksi asensin Puppetin ja PuppetMasterin komennoilla:
$ sudo apt-get install puppet
$ sudo apt-get install puppetmaster
Herran ja orjan konfigurointi
Koska teen harjoitusta yhdellä tietokoneella, asensin herran ja orjan samalle koneelle. Sammutin puppetmasterin komennolla $ sudo service puppetmaster stop, jonka jälkeen poistin sertifikaatit:
$ sudo rm -r /var/lib/puppet/ssl
Nyt vanhemmat mahdolliset ssl-avaimet pitäisi olla poistettu.
Tämän jälkeen muokkasin sudoeditillä puppet.conf tiedostoa sijainnissa /etc/puppet/puppet.conf.
$ sudoedit /etc/puppet/puppet.conf
Laitoin herran master-tagin alle ja orjalle tein agent-tagin.
[master] dns_alt_names = markus.local, markus [agent] server = markus.local
Eli conf-file näyttää nyt kokonaisuudessaan tältä:
Tallensin muutokset ja käynnistin puppetmasterin uudelleen komennolla:
$ sudo service puppetmaster start
Tämän jälkeen määräsin puppet orjani toimimaan herran alaisuudessa ja käynnistin puppetin uudelleen:
$ sudo puppet agent –enable (kaksi väliviivaa)
$ sudo service puppet restart
Sertifikaatit
Hain sertifikaatin komennolla $ sudo puppet cert –list (kaksi väliviivaa)
Kyseinen komento ei kuitenkaan tulostanut yhtään mitään, joten yritin poistaa sertifikaatit uudelleen komennolla $ sudo rm -r /var/lib/puppet/ssl.
Kokeilin uudelleen hakea sertifikaatin
$ sudo puppet cert –list (kaksi väliviivaa)
johon sain vastaukseksi:
Notice: Signed certificate request for ca
Mkay… En tiedä onnistuiko asia toivotusti. Luulin, että tässä pitäisi saada, jokin tarkempi tuloste, joka sitten hyväksytään sudo puppet cert — sign – komennolla.
Kokeilin käynnistää puppetin uudelleen, jonka jälkeen kokeilin uudestaan sertin listausta.
$ sudo service puppet restart
$ sudo puppet cert –list (kaksi väliviivaa)
Nyt sain vastaukseksi:
"markus" (SHA256) "avaimen pitkä rimpsu"
Hyväksytään sertifikaatti:
$ sudo puppet cert –sign markus (kaksi väliviivaa)
Vastaukseksi sain:
Notice: Signed certificate request for markus Notice: Removing file Puppet::SSL::CertificateRequest markus at '/var/lib/puppet/ssl/ca/requests/markus.pem'
Oletan, että se toimi oikein?
Moduuli
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.
Eli siis /etc/puppet/modules/apache2/manifests/init.pp
Init.pp sisälle tein simppelin apachen asentavan moduulin:
class apache2 { package {apache2: ensure => "installed", allowcdrom => "true", } file {"/var/www/html/index.html": content => "markuksen apachetesti" } }
Lopuksi tein vielä site.pp tiedoston sijaintiin /etc/puppet/modules/apache2/manifests komennolla $ sudoedit site.pp.
Tiedoston sisään ei tullut muuta kuin:
include apache2
Moduuli on valmis, joten testataan seuraavaksi koko kokonaisuuden toimivuutta.
Ajoin komennon $ sudo service puppet restart
Ja sitten $ sudo puppet agent –test (kaksi väliviivaa)
Vastaukseksi sain:
Warning: Unable to fetch my node definition, but the agent run will continue: Warning: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Info: Retrieving pluginfacts Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://markus.local/pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Info: Retrieving plugin Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://markus.local/plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus] Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run Error: Could not send report: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: markus]
Huoh. Ainakin sertifikaatti kusee.
Pengoin toisten opiskelijoiden raportteja ja testasin Jarkko Kosken raportista (https://jarkkokoski.wordpress.com/palvelinlinux-3/) seuraavaa:
$ sudo puppet agent –test –debug (kaksi väliviivaa)
Komennosta seurasi seuraava näkymä:
Koko lista ei kuvaan mahtunut, mutta monta erroria löytyy seasta.
Pysäytin puppetin ja puppetmasterin, jonka jälkeen poistin taas kaikki sertifikaatit. Sitten käynnistin puppetit uudelleen.
$ sudo service puppet stop
$ sudo service puppetmaster stop
$ sudo rm -r /var/lib/puppet/ssl
$ sudo service puppetmaster start
$ sudo service puppet start
Yllä mainittujen komentojen jälkeen kokeilin uudestaan debug-komentoa:
$ sudo puppet agent –test –debug
Nyt ei tullut yhtään erroreita:
Kokeilin nyt komentoa $ sudo puppet agent –test
Vastaukseksi sain:
Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for markus Info: Applying configuration version '1478118886' Notice: Finished catalog run in 0.01 seconds
Kokeilin avata localhostin selaimessa, mutta se ei toiminut.
Huomasin tässä vaiheessa, että moduulissani oli syntaksivirhe file-kohdassa. Testaan nyt, että toimiiko moduuli ylipäätänsä.
$ sudo puppet apply -e ‘class {apache2:}’
Notice: Finished catalog run in 7.08 seconds
Moduuli ainakin asentaa apachen, mutta en nyt tiedä onko herra ja orja edes konfiguroitu oikein. Sertifikaatit eivät varmasti toimi. En oikein tiedä, mistä jatkaa tässä vaiheessa. Kello alkaa olemaan melko paljon, joten menen nukkumaan.
Yhteenveto
Haastava tehtävä. Aluksi harjoitus tuntui menevän ihan hyvin, mutta sertifikaatti kohta tuotti ongelmia, ja siitä lähtien harjoitus kulki aikalailla alamäkeä.
Lähteet:
Harjoituksen ohjeet
URL: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016
PuppetMaster
http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04
Katsoin myös Jooel Nurmen ja Jarkko Kosken raporteista hieman ohjausta. En ollut maanantaina tunnilla, ja viime torstai tunnilla asia käytiin turhan nopeasti läpi.
https://jooelnurmi.wordpress.com/2016/11/01/h3-palvelinten-hallinta/
https://jarkkokoski.wordpress.com/palvelinlinux-3/
Bonus: vaihda oletustaustakuva. Kannattaa päällekirjoittaa tiedosto ja käyttää file-resurssia.
Bonus & kilpailu: kuka kurssilainen onnistuu hallitsemaan suurinta määrää orjia puppetilla? Raportoi.