Palvelinten hallinta H1

Tehtävässä käytetyt harjoitukset löytyvät osoiteesta : Palvelinten hallinta
Kurssin opettajana toimii Tero Karvinen.

Harjoitus suoritetaan Lenovo T470P kannettavalla tietokoneella, jossa on i7 7700hq suoritin, 16 Gb DDR4 keskusmuistia sekä Samsung 960 evo 256Gb m.2 kovalevy.

Käyttöjärjestelmänä toimii Ubuntu 16.04.3 joka on asennettu VirtualBox virtuaaliympäristöön. Tätä tietokonetta sekä käyttöjärjestelmää tulen todennäköisesti käyttämään harjoituksissa tämän kurssin ajan.

H1. a) Asenna jokin muu demoni kuin Apache. Raportoi, miten rakensit, selvitit ja testasit kunkin osan (esim. sudo puppet resource, puppet describe, lähteet…). Julkaise myös modulisi lähdekoodi niin, että sen voi helposti ottaa käyttöön.

Aloitan tehtävän asentamalla Puppet.n, olen jo päivittänyt paketit joten

“sudo apt-get update”

komentoa ei tarvitse suorittaa. Asennan puppetin komennolla

“sudo apt-get install puppet”.

Tarkoituksena tässä tehtävässä on tehdä ssh moduli, mutta näkisin myös loogiseksi että tekisin toisen modulin, jotka avaisi käyttöön tarvittavat portit palomuurissa (ufw) sekä laittaisi sen päälle.

Aloitan tehtävän luomalla “/etc/puppet/manifests” kansioon pages.pp tiedoston käyttäen sudoedit.a. Tämän tiedoston kautta ajan kaikki käytössä olevat modulit ja lisään niitä sinne sen mukaan kun olen ne testannut. Lisäys tapahtuu kirjoittamalla tiedosoon “include” ja sen alle suoritettavan modulin nimi, esim: ufw.
Korjaus 31.10: Tiedoston nimi tulisi olla site.pp.

UFW

Aloitan luomalla “ufw” modulin, luon sen “/etc/puppet/modules” kansioon komennolla “sudo mkdir ufw”, tähän kansioon luon uuden kanssion nimelta “manifests”. Kansioon luon tiedoston “init.pp”, käytän tähän sudoedit.a.

Testaan tätä tiedostoa vaiheittaan, jotta pystyn reagoimaan mahdollisiin virheisiin. Ensimmäinen virhe oli puhdas kirjoitusvirhe init.pp tiedostossa.

Käytän tiedostossa package-exec-service rakennetta. Tiedoston voi selostaa kutakuinkin näin:

Tiedoston alkuun määrittelen $ufw lähteen, näin en joudu käyttämään sitä joka komennossa. Tämän saan selville “which” komennolla.

Varmistetaan että paketti asennettu.

Toteutetaan halutut komennot, tässä tapauksessa palomuurin päälle laitto, sekä tarvittaen porttien avaus. Huom! Portti 8140 avataan sen takia, koska ymmärsin että se on puppet.n käytössä.

Viimeiseksi varmistetaan että palvelu on päällä, “service” on riippuvainen paketista, joten tällä rakenteella paketti suoritetaan ensin.
Viimeinen testi ajaa koko modunlin läpi onnistuneesti.

SSH

Ennen kuin rakennan modulia, asennan ssh.n jotta voin siirtää moduliin tarvittavan konfiguroinnin, modulin suorittamaa ssh asennusta varten.

Teen tämän komennolla

“sudo apt-get install ssh”

Editoin sshd_config tiedostoa, joka sijaitsee /etc/ssh kansiossa. Tällä kertaa en tee muita muutoksia, kuin muokkaan “Permitrootlogin” arvoksi “no”, käytän tähän sudoedit.a , näin estetään pääkäyttäjän kirjautuminen ssh kautta uudessa asennuksessa.

Luon “/etc/puppet/modules” kansioon uuden kansion nimeltä “ssh”, tämän kansion alle luon vielä kansiot “manifests” sekä “templates”. Kopioin aikaisemmin muokatun sshd_config tiedoston “templates” kansioon, käytän tähän “cp” komentoa pääkäyttäjänä.

Tämän jälkeen poistan aikaisemman ssh asennuksen, jotta voin testata modulin toimivuutt a. Teen tämän komennolla “sudo ap-get purge ssh.*”

Tämän jälkeen luon “/etc/puppet/modules/ssh/manifests” kansioon tiedoston init.pp, käytän tähän sudoedit.a.

Kuten aikaisemman modulin kanssa, testaan tätä modulia vaiheittaan jotta mahdolliset virheet voidaan erottaa luontiprosessissa. Tällä kertaa onneksi modulin sai suoritettua ilman ongelmia.

Moduli käyttää package-file-service rakennetta. Tiedoston voi selostaa kutakuinkin näin:

Varmista että paketti ssh on asennettu.

Tiedoston “/etc/ssh/sshd_config” sisältö määritellään template tiedoston mykaan. Se vaatii toimiaakseen paketin ssh, tätä vaihetta ei siis voi suorittaa ilman että paketti on asenettu. Tiedoston suoritus ilmoittaa ssh palvelulle, joka suoritetaan seuraavaksi.

Palvelu ssh varmistaa että palvelu on päällä ja se on riippuvainen ssh paketista.

Testaan että moduli toimii, ottamalla ssh yhteyden käyttäjään.

GIT

Minulla on jo entuudestaan GitHub tili, joten julkaisen tehtävän modulit siellä, jotta ne olisi kaikkien käytettävissä.

Aloitan asentamalla git.n, teen sen komennolla

“sudo apt-get install git”

Tämän jälkeen kloonaan kurssia varten luomani repositoryn, teen tämän komennolla

“git clone https://github.com/TatuE/puppet.git”

Tämän jälkeen kopioin molemmat luomani modulit juuri luotuun puppet kansioon.

Lisään nimeni sekä sähköpostiosoitteeni

“git config –global user.email “sähköpostiosoite””

“git config –global user.name “nimi””

Päivitän tiedostot repository.n komennolla

“git add . && git commit; git pull && git push”.

Tämän jälkeen kommentoin päivitystä sekä syötän salasanani sekä käyttäjätunnukseni.

Lähteet:

https://github.com/attachmentgenie/attachmentgenie-ufw/tree/master/manifests

http://terokarvinen.com/2013/ssh-server-puppet-module-for-ubuntu-12-04

https://puppet.com/docs/puppet/5.3/lang_relationships.html#packagefileservice