Vertaisarviointi

Teen erillisen vertaisarvioinnin kurssitovereideni moduuleista, sillä en työn takia ehdi tekemään sitä 17.5 Keskiviikkona kokeen jälkeen.

Valitsin kolme moduulia, mitä testaan sekä kommentoin

1) Lauri Miettinen -Videoeditointi ja nauhoitus moduuli

Ensimmäisenä testausvuorossa oli Laurin oma moduuli.

https://laurimiettinen1.wordpress.com/2017/05/16/lopputyon-raportti/

Moduulin tarkoituksena on helpottaa omien YouTube, Vimeo videoiden aloittamista, koska on aikaa vievää aloittaa ensin etsimään ohjelmat. Kun olin päättänyt lopputyön aiheen, aloitin selvittämään mitkä nauhoitus ja videoeditointiohjelmat ovat Xubuntu 16.04 64 bittiselle jakelulle tällä hetkellä parhaimmat. -Lauri

Testasin moduulia kloonaamalla hänen moduulinsa GitHubista:

https://github.com/LM42/video-editor-module

Ajoin puppet moduulin omalla terminaalillani. Tulos oli seuraava:

Notice: Compiled catalog for xubuntu.dhcp.inet.fi in environment production in 0.17 seconds
Notice: /Stage[main]/Test1/Package[blender]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test1/Package[guvcview]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test1/Package[openshot]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test1/Package[kazam]/ensure: ensure changed 'purged' to 'present'
Notice: Finished catalog run in 34.58 seconds

Moduuli siis toimii ainakin, Guvcview ei suostunut avautumaan minulla ( No video device was found )

Kaiken kaikkiaan moduuli on OK. Se tekee mitä sen on luotu tekemään, Cuvcview hiukan hankasi mutta muut kolme ohjelmaa toimivat.  Olisin ehkä toivonut hiukan enemmän moduulilta kuin vain pakettien asennuksen.

2) Ilari Huura – Musamoduuli

Seuraavaksi testasin Ilarin moduulia:

Tämän moduulin tarkoitus on asentaa käyttäjälle ilmaisia musiikin nauhoitus ja editointi ohjelmistoja. Näiden sovellusten avulla aloitteleva köyhä muusikko voi opetella kuinka musiiki nauhoitus ja editointi toimii. Moduuliin kuuluu seuraavat sovellukset: Lmms, Audacity, Guitarix jne. -Ilari

GitHubista löytyi toisaalta kylläkin tarvittava Puppet koodi, joten kopioidaanpas se omalle koneelle ja testataan:

https://github.com/PEELO1994/PEELO/blob/master/puppet/modules/musamoduuli/manifests/init.pp

Notice: /Stage[main]/Test2/Package[audacity]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test2/Package[guitarix]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test2/Package[lmms]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Test2/Exec[moi2]/returns: executed successfully
Notice: /Stage[main]/Test2/Exec[moi4]/returns: executed successfully
Notice: /Stage[main]/Test2/Exec[moi3]/returns: executed successfully
Notice: Finished catalog run in 31.81 seconds

Moduuli siis toimii myös, ainakin asennuksen perusteella. Guitarix ohjelma toisaalta ei avautunut itsellä, vaikka Puppet koodissa oli määritelty että se aukeaisi itsestään. Vaikea sanoa toisaalta johtuuko ongelmat siitä että koneeni ei ole tehty musantekoa varten. (Guitarix esimerkiksi herjasi kun jack ei ole kytketty kiinni)

3) Yaël Kermorvant – Java & Eclipse + apache config

Kolmantena testasin Yaëlin moduulia, joka oli suunniteltu lähinnä ohjelmistotuotannon opiskelijoille.

https://ykermorvant.wordpress.com/2017/05/12/own-puppet-module-documentation/

Everyone in the class had to reserve a puppet module that could do something useful, for example I chose to create a module that could help our school’s programming students, by installing Java, IntelliJ/Eclipse, localhost (apache2) and to do the right configuration.   -Yaël

Myös Yaëlin moduuli löytyi GitHubista

https://github.com/a1600567/mymodule.git

Huomasin, että Yaëlin moduulissa on autorun skripti, jolla kaikki sujuu yhdellä komennolla.

Kopioidaan siis ensiksi koko Git repositoryyn ja mennään moduulikansioon

start.sh scriptille ei oltu laitettu execute oikeuksia, korjataan asia.

sudo chmod +x start.sh

Nyt ajetaan skripti, ja katsotaan mitä tapahtuu

./start.sh
Notice: /Stage[main]/Asennusmoduuli/Package[openjdk-8-jre]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Asennusmoduuli/Package[eclipse]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Asennusmoduuli/Exec[OpenEclipse]/returns: executed successfully
Notice: /Stage[main]/Asennusmoduuli/Package[apache2]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Asennusmoduuli/File[/var/www/html/index.html]/content: content changed '{md5}9ad421244b28db9cb4a6857edd297ef5' to '{md5}08c5836bd6a7c3f795c4e8b13c3ca977'
Notice: Finished catalog run in 66.61 seconds

Ja noin! Sekin moduuli toimii! Siinä meni suhteellisen kauan, mutta ymmärrettävää kuin näin moni asia tungettu moduuliin.

Kaiken kaikkiaan erittäin näppärä moduuli, mille on tilaa kehitykselle! Plussaa varsinkin siitä että moduuli suoriutui ilman virheitä.

Advertisements

H5 – Moduuli harjoitus

Kurssin lähde:

http://terokarvinen.com/2017/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-2-%e2%80%93-5-op-uusi-ops-loppukevat-2017-p2

GitHub lähde:

https://github.com/leksenderi/Digimoduuli

Tehtävänanto:

Tehtävänämme oli keksiä oma moduuli, mikä tekisi tarvittavat vaatimukset. Moodulille piti määritellä seuraavat vastaukset:

  1.  Kenelle moduuli on tarkoitettu?
  2.  Mitä moduuli tekee?

Alustava ajatus moduulille oli seuraava (löytyy Tero Karvisen sivun kommenteista):

Digimedian opiskelijoille tarkoitettu moduulipaketti, joka asentaa Brackets koodi editorin, Bootstrap Frameworkin sekä Blenderin ja konfiguroi apachella localhost alustan, mikä on valmis koodattavaksi

Haastateltuani digipalvelun opiskelijoita sain selville, että Front-End puolessa on käytetty pääasiassa Brackets -editoria, jossa on Bootstrap ja Javascript/JQuery toimivuus.

Lopullinen moduulin idea:

Digimedian opiskelijoille tarkoitettu moduuli, joka asentaa Brackets koodieditorin sekä Apachen, konfiguroi Bracketsin toimimaan Bootstrapin ja JQuery kirjastojen kanssa, konfiguroi localhostin valmiiksi koodattavaksi, ja avaa lopuksi Bracketsin ja localhost sivun.

Moduulin työstäminen:

Päätin aloittaa ensimmäiseksi tekemällä moduulin, mikä asentaisi Bracketsin.

Asensin Puppetin ja onnistuneen hello world moduulitestin jälkeen tein Bracketsin asennukselle moduulin.

sudo apt-get install -y puppet
/etc/puppet/modules/pakettimoduuli/manifests/init.pp

Init.pp tiedostoon konfiguroin Bracketsin asennuksen

class pakettimoduuli {

        package { brackets:
                ensure => 'installed',
                allowcdrom => 'true',
        }
}

Juoksin Puppet moduulin

sudo puppet apply -e 'class {pakettimoduuli:}'

Sain seuraavan errorin:

E: Unable to locate package brackets

Bracketsia ei löydy tuolla nimellä, tai sitten sitä ei pystynyt apt-get installilla asentaa koneelle.

Netistä etsimällä “how to install brackets on linux” pääsin seuraavalle sivulle:

https://itsfoss.com/install-brackets-ubuntu/

Sain selville että Bracketsin asennukseen tarvittiin oma repositorio, josta löytyi bracketsin asennustiedostot. Asennus onnistui kirjoittamalla seuraavat asiat terminaaliin:

sudo add-apt-repository ppa:webupd8team/brackets 
sudo apt-get update 
sudo apt-get install brackets

Tässä vaiheessa loin itselleni Shell skriptin nimeltä startup.sh, mikä hoitaisi nämä alustavat asiat ennen Puppet moduulin ajoa.

Olin tehnyt työpöydälle Digimoduuli nimisen kansion, minne tein uuden finaldigi/manifests/init.pp polun sekä startup.sh skriptitiedoston.

/etc/puppet kansio oli purgettu ja poistettu ennen skriptin uudelleen ajoa .

Shell skriptiin laitoin seuraavat asiat:

#!/bin/bash
sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install -y puppet
sudo cp -r ./finaldigi /etc/puppet/modules
sudo puppet apply -e 'class {pakettimoduuli:}'

Annoin skriptille vielä Execute oikeudet ja ajoin sen

sudo chmod +x startup.sh
./startup.sh

Erroria sieltä pukkasi:

Error: Puppet::Parser::AST::Resource failed with error 
ArgumentError: Could not find declared class pakettimoduuli
at line 1 on node xubuntu.tielab.haaga-helia.fi

Kyseinen Error korjaantui, kun laitoin kohdepolkuun pakettimoduuli vielä tarkennukseksi että minne tiedostot ja kansiot kopioidaan.

Alla oleva komento siis kopioi skriptin juurihakemistosta tuon finaldigi kansion ja siirtää sen manifesteineen puppetin omaan modules kansioon nimellä pakettimoduuli

sudo cp -r ./finaldigi /etc/puppet/modules/pakettimoduuli

Ja kokeilin uudestaan moduulia. Seuraavaksi tulos oli seuraava:

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::
Options::=--force-confold install brackets' returned 100: 
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package brackets
Error: /Stage[main]/Pakettimoduuli/Package[brackets]/ensure: 
change from purged to present failed: Execution of 
'/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold 
install brackets' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package brackets

Pienen tutkimisen jälkeen tajusin, että sudo add-apt-repository ppa:webupd8team/brackets komento vaatii käyttäjältä ENTER näppäimen painamista uudelleen, ja tätä ei skriptini osannut tehdä.

StackOverflowsta löysin vastauksen kysymykseeni:

http://stackoverflow.com/questions/6264596/simulating-enter-keypress-in-bash-script

Shell skriptiin piti lisätä tuon repository komennon eteen echo | 

echo | sudo add-apt-repository ...jne

Kokeilin uudestaan skriptiä…

./startup.sh

Ja toimii!

Notice: /Stage[main]/Pakettimoduuli/Package[brackets]/ensure: ensure changed 'purged' to 'present'
Notice: Finished catalog run in 18.78 seconds

brackets

Seuraavaksi asensin Apachen. Lisäsin Apache paketin bracketsin perään.

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

Tarkastin ennen moduulin ajoa, että localhost on tyhjä, ja ajoin skriptin uudestaan. Tuloksena localhostille tuli Apachen perus sivusto.

Nyt oli Brackets asennettuna, sekä Apachen localhost. Seuraavaksi luotiin HTML template pohja, joka kopioitiin skriptin avulla apachen /var/www/html hakemistoon.

Loin GitHubiin template.html. Lisäsin sen sisään Bootstrapin sivuilta napatun “Basic Bootstrap Templaten”, joka hyödyntää Bootstrappia sekä JQuerya:

http://getbootstrap.com/getting-started/#download

Shell skriptiin lisäsin komennon, mikä kopioi Apachen asennuksen jälkeen template.html:n ja laittaa sen /var/www/html kansioon index.html tiedostoksi.

Shell skripti näytti tältä tässä vaiheessa, uusi lisäys boldattu

#!/bin/bash
echo | sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install -y puppet
sudo cp -r ./finaldigi /etc/puppet/modules/pakettimoduuli
sudo puppet apply -e 'class {pakettimoduuli:}'
sudo cp -r template.html /var/www/html/index.html

Juoksin shell skriptin uudelleen, ja katsoin miltä näytti…

html

html2

Toimii! Bootstrap templatessa oleva Javascriptillä tehty Alert laatikko pompahti esiin niinkuin pitikin, ja H1 elementti näkyy sivulla.

Lopuksi halusin vielä, että moduulini avaisi Bracketsin asennuksen jälkeen, ja myös että skriptini avaisi localhostin auki selaimella.

Skriptin loppuun lisäsin komennon

firefox 'localhost'

ja Puppet moduuliin lisäsin komennon

exec { 'openBrackets':
      command => '/usr/bin/brackets &',
      require => Package['brackets'],
}

Loppulinen tuotos näytti seuraavalta:

Shell skripti:

#!/bin/bash
echo | sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install -y puppet
sudo cp -r ./finaldigi /etc/puppet/modules/pakettimoduuli
sudo puppet apply -e 'class {pakettimoduuli:}'
sudo cp -r template.html /var/www/html/index.html
firefox 'localhost'

Puppet moduuli:

class pakettimoduuli {

        package { brackets:
                ensure => 'installed',
                allowcdrom => 'true',
        }

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

        exec { 'openBrackets':
                command => '/usr/bin/brackets &',
                require => Package['brackets'],
        }
}

Template.html:

.<!DOCTYPE html>
.<html lang="en">
.  <head>
.    
.    <meta charset="utf-8">
.    <meta http-equiv="X-UA-Compatible" content="IE=edge">
.   <meta name="viewport" content="width=device-width, initial-scale=1">
.   
.    <title>Bootstrap Template</title>
.
.    <link href="css/bootstrap.min.css" rel="stylesheet">
.    
.  </head>
.  <body>
.    
.    https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
.    http://js/bootstrap.min.js
.    
.    
.    alert( 'Hi! Remember to drag and drop the /var/www/html/index.html file into Brackets to begin coding!' );
.    
.
.    <h1>Happy coding!</h1>
.    
.  </body>
.</html>

Juoksin vielä Shell skriptin, toivottavasti viimeisen kerran..

./startup.sh

Ja toimii!

FINAL

Työpöytä näytti tältä

(Brackets avattu taustalla oikealla ylös, ja localhost pamahti suoraan näytölle):

1

Nyt tästä eteenpäin kaikki toimenpiteet, mitä vaaditaan käyttäjältä:

setxkbmap fi
sudo apt-get update
sudo apt-get install -y git
git clone https://github.com/leksenderi/Digimoduuli.git
cd /Digimoduuli
./startup.sh

Ja voila! Kaikki toimii.

Lähteinä käytin seuraavia sivustoja:

http://terokarvinen.com/2017/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-2-%e2%80%93-5-op-uusi-ops-loppukevat-2017-p2

https://itsfoss.com/install-brackets-ubuntu/

https://askubuntu.com/questions/443789/what-does-chmod-x-filename-and-how-do-i-use-it

http://stackoverflow.com/questions/6264596/simulating-enter-keypress-in-bash-script

http://getbootstrap.com/getting-started/#download

Kiitos myös Yael Kermorvant, jolta sain neuvoa openBrackets Execin kanssa:

https://ykermorvant.wordpress.com/

H4

http://terokarvinen.com/2017/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-2-%e2%80%93-5-op-uusi-ops-loppukevat-2017-p2

h4. a) Master-slave. Aloita tyhjästä koneesta. Tee yhdestä koneesta orja ja toisesta herra. Kokeile, että orja saa herralta modulin. (Voit käyttää labraa, kun se on tyhjä. Laita mukaan ‘puppet cert –list –all’, ‘tail /var/log/auth.log’, ‘tail /var/log/syslog’).

Tein harjoituksen koulun it-luokassa 5005, missä käytin toista konetta herrana ja toista konetta orjana.

20170502_132602

Seuraavaksi ajetaan alustavat komennot MOLEMMILLA koneilla

setxkbmap fi

sudo apt-get update

Tämän jälkeen annetaan uudet hostnamet molemmille koneille, herrana oleva kone nimettiin masterleo ja orjana oleva kone nimettiin slaveleo

sudo hostnamectl set-hostname masterleo

sudo hostnamectl set-hostname slaveleo

Molemmille koneille vielä editoidaan host tiedostoa sekä käynnistetään avahi demoni uudestaan

sudoedit /etc/hosts <--- vaihdetaan xubuntu joko masterleo tai slaveleo riippuen koneesta

ja testataan vielä pingaamalla master sekä slavekoneella itseään

ping slaveleo

ping masterleo

1

1

Seuraavaksi asennetaan Puppetmaster masterleolle, Puppet slaveleolle, konfiguroidaan molemmat, otetaan yhteyttä toisiinsa sekä hyväksytään certit. Testataan myös vielä lopuksi että moduulit toimivat, ja otetaan printti cert listasta, var.logista sekä syslogista.

Käydään läpi vaiheittain mitä tehdään millekkin.

MASTER KONE

Asennetaan puppetmaster, käynnistetään se ja muokataan dns alt name osoittamaan tähän koneeseen.

sudo apt-get -y install puppetmaster

sudo service puppetmaster start
sudoedit /etc/puppet/puppet.conf  <-- lisätään kohta dns_alt_names = masterleo.local tiedoston sisältöön

puppetconfmaster

Pysäytetään puppet, deletoidaan valmiit certifikaatiot ja käynnistetään uudestaan puppetmaster.

sudo service puppetmaster stop

sudo rm -rf /var/lib/puppet/ssl/

sudo service puppetmaster start

Nyt herrana toimiva kone on valmis, ja tähän voidaan ottaa yhteyttä. Seuraavaksi configuroidaan orjakone.

SLAVE KONE

Asennetaan puppet, enabloidaan se ja lisätään puppet.confiin [agent] lisäys.

sudo apt-get install -y puppet

sudo puppet agent --enable
sudoedit /etc/puppet/puppet.conf <-- lisätään [agent] sekä server = masterleo.local

2

Nyt orjakoneella on konfiguroitu, ja tämä on valmis ottaa yhteyttä master koneeseen.

MASTER KONE

Luodaan helloworld moduuli masterkoneelle, jonka Slavekone lataa itselleen samalla hetkellä, kun ottaa yhteyttä masterkoneeseen -tdv:llä.

cd /etc/puppet/modules

ls

sudo mkdir helloleo

cd helloleo

ls

sudo mkdir manifests

cd manifests
sudoedit init.pp

initpp

Tehdään vielä puppetin omaan manifests kansion sisään site.pp, minne lisätään pieni pätkä moduulia, joka näkyy kuvassa yllä.

cd /etc/puppet/manifests

sudo nano site.pp

Tämän sisälle laitetaan:

class {"helloleo":}

SLAVE KONE

Seuraavaksi otetaan yhteyttä masterkoneeseen, ja katsotaan onnistuuko yhteydenotto.

sudo puppet agent --test --debug --verbose

tai lyhennettynä

sudo puppet agent -tdv

ekayritys

Kone kertoo:

"Exiting; no certificate found and waitforert is disabled"

Slavekone odottaa nyt siis Masterkoneelta, että hän varmistaa certifikaatin ja antaa pääsyn slavekoneelle.

MASTER KONE

Käytetään seuraavaa komentoa saadakseen selville että ketkä ovat yrittäneet yhteyttä ottaa koneeseen.

sudo puppet cert list

certsign

Copypastella tuo slaveleo.tielab.haaga-helia.fi ja lisätään se tämän komennon perään

sudo puppet cert sign (copypastettu koneen nimi tähän)

SLAVE KONE

Ja nyt otetaan vielä kerran yhteyttä

sudo puppet agent -tdv

onnistunutTDV

Kuten kuvasta näkee -tdv komennon jälkeen Slave koneelle luotiin “helloleo.txt” tiedosto. Slave kone on siis ladannu moduulini, joka asensi helloleo tekstitiedoston yhteydenotolla.

final

Ja dodiii! Working as intended. Sitten vielä jos keksisi ensi tunnille jonkun toimivan sekä hyödyllisen moduulin.. 😉

Aika harjoitukseen meni noin 20 minuuttia, ja raportin kirjoittamiseen meni toiset 20 min.

MASTER TERMINAL VIEW

xubuntu@xubuntu:~$ sudo puppet cert list -all

+ "masterleo.tielab.haaga-helia.fi" (SHA256) 46:60:91:10:7C:A8:0D:33:49:6A:1F:72:3C:4B:D3:66:A6:E9:03:C9:04:4A:10:4D:8F:92:0F:EE:19:23:F0:CD (alt names: "DNS:masterleo.local", "DNS:masterleo.tielab.haaga-helia.fi")

+ "slaveleo.tielab.haaga-helia.fi" (SHA256) 58:C7:FE:93:52:49:A6:1C:8A:75:82:61:23:D9:33:69:F5:01:F7:B8:DA:7F:D3:C0:C3:F4:D9:04:AE:F2:F7:2B

xubuntu@xubuntu:~$ tail /var/log/auth.log

May  2 10:13:27 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:13:29 xubuntu sudo: pam_unix(sudo:session): session closed for user root
May  2 10:15:59 xubuntu sudo:  xubuntu : TTY=pts/2 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert list all
May  2 10:15:59 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:16:00 xubuntu sudo: pam_unix(sudo:session): session closed for user root
May  2 10:16:13 xubuntu sudo:  xubuntu : TTY=pts/2 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert list -all
May  2 10:16:13 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:16:15 xubuntu sudo: pam_unix(sudo:session): session closed for user root
May  2 10:17:01 xubuntu CRON[7574]: pam_unix(cron:session): session opened for user root by (uid=0)
May  2 10:17:01 xubuntu CRON[7574]: pam_unix(cron:session): session closed for user root

xubuntu@xubuntu:~$ tail /var/log/syslog

May  2 10:10:44 xubuntu puppet-master[7388]: Could not resolve 172.28.172.94: no name for 172.28.172.94
May  2 10:10:44 xubuntu puppet-master[7388]: message repeated 4 times: [ Could not resolve 172.28.172.94: no name for 172.28.172.94]
May  2 10:13:04 xubuntu puppet-master[7388]: Could not resolve 172.28.172.94: no name for 172.28.172.94
May  2 10:13:04 xubuntu puppet-master[7388]: message repeated 4 times: [ Could not resolve 172.28.172.94: no name for 172.28.172.94]
May  2 10:13:35 xubuntu puppet-master[7388]: Could not resolve 172.28.172.94: no name for 172.28.172.94
May  2 10:13:36 xubuntu puppet-master[7388]: Removing mount "files": /etc/puppet/files does not exist or is not a directory
May  2 10:13:37 xubuntu puppet-master[7388]: Compiled catalog for slaveleo.tielab.haaga-helia.fi in environment production in 0.01 seconds
May  2 10:13:50 xubuntu kernel: [ 2060.691713] perf interrupt took too long (2505 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
May  2 10:13:53 xubuntu puppet-master[7388]: Compiled catalog for slaveleo.tielab.haaga-helia.fi in environment production in 0.01 seconds
May  2 10:17:01 xubuntu CRON[7575]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

SLAVE TERMINAL VIEW

xubuntu@xubuntu:~$ tail /var/log/auth.log

May  2 10:13:34 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:13:37 xubuntu sudo: pam_unix(sudo:session): session closed for user root
May  2 10:13:51 xubuntu sudo:  xubuntu : TTY=pts/6 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet agent -tdv
May  2 10:13:51 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:13:53 xubuntu sudo: pam_unix(sudo:session): session closed for user root
May  2 10:17:01 xubuntu CRON[7308]: pam_unix(cron:session): session opened for user root by (uid=0)
May  2 10:17:01 xubuntu CRON[7308]: pam_unix(cron:session): session closed for user root
May  2 10:21:36 xubuntu sudo:  xubuntu : TTY=pts/6 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert list -all
May  2 10:21:36 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
May  2 10:21:38 xubuntu sudo: pam_unix(sudo:session): session closed for user root

xubuntu@xubuntu:~$ tail /var/log/syslog

May  2 10:13:53 xubuntu puppet-agent[7127]: Executing '/etc/puppet/etckeeper-commit-post'
May  2 10:13:53 xubuntu puppet-agent[7127]: Using cached connection for https://masterleo.local:8140
May  2 10:13:53 xubuntu puppet-agent[7127]: Caching connection for https://masterleo.local:8140
May  2 10:13:53 xubuntu puppet-agent[7127]: Closing connection for https://masterleo.local:8140
May  2 10:15:37 xubuntu puppet-agent[6731]: Could not request certificate: Failed to open TCP connection to puppet:8140 (getaddrinfo: Temporary failure in name resolution)
May  2 10:17:01 xubuntu CRON[7309]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May  2 10:17:37 xubuntu puppet-agent[6731]: Could not request certificate: Failed to open TCP connection to puppet:8140 (getaddrinfo: Temporary failure in name resolution)
May  2 10:18:50 xubuntu dnsmasq[4543]: nameserver 172.28.11.67 refused to do a recursive query
May  2 10:19:37 xubuntu puppet-agent[6731]: Could not request certificate: Failed to open TCP connection to puppet:8140 (getaddrinfo: Temporary failure in name resolution)
May  2 10:21:37 xubuntu puppet-agent[6731]: Could not request certificate: Failed to open TCP connection to puppet:8140 (getaddrinfo: Temporary failure in name resolution)

Palvelin hallinta H3

GitHub lähde:

  • a) Package-File-Server. Asenna ja konfiguroi jokin demoni package-file-server -tyyliin. Tee jokin muu asetus kuin tunnilla näytetty sshd:n portin vaihto.
  • b) Modulit Gitistä. Tee skripti, jolla saat nopeasti modulisi kloonattua GitHubista ja ajettua vaikkapa liverompulle. Voit katsoa mallia terokarvinen/nukke GitHub-varastosta.

Harjoitus aloitettiin klo 17:52 (Xubuntu 16.04.01 TryFree)

Aloitetaan pohjustavilla komennoilla

setxkbmap fi
sudo apt-get update

sudo apt-get install -y git
sudo apt-get install -y puppet

Ennen packagea ja puppettia kun aletaan käyttää, testataan ensiksi kaiken toimivuus pienellä Hello World testillä

sudo puppet apply -e 'file {"/tmp/moileo": content => "hello\n"}'
cat /tmp/moileo

Puppet komento teki /tmp/ kansioon “moileo” nimisen tekstitiedoston, missä lukee “hello”, Cat komento tulostaa kyseisen “hello” terminaaliin.

Testataan nyt Puppetin toimivuus tekemällä puppetin modules kansioon “helloleo” niminen kansio, jonne lisätään sisälle vielä manifests kansio, sekä init.pp tiedosto sen sisälle

cd /etc/puppet/modules
sudo mkdir helloleo
cd helloleo
sudo mkdir manifests
cd manifests
sudo nano init.pp

Init.pp tiedoston sisälle laitoin seuraavat konfiguraatiot:

class helloleo {
    file {"/tmp/hellomodule":
            content => "bla blaa",
    }
}

Sen jälkeen ajoin puppetilla kyseisen koodin komennolla

sudo puppet apply -e 'class {helloleo:}'

Nyt löysin /tmp kansiosta “hellomodule” nimisen tiedoston, missä lukee “bla blaa”

Nyt voidaankin siis työstää puppetilla package asennusta. Valitsin Apachen asennettavaksi demoniksi

Tehdään aluksi apachelle oma kansio puppet moduleissa, ja sinne manifests ja templates kansiot

cd /etc/puppet/modules
sudo mkdir apache
cd apache
sudo mkdir manifests templates

Luodaan manifests kansioon taas init.pp tiedosto. Tällä kertaa sisällöksi laitoin seuraavaa

class apache {

    exec { 'apt-update':
            command => '/usr/bin/apt-get update'
    }

    package { apache2:
            require => Exec['apt-update'],
            ensure => 'installed',
            allowcdrom => 'true',
    }

    file {'/var/www/html/index.html':
            content => "testing testing",
    }
}

 

Yllä oleva komento ajaa ensin sudo apt-get updaten, asentaa apachen vasta kun update on ajettu, ja muokkaa apachen vakiosivua luoden sinne “testing testing” tekstin pätkän

Tämän jälkeen ajetaan puppetilla tuo koodinpätkä

sudo puppet apply -e 'class {apache:}'

Vastauksena tuli

Notice: Compiled catalog for xubuntu.dhcp.inet.fi in environment production in 0.23 seconds
Notice: /Stage[main]/Apache/Exec[apt-update]/returns: executed successfully
Notice: /Stage[main]/Apache/File[/var/www/html/index.html]/content: content changed '{md5}d68ba817e9aa3034436617554da0d2ad' to '{md5}2d5489b9b9d601e49c17274cfbc04077'
Notice: Finished catalog run in 2.51 seconds

Katsotaan vielä miltä localhost sivusto näyttää.

2

Näyttäisi siis toimivan!

Luodaan vielä skripti, millä saadaan helposti GitHubista tämä luotu moduuli.

setxkbmap fi
sudo apt-get update
sudo apt-get -y install puppet git
git clone https://github.com/leksenderi/Palvelinten-hallinta-2017.git
cd /home/xubuntu/Palvelinten-hallinta-2017/Raportit/H3
bash boot.sh

Kyseinen scripti ajaa päivitykset ja asentaa gitin, kloonaa minun git repositoryn ja avaa H3 harjoituksen kansion. Testasin vielä skriptin toimivuuden poistamalla git kansioni omasta työpoydästäni, sekä poistin Gitin myös, ja tämän jälkeen ajoin scriptin. Kaikki toimii niin kuin pitääkin, ja repository löytyy omalta työpöydältäni heti.

Harjoitus lopetettiin klo 20:49.

Palvelin hallinta H2

GitHub:

https://github.com/leksenderi/Palvelinten-hallinta-2017/tree/master/Raportit/H2

 

 

Huom! GitHub ohjeet löytyvät postauksen pohjalta

  • a) Tee tämä kotitehtävä GitHubiin MarkDownilla
  • b) Tee puppet-moduli, joka tekee asetukset jollekkin komentorivi- tai graafisen käyttöliittymän ohjelmalle.

Kone on bootattu Xubuntu 16.04.01 version livetikulta klo 23:35 (TryFree-versio)

Aloitetaan ajamalla peruskomennot

setxkbmap fi
sudo apt-get update

Kehitellään itsellemme pienehkö puppet-moduuli. Otetaan vaikka yksinkertainen alias-moduuli. Lisätään bash.bashrc tiedostoon koodinpätkä, missä määritellään alias. Tehdään vaikka yksinkertainen “ls” alias, niin että “h” kirjain tekee saman komennon.

cd /etc/
ls
sudo nano bash.bashrc

Lisätään yläosaan seuraava tiedonpätkä:

alias h="ls"

Tämän jälkeen asennetaan puppet ja luodaan init.pp tiedostolle oma kansiopolku

sudo apt-get install puppet

Kansiopolku sekä init.pp tiedoston luonti:

/etc/puppet/modules/aliasmoduuli/manifests
sudo nano init.pp

Init.pp tiedostoon laitoin seuraavat tiedot:

class aliasmoduuli{

    file {'/etc/bash.bashrc':
    content => template('aliasmoduuli/bash.bashrc.erb')

	}
}

Muistetaan tehdä vielä myös templates kansio, minne kopioidaan tuo bash tiedosto.

cd .. 

tai

cd /etc/puppet/modules/aliasmoduuli
sudo mkdir templates

tämän jälkeen kopioidaan etc:ssä sijaitseva bash.bashrc ja liitetään se meidän templates kansioon bash.bashrc.erb muodossa

sudo cp bash.bashrc /etc/puppet/modules/aliasmoduuli/templates/bash.bashrc.erb

Muistetaan vielä ajaa puppetilla komento, jotta moduuli lähtee käyntiin

sudo puppet apply -e 'class {"aliasmoduuli":}'

Ei ongelmia, joten avataan terminaali uudestaan ja voila! “H” kirjain pamauttaa saman kuin “ls”

Tämän jälkeen palautus GitHubbiin, nopeat ohjeet tästä

Ensiksi asennetaan git sudo apt-get install git Tämän jälkeen kopioidaan oman github käyttäjän hakemistot koneelle

git clone https://github.com/leksenderi/Palvelinten-hallinta-2017.git

Sen jälkeen ennalta määrättyyn kansioon luodaan a) tehtävän vaatima MarkDown tiedosto, tässä tapauksessa omani on

cd Palvelinten-hallinta-2017
sudo nano h2.md

tämän jälkeen raportti siirretään Githubiin seuraavilla komennoilla

git add .
git commit
git pull
git push

Harjoitus lopetettiin 00:29

Palvelin hallinta H1

a)

02:02 boottasin työasemani live-tikulta (Xubuntu 16.04) ja aloin lukemaan ohjeita Puppetista ja siitä miten pystyisin tekemään moduulin joka käyttäisi fileä ja moduulin joka käyttäisi packagea.

02:18 pistin komennot setxkbmap fi ja sudo apt-get update tulille jonka jälkeen asensin puppetin komennolla sudo apt-get install puppet-common.

Tämän jälkeen siirryin cd /etc/puppet/modules kansioon ja loin sinne “perusmoduuli” nimisen moduulin sudo mkdir perusmoduuli komennolla ja tein vielä perusmoduulit kansioon manifestsin cd perusmoduuli –> sudo mkdir manifests.

Manifests kansioon tein vielä init.pp tiedoston komennolla

sudoedit /etc/puppet/modules/perusmoduuli/manifests/init.pp

ja lisäsin sinne kuvassa olevat asiat

eka

Tämän jälkeen testasin toimiiko kyseinen moduuli komennolla

sudo puppet apply -e’class{perusmoduuli:}’

Ei tullu erroreita, joten kokeillaan vielä varmuudeksi printata terminaalin kyseinen tuotos

cat /tmp/perusmoduuli

toka

Toimii!

02:44 sitten vielä toimiva package. Lisätään lisää härpäkettä tuohon valmiiksi olevaan moduulin

sudoedit /etc/puppet/modules/perusmoduuli/manifests/init.pp

kolmas

Tunnilla oli maininta siitä että allowcdrom pitää lisätä mukaan sillä ei ehkä toimi ilman sitä, joten lisätään se mukaan tähän.

ja sitten kun on tiedosto päivitetty niin ajetaan taas se sama komento

sudo puppet apply -e’class{perusmoduuli:}’

nelone

02:52 toimii perfecto!

b) En päässyt IT PRO messuille, joten katsoin videon missä vertailtiin Chef vs Puppet vs Ansible vs SaltStack

Skaalautuvuus

Jokainen työkalu on suuresti skaalautuva.

Laitteiston asennuksen helppous

Videossa kerrotaan Ansiblen olevan helpoin kaikista työkaluista asentaa valmiiksi. Siinä missä muut työkalut vaativat erillisiä agentteja client koneille, Ansiblella ei tarvitse muuta kuin asentaa ohjelmisto hallitsevalle tietokoneelle.

Toimivuus

Ongelmatilanteessa kun pääkäyttäjä lopettaa toimintansa, toimii jokainen ohjelma niin että korvaa sammuneen masterin.

Puppet: multi-master arkkitehtuuri = jos active master kaatuu, toinen master ottaa kaatuneen tilalle

SaltStack: voi olla monta eri masteria konfiguroitu. Jos yksi kaatuu, muut agentit ottavat yhteyttä kaikkiin toimiviin mastereihin listassa

Ansible: käyttää single active node periaatetta= Primary Instance on master, jos se kaatuu Secondary Instance ottaa ohjat käsiin

Chef: Jos primary serverissa on vika, chefissä on backup serveri joka ottaa ohjat käsiin

Hallinta

Puppet: Hallinnan opettelu vaikeaa koska käyttää omaa Puppet DSL kieltä. Clientit nykivät konfiguraatiot serveristä. Etähallinnan toimeenpano ei ole välitön.

Ansible: Helppo oppia konfiguraatioiden hallinta. Serveri työntää konfiguraatiot kaikille päätteille. Etähallinnan toimeenpano on välitöntä.

SaltStack: Helppo käyttää ja oppia konfiguraatioiden hallinta. Serveri työntää konfiguraatiot kaikille päätteille. Etähallinnan toimeenpano on välitöntä.

Chef: Tarvitsee ohjelmointiymmärrystä, sillä Chefin konfigurointi on Ruby DSL kielellä. Clientit nykivät konfiguraatiot serveristä.

Yhteentoimivuus

Puppet: Puppet Master toimii ainoastaan Linux/Unix mutta Puppet Agent toimii myös windowsilla

SaltStack: Salt Master toimii ainoastaan Linux/Unix mutta Salt minions toimii myös windowsilla

Ansible: Ansible tukee myös windowsin koneita mutta Ansible serveri täytyy olla Linux/Unix koneessa

Chef: Chef Server toimii ainoastaan Linux/Unix mutta Chef Client ja Workstation voi käyttää Windowsissa myös

Konfigurointikieli

Puppet: Puppet DSL. Ei niin helppo oppia, järjestelmähallitsija orientoitunut

Ansible: YAML (Python). Helppo oppia, admin orientoitunut

SaltStack: YAML (Python). Helppo oppia, admin orientoitunut

Chef: Ruby DSL. Jyrkkä oppimiskäyrä, ohjelmistokehittäjä orientoitunut

GitHub aktiivisuus

Contributors:

Puppet: 355

Ansible: 1003

SaltStack: 1,041

Chef: 369

Commits:

Puppet: 19,595

Ansible: 13,527

SaltStack: 49,193

Chef: 12,089

Branches:

Puppet: 9

Ansible: 33

SaltStack: 11

Chef: 177

Releases:

Puppet: 291

Ansible: 57

SaltStack: 82

Chef: 231

Hinta yrityskäyttöön

Puppet: $12,000

Ansible: $10,000

SaltStack: $15,000

Chef: $7,200

Suosio

chrome_2017-04-05_01-29-41.png

Lopullinen tulos, missä arviointi kritiikit ovat Skaalautuvuus, Asennus, Toimivuus, Hallinta sekä Yhteensopivuus

chrome_2017-04-05_01-31-00.png

Tämän videon perusteella tilanne olisi seuraava:

  1. Ansible
  2. SaltStack
  3. Puppet ja Chef

 

Lähteet:

http://terokarvinen.com/2013/hello-puppet-revisited-%E2%80%93-on-ubuntu-12-04-lts

https://www.puppetcookbook.com/posts/install-package.html

https://ilarihuura.wordpress.com/2017/03/30/linux-palvelimena-h1/

http://www.youtube.com/watch?v=OmRxKQHtDbY&t

H5

22:39 boottasin linuxin livetikultani, avasin Xubuntun ja ajoin terminaalissa

setxkbmap fi

sekä

sudo apt-get update

22:40 suuntasin Digital Oceanin sivustolle ja aloin tekemään omaa droplettiani

123123

Valitaan Ubuntu kympin sopparilla, ja serveriksi Frankfurt. Ei valita mitään ylimääräisiä gizmoja ja keksitään vielä itsellemme oma hostnimi.

Sähköpostiini ilmestyi viesti, mistä löytyy nyt luodun palvelimen root salasana.

22:53 Asennetaan terminaalin kautta ssh

sudo apt-get -y install ssh

otetaan yhteys palvelimeen terminaalista ja keksitään uusi salasana kirjautumisen jälkeen, kun palvelin sitä pakottaa

ssh root@palvelimenip

Seuraavaksi configuroidaan serveri:

23:11 Avataan http ja ssh yhteys palomuurin läpi, luodaan käyttäjä palvelimelle ja annetaan sille sudo ja admin oikeudet (huom anna hyvä salasana tälle käyttäjälle)

sudo ufw allow 20/tcp

sudo ufw allow 80/tcp

sudo ufw enable

sudo adduser leojoonatan

sudo adduser leojoonatan sudo

sudo adduser leojoonatan adm

sudo adduser leojoonatan admin

Testataan vielä että päästään sisään käyttäjälle toista terminaalia käyttäen, ja ajetaan sudo komentoja testatakseen että oikeudet löytyy. Lukitaan vielä myös root käyttäjä palvelimelle

ssh leojoonatan@palvelinip

sudo apt-get update

sudo apt-get upgrade

sudo usermod –lock root

Palvelin on nyt toiminnassa.

23:21 Luodaan seuraavaksi weppipalvelin ja editoidaan index.html ja tehdään siitä tavallinen pohja.

ssh leojoonatan@palvelinip

sudo apt-get install -y apache2

sudoedit /var/www/html/index.html

Seuraavaksi luodaan meille oma domaini. Käytetään Namecheap.com sivustoa tähän tarkoitukseen.

00:06 Kuten huomaatte luonnissa kesti kauan. Mutta pääpiirteittäin seurasin allaolevan linkin ohjeita “Laita domain-nimi osoittamaan virtuaalipalvelimeesi” osiosta alkaen

http://simosuominen.com/index.php/2017/03/05/linux-palvelimet-kotitehtavat-6/

00:13 tehdään vielä viimeiset silaukset

sudo a2enmod userdir

sudo service apache2 restart

mkdir public_html 

cd public_html

nano index.html

sudoedit /etc/apache2/sites-available/leocom.conf
ServerName http://www.leojaaskelainen.com
ServerAlias leojaaskelainen.com

DocumentRoot /home/leojoonatan/html/leocom/
Require all granted
sudo a2ensite leocom.conf

sudo service apache2 restart

00:33 Tehtävä saatiin päätökseen ja lopputuloksena sivusto http://www.leojaaskelainen.com näyttää tältä

3212123