Palvelinten Hallinta: Harjoitus 2 raportti

Tässä postauksessa raportoin Tero Karvisen Palvelinten Hallinta-kurssin tehtävää 2.

Käyttämäni tietokoneet ovat HP:n 655 G1 läppäri ja virtuaalipalvelin DigitalOceanilta ($5/kk paketti ilman mitään herkkuja). Käyttöjärjestelmä läppärissä on Xubuntu 16.04 LTS x64 (livetikku) ja virtuaalipalvelimessa Ubuntu 16.04.3 x64.

Oman Xubuntun saat ladattua täältä.

Ennen tehtävien aloittamista annoin molemissa koneissa terminaaliin komennon

$ sudo apt-get update

ja palvelimen puolella

$ sudo apt-get upgrade -y

päivittääkseni kaiken ajan tasalle.

En pidä ssh:n käytöstä Windowsilla (jos pakko käytän PuTTY:a), joten asennetaan ssh komennolla

$ sudo apt-get install -y ssh

Tehtävissä käytetään Salt:ia, joten asennetaan minion läppärille

$ sudo apt-get install -y salt-minion

ja master palvelimelle (tulimuurin portit 4505 ja 4506 ovat jo auki)

$ sudo apt-get install -y salt-master

Muokataan läppärillä masteriksi virtuaalipalvelin

$ sudoedit /etc/salt/minionmaster: ip.os.oi.te
id: billy

Käynnistetaan salt-minion.service uudelleen

$ sudo systemctl restart salt-minion.service

Hyväksytään orja masterin puolella

$ sudo salt-key -A

hostkeyA

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

b) Laita käyttäjien kotisivut toimimaan Apachella

Käytän apuna Teron ohjetta.

Koitetaan ensin pistää kaikki toimintaan käsin. Testataan joka välissä toimiiko vai ei.

Minion käsinasennus

Surffataan ensin osoitteeseen localhost, tyhjä virhesivu.

$ sudo apt-get install -y apache2

Päivitetään sivu ja vastassa Apache2 oletussivu.

$ sudoedit /var/www/html/index.html # poistetaan kaikki rivit ja korvataan tekstillä "Hei maailma"

Päivitetään sivu, valkoinen sivu jossa lukee “Hei maailma.”

Tehdään kotihakemistoon kansio public_html ja sinne index.html johon kirjoitetaan “Billyn kotisivu”.

$ mkdir public_html
$ nano public_html/index.html # "Billyn kotisivu" sisälle

Kokeillaan selata sivuille, eli localhost/~billy. “Not found.”

Laitetaan Apachen userdir-modi päälle ja käynnistetään apache uudelleen.

$ sudo a2enmod userdir

Päivitetään sivu, “Billyn kotisivu”, kaikki toimii. Poistetaan nyt apache ja kokeillaan sen asennusta Saltin kautta.

$ sudo apt-get purge -y apache2* # Koska livetikku voin käyttää *, oikealla koneella en käyttäisi ettei satu vahinkoja.

Master apachen asennus ja käyttäjien kotisivut toimintaan

Käytän apuna Teron ohjetta.

Aloitetaan tekemällä /srv/-hakemistoon kansio salt

$ cd /srv
$ sudo mkdir salt

Tehdään apache.sls-tiedosto

$ sudoedit apache.sls

Tiedoston tarkoituksena on asentaa Apache ja laittaa käyttäjien kotisivut toimimaan. Aloitetaan asentamalla Apache. Lisätään tiedostoon seuraavat rivit

apache2:
  pkg.installed

Kokeillaan

$ sudo salt 'billy' state.apply apache

apache_asennus

Kokeillaan orjalla selata osoitteeseen localhost. Valkoinen sivu, jossa luikee “Hei maailma”.

Laitetaan nyt Salt muokaamaan tuota tiedostoa. Tehdään sudoeditillä tiedosto index.html, kirjoitetaan sisään “Why so Salty?”

Muokataan nyt apache.sls-tiedostoa ja lisätään rivit

/var/www/html/index.html
  file.managed:
    - source: salt://index.html

Kokeillaan ajaa state uudelleen ja päivitetään orjalla sivu.

$ sudo salt 'billy' state.apply apache

whysosalty

Tässä vaiheessa ärsyttää nuo turhat varoitukset, korjataan asia tämän avulla.

Laitetaan nyt käyttäjien kotihakemistot toimintaan, muokataan apache.sls-tiedostoa

a2enmod userdir:
  cmd.run:
    - creates: /etc/apache2/mods-enabled/userdir.conf

apache2restart:
  service.running:
    - name: apache2
    - watch:
      - cmd: 'a2enmod userdir'

Ensimmäinen osuus siis ajaa komennon a2enmod userdir ja toinen osuus käynnistää Apachen uudelleen, kun komento on ajettu.

Kokeillaan

$ sudo salt 'billy' state.apply apache

eitoimi.png

Viimeinen osuus ei lähtenyt toimintaan, joka on itseasiassa ihan hyvä, koska halusin kokeilla file.symlink:kiä muutenkin.
Surffatessa orjalla sivulle localhost/~billy ei siis tule sivua, koska apachea ei ole käynnistetty uudelleen.

Muokataan siis apache.sls-tiedostoa.

/etc/apache2/mods-enabled/userdir.conf:
  file.symlink:
    - target: ../mods-available/userdir.conf

/etc/apache2/mods-enabled/userdir.load:
  file.symlink:
    - target: ../mods-available/userdir.load

apache2restart:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/mods-enabled/userdir.conf
      - file: /etc/apache2/mods-enabled/userdir.load

Koska userdir-modi oli jo päällä (aikaisemman staten takia), otetaan se pois käsin ennen uuden staten käynnistystä, että aiemmat symlinkit katoavat

$ sudo a2dismod userdir

Kokeillaan nyt apache-statea

$ sudo salt 'billy' state.apply apache

userdirtoimii.png

Homma toimii, apache.sls- ja index.html-tiedostot näyttävät tältä:

catmeme.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 c) Laita PHP toimimaan käyttäjien kotisivuilla

Tehdään tämäkin ensin käsin ja kokeillaan sitten saltin avulla.

Minion käsinasennus

$ sudo apt-get install -y libapache2-mod-php

Vaihdetaan index.html:n tiedostopääte ja muokataan sitä hieman

$ mv index.html index.php
$ nano index.php

<? php print ("Billyn kotisivu jossa toimii php"); ?>

Muokataan php7.0.conf-tiedostoa, kommentoidaan <IfModule> osuus pois.

$ sudo nano /etc/apache2/mods-enabled/php7.0.conf

Testataan surffata selaimessa localhost/~billy, valkoinen sivu. Käynnistetään apache uudelleen.

$ sudo systemctl restart apache2.service

Sivu toimii nyt niinkuin pitää. Kokeillaan tehdä sama Saltilla.

Masterin osuus

Tarvitsen ainakin kyseisen php7.0.conf-tiedoston, eli lähetetään se masterille orjalta. Tämän jälkeen poistetaan asentamamme paketti joka vaaditaan php:n toimimiseen

$ scp /etc/apache2/mods-enabled/php7.0.conf vastaan@ottaja:
$ sudo apt-get purge -y libapache2-mod-php* # * vain koska käytän livetikkua enkä vahingossa poista mitään tärkeää

Oletan, että paketin asennus tekee symlinkit, koska sitä ei erikseen tarvinnut tehdä, tehdään tämä muistaen uusi php.sls-tiedosto /srv/salt-kansioon

$ sudoedit php.sls

libapache2-mod-php:
  pkg.installed

/etc/apache2/mods-enabled/php7.0.conf:
  file.managed:
    - source: salt://php7.0.conf

apache2restart:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/mods-enabled/php7.0.conf

Kokeillaan ja katsotaan miten käy.

$ sudo salt 'billy' state.apply php

phptoimii.png

Toimii!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen

Lähetetään masterille 000-default.conf-tiedosto

$ scp /etc/apache2/sites-available/000-default.conf vastaan@ottaja:

Liikutetaan se masterilla oikeaan paikkaan

$ sudo mv /home/roope/000-default.conf /srv/salt

Kopioidaan hosts-tiedosto salt-kansioon

$ sudo cp /etc/hosts /srv/salt/

Muokataan molempia, nimetään 000-default.conf esim.example.conf:iksi

Tehdään esimsivu.sls ja lisätään seuraavat rivit

$ sudoedit esimsivu.sls

apache2:
  pkg.installed

/etc/hosts:
  file.managed:
    - source: salt://hosts

/etc/apache2/sites-available/esim.example.conf:
  file.managed:
    - source: salt://esim.example.conf

a2ensite esim.example.conf:
  cmd.run

apache2restart:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/sites-available/esim.example.conf

Kokeillaan

$ sudo salt 'billy' state.apply esimsivu

hienostimeni.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille.

Tehdään siis /skel/-hakemistoon uusi kansio public_html ja sinne index.html-tiedosto ( tätä varten (ohje kansion tekemiseen löytyi Saltin omista ohjeista)

Tehdään ensin uusi kansio index.html tiedostolle, ja kansioon kyseinen tiedosto

$ sudo mkdir skelhomma
$ sudoedit skelhomma/index.html

Tämä on oletussivu, jota saat vapaasti muokata.

Sitten skel.sls

$ sudoedit skel.sls

/etc/skel/public_html/:
  file.directory:
    - makedirs: True

/etc/skel/public_html/index.html:
  file.managed:
    - source: salt://skelhomma/index.html

Pistetään state päälle

$ sudo salt 'billy' state.apply skel

skelstate

Helpoin tapa testata toimivuus on tehdä orjalla uusi käyttäjä ja surffata uuden käyttäjän sivulle

$ sudo adduser newbilly # täytetään tarvittavat tiedot

Surffataan sivulle localhost/~newbilly

newbilly

Sivu toimii (ääkköset ei). Skel-state on siis tehnyt sen mitä halusin.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 f) Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa.

Tehdään state joka asentaa ja laittaa sysstatin toimintaan.

Tehdään homma ensin käsin.

Sysstat käsinasennus

$ sudo apt-get install -y sysstat

Conffataan se kuntoon

$ sudoedit /etc/default/sysstat # ENABLED false → true

Viimeiseksi sysstat päälle

$ sudo systemctl start sysstat

Sysstat salt-asennus

Lähetetään ennen paketin poistamista sysstat-tiedosto masterille

$ scp /etc/default/sysstat vastaan@ottaja:

Poistetaan nyt paketti minionilta (käsin)

$ sudo apt-get purge -y sysstat

Liikutetaan sysstat-tiedosto oikeaan paikkaan

$ sudo mv /home/roope/sysstat /srv/salt/

Tehdään sysstat.sls, en ole täysin varma toimiiko service.running niinkuin haluan (eli käynnistää ohjelman), mutta korjataan jos on tarve

$ sudoedit sysstat.sls

sysstat:
  pkg.installed

/etc/default/sysstat:
  file.managed:
    - source: salt://sysstat

startsysstat:
  service.running:
    - name: sysstat

Kokeillaan

$ sudo salt 'billy' state.apply sysstat

sysstat.png

State ja ohjelma toimivat!

EDIT 15.4.2018: Lisäsin watch-osan koodiin, eli se toimii entistäkin luotettavammin

startsysstat:
  service.running:
    - name: sysstat
    - watch:
      - file: /etc/default/sysstat

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Advertisements

One thought on “Palvelinten Hallinta: Harjoitus 2 raportti”

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s