2. Viikkotehtävä (Palvelinten hallinta)

Tällä kertaa tehtävinä oli mm. Apachen ja PHP:n asennus ja määritys, nimipalvelun simulointia, kotisivut käyttäjille automaattisesti sekä vapaavalintainen Package-File-Service tila omilla asetuksilla. Tehtävät tehdään ensin manuaalisesti ja sen jälkeen Salt-state -tiedostoja hyödyntäen.

Tehtävät ovat osana Tero Karvisen palvelinten hallinta -kurssia. Tehtävänannot löytyvät Teron kotisivuilta.

Käytin tehtävissä DigitalOceanista vuokrattua virtuaalipalvelinta (Ubuntu 16.04.3 x64) sekä VirtualBoxilla pyörivää Xubuntua. (Xubuntu 16.04.3 x64)

Tehtävä B

Laita käyttäjien kotisivut toimimaan Apachella.

Lähdin liikkelle manuaalisella asennuksella ensin. Tässä tehtävässä käytin apuna Tero Karvisen sivulta löytyneitä ohjeita.

Asensin Apachen

sudo apt-get install -y apache2

Testasin selaimella osoitetta 127.0.0.1, josta löytyikin Apachen oletussivu.

Jotta sain käyttäjän kotisivut näkyviin kotikansiosta tarvitsi luoda käyttäjän kotihakemistoon kansio sekä html tiedosto kotisivulle. Apachesta täytyi ottaa käyttöön käyttäjäkansiot Apachesta sekä lopulta käynnistää Apache-palvelu uudelleen.

Loin kansion käyttäjän kotihakemistoon (/home/miko/)

mkdir public_html

Loin esimerkkisivun public_html -kansioon:

echo "Testisivusto" |tee public_html/index.html

Kotikansiot käyttöön Apachesta:

sudo a2enmod userdir

Lopulta Apachen uudelleenkäynnistys:

sudo systemctl restart apache2.service

1

Näiden toimenpiteiden jälkeen käyttäjän kotikansiossa olevat sivut näkyivät.

Nyt kun manuaalinen asennus on hallussa, siirryin tekemään Salt-tilaa jolla saa aikaan samat toimenpiteet!

Tässä vaiheessa piti selvittää mitä tiedostoa komento ”a2enmod userdir” muokkasi.

Lähdin kaivelemaan muutoksia /etc/apache2/ hakemistosta salt-orjakoneelta:

find -printf "%T+ %p\n"|sort

”%T+” on muokkausaika
”%p” on tiedostonimi ja hakemisto
”\n” on uusi rivi
”|sort” järjestää tiedot

2

Viimeisimmät muutokset on tehty userdir.conf sekä userdir.load tiedostoihin.

Loin Salt-masterille oman salt-state kansion Apachelle /srv/salt/ hakemistoon:

sudo mkdir /srv/salt/apache

Lähdin luomaan salt-state tiedostoa:

sudo nano /srv/salt/apache/init.sls

State-tiedoston voisi tehdä nopeammin ja helpommin käyttämällä komentoja, mutta parempi ja luotettavampi tapa on käyttää suoraan tiedostoja. Käytin esimerkissäni jälkimmäistä tapaa.

apache2:
 pkg.installed

/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

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

Näillä tiedoilla pitäisi Apache asentua ja userdir.conf sekä userdir.load tiedostot tulla master-koneelta.

Ennen kuin testataan poistan slave-koneelta Apachen:

sudo apt-get purge apache2

Tämän jälkeen totesin että Apachea ei ollut enää slave-koneella testaamalla 127.0.0.1 sekä etsimällä hakemistoa /etc/apache2/

Lähdin testaamaan State-tiedostoa master-koneelta

sudo salt 'miko-Labra' state.apply apache

3

Raportista ilmeni että Salt teki onnistuneesti orjakoneelle 4 muutosta.

4

Orjakoneessa on jälleen Apache ja käyttäjän kotihakemiston sivut toimivat!


Tehtävä C

Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)

Tässä tehtävässä en käynyt läpi edellisen tehtävän toimenpiteitä (Apache asennus + käyttäjähakemistojen käyttöönotto)

Katsoin ensin miten asennettiin PHP ja määritettiin käyttäjien kotisivuille sen käyttöoikeus. Mallia vilkaisin aikaisemmasta blogipostauksestani.

Manuaalinen asennus lähtee PHP:n sekä Apachen PHP-modin asennuksesta:

sudo apt-get install -y php7.0 libapache2-mod-php7.0

PHP piti saada vielä toimimaan käyttäjien kotisivuilla:

sudoedit /etc/apache2/mods-available/php7.0.conf

Tästä tiedostosta kommentoitiin ulos viimeiset viisi riviä #-merkillä.

5

Loin vielä käyttäjäkansioon php-testitiedoston jolla voin todeta toimivuuden:

sudo nano /home/miko/public_html/index.php

PHP-koodi:

<?php
phpinfo();
?>

Apache piti vielä käynnistää uudelleen tässä vaiheessa

sudo systemctl restart apache2.service

Tämän jälkeen voin siirtyä 127.0.0.1/~miko verkko-osoitteeseen

6

Näillä näkymin PHP toimii myös käyttäjien kotisivuilla!

Salt-state tiedoston sisällöksi tarvitsin pakettiasennukset, php7.0.conf-tiedoston sekä apache2-palvelun uudelleenkäynnistyksen.

Loin /srv/salt/ kansioon tälle asennukselle oman hakemiston

sudo mkdir /srv/salt/php

Loin uuden init.sls tiedoston seuraavalla sisällöllä:

php_install:
  pkg.installed:
    - pkgs:
      - php7.0
      - libapache2-mod-php

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

apache2service:
  service.running:
    - name apache2
    - watch:
      - file: /etc/apache2/mods-available/php7.0.conf

Kopioin master-koneelta löytyvän php7.0.conf -tiedoston /srv/salt/php kansion juureen. Tämän tiedoston sisältö korvaa orjakoneiden vastaavan tiedoston.

Tässä vaiheessa poistin orjakoneelta vanhat asennukset:

sudo apt-get purge -y apache2 php7.0 libapache2-mod-php7.0

Tarkistin vielä orjakoneelta että kaikki olivat poistuneet testaamalla 127.0.0.1 sekä etsimällä niiden hakemistoja.

Tämän jälkeen testasin Salt-state tiedostoja ajamalla ensin apachen asennuksen

sudo salt 'miko-Labra' state.apply apache

8

Apache asentui onnistuneesti jälleen.

Tämän jälkeen ajoin juuri tehdyn Salt-state -tiedoston:

9

PHP asentui onnistuneesti ja toimi suoraan käyttäjän kotisivuilta!


Tehtävä D

Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

Virkistelin muistiani testaamalla orjakoneella ensin manuaalisesti hosts-tiedoston muokkausta

sudoedit /etc/hosts

Lisäsin tiedostoon labra.suolakaivos.com nimen osoitteelle 127.0.0.1

10

Näin helposti se kävikin!

Poistin jälkikäteen tehdyt muutokset hosts-tiedostoon ja lähdin tekemään Salt-state -tiedostoa.

Luon tätä varten /srv/salt/ hakemistoon uuden kansion ”hostnames

Kopioin Master-koneelta /etc/hosts -tiedoston /srv/salt/hostnames/ kansioon.

Lisäsin kopioituun tiedostoon haluamani osoitteen ja nimen.

11

Master-koneella loin uuden sls-tiedoston

sudo nano /srv/salt/hostnames/init.sls

Tätä varten ei tarvitse muuta kuin ylläpitää orjakoneilta löytyvää hosts-tiedostoa, sitä varten käytin file.managed toimintoa.

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

Ajoin sls-tiedoston

sudo salt 'miko-Labra' state.apply hostnames

Vihreätä näyttää:

12

Orjakoneella testiin..

13

Ja nimi toimii jälleen!


Tehtävä E

Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.

Lähdin manuaalisesta määrittelystä liikkeelle jälleen. Orjakoneella loin /etc/skel -hakemistoon public_html kansion johon vielä lisäsin index.html testitiedoston.

Lisäsin uuden käyttäjän

sudo adduser pekka

14

Siirryin 127.0.0.1/~pekka osoitteeseen ja sieltä löytyi automaattisesti /etc/skel -hakemistoon luomani testisivu.

Poistin tekemäni muutokset ja siirryin tekemään Salt-state tiedostoa.

Tässä state-tiedostossa tarvitsin uuden kansion luomista hakemistoon. Sitä varten käytin file.directory -toimintoa jonka alle lisäsin makedirs: True

Tämän lisäksi tarvitsin edellisessä tehtävässäkin käytettyä file.managed -toimintoa index.html tiedostoa varten.

Salt-state tiedoston sisältö:

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

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

Testasin Salt-statea seuraavasti:

sudo salt 'miko-Labra' state.apply skel

15

Kivoja värejä! Siirryin orjakoneelle tekemään uutta käyttäjää nimeltä jorma.

sudo adduser jorma

Tiedot annettua tarkistin hakemistot ja testasin 127.0.0.1/~jorma ja siellähän sivut näyttäisi olevan!

16


Tehtävä F

Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa. Voit muuttaa jotain toista asetusta samoista demoneista tai valita kokonaan eri demonit.

Halusin orjakoneille sshguard demonin pyörimään jotta saisin ssh-yhteys yrityksiä kuriin. Halusin lisätä myös palvelimeni hostnamen sekä ip-osoitteen whitelistille automaattisesti.

Manuaalisesti tein tämän seuraavasti orjakoneella:

sudo apt-get install -y sshguard

Ohjelmisto toimii suoraan asennettua kuten haluan, mutta whitelistille pitää lisätä itse osoitteet.

sudoedit /etc/sshguard/whitelist

17

Tässä on kaikki tarvitut asetukset!

Poistin tekemäni asiat ja lähdin tekemään sls-tiedostoa.

sudo apt-get purge sshguard

Loin /srv/salt/ hakemistoon uuden kansion sshguard

Tein kansioon whitelist nimisen tiedoston johon lisäsin osoitetiedot.

Tämän jälkeen lähdin tekemään sls-tiedostoa:

sudo nano init.sls

Lisäsin seuraavat rivit:

sshguard:
  pkg.installed

/etc/sshguard/whitelist:
  file.managed:
    - source: salt://sshguard/whitelist

Sitten testaamaan..

sudo salt 'miko-Labra' state.apply sshguard

18

Muutokset näytti menneen läpi!

Tarkistan vielä että orjalle on saapunut whitelist..

19

Sieltähän se löytyi!


Lähteet

http://terokarvinen.com/

https://docs.saltstack.com/

http://jernvall.com/

https://www.sshguard.net/


Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

3 thoughts on “2. Viikkotehtävä (Palvelinten hallinta)

Add yours

Jätä kommentti

Luo ilmainen kotisivu tai blogi osoitteessa WordPress.com.

Ylös ↑