Palvelinten hallinta – harjoitus 2

Harjoitustehtävien tekemistä kurssille palvelinten hallinta. Varsinaiset tehtävät ovat täällä.

Tehtävät on tehty omalla  Hewlett-Packard kotikoneella, jossa Ubuntu 18.04. Muistia 6 GB ja CPU on Intel i5 M 450 @ 2.40GHz.

Salt ympäristön asennus

Ympäristö oli asennettu jo aiemmin, tässä vielä lyhyesti Salt Master ja Slave asennus. Asennusohjeet on saatu täältä.

Master asennus

$ sudo apt-get update
$ sudo apt-get -y install salt-master
$ hostname -I
192.168.10.52

Orjakoneen asennus

$ sudo apt-get -y install salt-minion

Määritellään orjakoneelle, missä master palvelin sijaitsee.

$ sudoedit /etc/salt/minion
master: 192.168.10.52
id: slave1

Otetaan asetus käytöön

$ sudo systemctl restart salt-minion.service

Hyväksytään orjakone msterkoneella

$ sudo salt-key -A

Unaccepted Keys:
slave1
Proceed? [n/Y]
Key for minion slave1 accepted.

Testaus

juha@juha-HP:~$ sudo salt '*' cmd.run whoami
[sudo] password for juha: 
slave1:
root

1. Laita käyttäjien kotisivut toimimaan Apachella

Tehdään asennus ensin käsin, eli asennataan Apache ja sen jälkeen konfiguroidaan kotisivut toimimaan käyttäjien omista kotihakemistoista.

Lähteenä ovat kurssin ohjeet.

Manuaalinen asennus

Koska koneella oli jo Apache, poistan sen asennuksen ensin. Poistaminen vaatii sen selvittämistä, mistä paketeista (riippuvuuksia) Apache2:lla on.

Yritin saada niitä elvilel komennolla

$ apt-cache show apache2

Ja löytyi rivit:

Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.29-1ubuntu4), apache2-utils (= 2.4.29-1ubuntu4), apache2-data (= 2.4.29-1ubuntu4), perl:any
....
Conflicts: apache2.2-bin, apache2.2-common
Replaces: apache2.2-bin, apache2.2-common
Poistin sitten seuraavat paketit
$ sudo apt-get purge apache2 apache2-utils apache2-bin apache2.2-common

Kokeiltu tämän jälkeen selaimella localhost, ja tulee “Unable to connect” virheilmoitus. Yllä oelva poisto ei kuitenkaan poista kaikkea, vielä jäi esim. oletussivu /var/www/html/index.html

Apachen asennus koneelle

$ sudo apt-get install apache2

Tämän jälkeen pitäisi aueta Apache oletusaloitussivu, mutta poisto ei ollut poistanut aivan kaikkea Apache dataa. Jatkoin kuitenkin harjoituksen tekemistä.

Muutetaan seuraavaksi oletussivun tekstit.

$ echo Moi | sudo tee sudoedit /var/www/html/index.htm

Käyttäjien kotihakemistosta ei vielä voi näyttää Web-sivuja. Joten luodaan public_html hakemisto käyttäjälle.

$ pwd
/home/juha$ mkdir public_html$ nano index.html
Tämä on xubuntun kotihakemisto

Kytketään kotisivut toimimaan ja tehdään apache restart

$ sudo a2enmod userdir
$ sudo systemctl restart apache2

Testataan

Seuraavaksi on siivottava apache2 asennus pois koneelta, jotta päästään kokeilemaan Apache2 asennusta ja kotisivujen sallimista Saltin avulla.

$ sudo apt-get purge apache2 apache2-utils apache2-bin apache2.2-common

Masterin asennus ja käyttäjän kotisivut toimimaan

Käytetään cmd.run komentoa

Tehdään tila Apachen asentamiseksi, ja testataan askel kerrallaan.

$ sumkdir /do srv/salt/apache
$ sudoedit /srv/salt/apache/init.sls

apache2:
  pkg.installed

Ajetaan Salt tila

$ sudo salt '*' state.apply apache

Testataan orjakoneella selaimella localhost, ja apache toimii. Selaimelle tulostuu Moi, kuten index.html on kirjoitettu.

Seuraavaksi muokataan Apachen aloitussivu halutuksi. Tehdään oma index.html tiedosto. Lisätään init.sls tiedostoon seuraavat rivit.

$ echo Terve Salt |sudo tee index.html
$ sudoedit /srv/salt/apache/init.sls

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

apache2service
  service.running: 
    - watch: 
      - file: /etc/


Kokeillaan

$ sudo salt '*' state.apply apache

Testataan selaimella localhost ja toimii.

Seuraavaksi tehdään tila, jolla sallitaan käyttäjien kotisivut. Ensimmäinen komento ajaa a2enmod userdir ja toinen tekee apachen restartin kun komento ajetaan.

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

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

Ajetaan komento

$ sudo salt '*' state.apply apache

Testataan ja toimii.

 

Tehdään sama symlinkin / tiedostojen avulla

Malli otettu Teron esimerkistä.

Muokataan init.sls tilaa seuraavaksi.

apache2:
 pkg.installed

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

/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

Poistetaan apachen asennus.

$ sudo apt-get purge apache2 apache2-utils apache2-bin apache2.2-common

Ajetaan tila

$ sudo salt '*' state.apply apache

Testataan ja toimii.

2. Laita PHP toimimaan käyttäjien kotisivuilla

Tehdään ensin käsin, ja sitten Saltilla.

Manuaalinen asennus

$ sudo apt-get install libapache2-mod-php

Testisivun tekeminen

$ nano index.php
<!DocTYPE html>
<HTML lang=”en”>
<HEAD>
<meta charset=”utf-8″ />
<TITLE>kotisivu</TITLE>
</HEAD>
<BODY>
Hello World!
<?php
print (2+2);
?>
</BODY>
</HTML>

PHP sallitaan käyttäjille muokkaamalla konfigurointitiedostoa:  /etc/apache2/mods-available/php7.2.conf. Komentoidaan <IfModule> osuus pois.

Apachen restart

$ sudo systemctl restart apache2

Testataan ja toimii.

 PHP asennus Saltilla

Tarvitaan /etc/apache2/mods-available/php7.2.conf tiedosto malliksi, ja kopioidaan se Salt tilan käyttöön.

Selvitetään mitä PHP manuaaliasennuksessa tapahtui ts. mitä tiedostoja muutettiin. Paketin asennus siis tekee tarvittavat symlinkit.

find -printf "%T+ %p\n"|sort
2018-11-03+15:52:46.1631412840 ./php7.2.conf 2018-11-03+15:52:46.1631412840 ./php7.2.load

Poistetaan libapache2-mod-php, jotta voidaan testata. Sen poistaminen ei kuitenkaan riitä, symboliset linkit jäävät jäljelle. Eli poistetaan Apache kokonaan.

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

Asennetaan Apache

$ sudo salt '*' state.apply apache

Tehdään uusi tila

libapache2-mod-php:
  pkg.installed

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

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

Ajetaan PHP tila

$ sudo salt '*' state.apply php

Testataan ja toimii.

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

Virtuaalihostia varten tarvitaan tiedostot.

/etc/hosts
/etc/apache2/sites-available/000-default.conf

Kopioidaan ne hakemistoon

/srv/salt/virtual

Muokataan tiedostoihin tarvittavat asetukset.

Tiedostoon hosts lisätään rivi

127.0.0.1 juha.example.com

Tiedosto 000-default.conf uudelleen nimetään juha.example.com ja sisältö

$ sudoedit /etc/apache2/sites-available/juha.example.com.conf

<VirtualHost *:80>

ServerName juha.example.com
ServerAlias www.juha.example.com
DocumentRoot /home/juha/public_html

<Directory /home/juha/public_html>

Require all granted

</Directory>

</VirtualHost>

Virtuaalihostin asennus tehdään komennolla, vaatii Apachen restartin.

$ sudo a2ensite invis.example.com
$ sudo systemctl restart apache2

Tila nimipohjaisen virtuaalipalvelimen hallintaan

$ sudoedit /srv/salt/virtual/init.sls

apache2:
  pkg.installed

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

/etc/apache2/sites-available/juha.example.com.conf:
  file.managed:
    - source: salt://virtual/juha.example.com.conf

a2ensite juha.example.com.conf:
  cmd.run

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

Ajetaan tila

$ sudo salt '*' state.apply virtual

Toimii.

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

Laitetaan esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti adduser komennolla käyttäjiä luodessa.

Manuaalisesti tehtynä.

$ cd /etc/skel
$ sudoedit mkdir public_html
$ cd public_html
$ sudoedit index.html

<!DocTYPE html>
<HTML lang=”en”>
<HEAD>
<meta charset=”utf-8″ />
<TITLE>kotisivu</TITLE>
</HEAD>
<BODY>
Hello World!
</BODY>
</HTML>

Master osuus

Luodaan index.html tiedosto kansioon /srv/salt/user. Sisältö edellisessä kappaleessa.

$ sudoedit /srv/salt/user

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

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

Ajetaan tila

$ sudo salt '*' state.apply user

Testataan luomalla uusi käyttäjä, ja surffartaan hänen kotisivulleen.

$ sudo adduser matti

Selaimessa näkyy oikea teksti.

5. Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla

Muutetaan tässä harjoituksessa SSH-demonin asetuksia siten, että banner tekstinä tulostuu “Tervetuloa”

Mallia otettu täällä.

Tila ssh:n hallintaan

openssh-server:
 pkg.installed

/etc/ssh/sshd_config:
 file.managed:
   - source: salt://sshd_config

sshd:
 service.running:
   - watch:
     - file: /etc/ssh/sshd_config

Kopioidaan sshd_config tiedosto hakemistoon /srv/salt/ssh.

$ sudo cp  /etc/ssh/sshd_config /srv/salt/ssh

Tehdään banner tiedosto

$ sudoedit /etc/ssh/sshd-banner

Tervetuloa

Muokataan sshd_config tiedostoa

$ sudoedit /srv/salt/ssh/sshd_config
Lisätään rivi
Banner /etc/ssh/sshd-banner

Ajetaan tila

$ sudo salt '*' state.apply ssh

Testataan ssh:ta

Leave a Reply

Your email address will not be published. Required fields are marked *