Tämä harjoitus on siirretty vanhoilta kotisivuiltani tänne. Alkuperäinen julkaisuajankohta oli 1.4.2018.

Tehtävät perustuvat tähän Tero Karvisen kurssiin.

Tehtävissä oletetaan, että salt-master ja salt-minion ovat asennettuina ja valmiina käyttöön. Käyttöönotto ensimmäisessä harjoituksessa. Teen itse harjoitukset siten, että molemmat ohjelmat ovat asennettuna samalle tietokoneelle.

Käytin tehtävissä apuna Miikka Valtosen vinkkaamana tätä Salt Cheat Sheetiä.

b) Laita käyttäjien kotisivut toimimaan Apachella.

Käyttäjien kotisivut saa Apachessa toimimaan käsin komennolla “sudo a2enmod userdir”, jonka jälkeen tulee Apache-demoni käynnistää vielä uudelleen. Tämän jälkeen voi käyttäjien kotihakemistoihin luoda public_html-kansion, ja sinne index.html/index.php -tiedoston.

Ohje. Saltin tiloilla käyttäjien kotisivut saadaan otettua käyttöön luomalla /srv/salt/ -kansioon apache-nimisen kansion (selkeyden ylläpitämiseksi), jonne luodaan init.sls-niminen tilatiedosto. init.sls:ään kirjoitetaan seuraavanlainen koodinpätkä, välilyönneillä tehtyine sisennyksineen:

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

Nyt kun tila suoritetaan kaikilla orjilla komennolla “sudo salt ‘*’ state.apply apache”, asentuu Apache jos sitä ei ole vielä asennettu, käyttäjien kotihakemistot otetaan käyttöön jos näin ei ole, ja käynnistetään Apache-demoni uudestaan, jos userdir.load- tai userdir.conf-tiedostoissa on tapahtunut muutoksia.

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

PHP:tä varten tulee asentaa libapache2-mod-php -paketti, jonka jälkeen /etc/apache2/mods-enabled/php7.0.conf -tiedostosta tulee kommentoida rivit “<IfModule mod_userdir.c>”stä “</IfModule>”:een, ja käynnistää Apache-demoni uudestaan. Tämän jälkeen PHP-koodi toimii käyttäjien kotihakemistoissa.

Saltin tiloilla saadaksemme saman aikaiseksi muokataan äsköistä init.sls:ää seuraavanlaiseksi:

apache2:
  pkg.installed:
    - pkgs:
    - apache2
    - libapache2-mod-php

/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
      - file: /etc/apache2/mods-enabled/php7.0.conf

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

Kopioidaan vielä /etc/apache2/mods-enabled/php7.0.conf -tiedosto /srv/salt/apache -kansioon. Huomioi, että tässä kopioidussa versiossa tulee olla aiemmin mainitut rivit kommentoituna jotta PHP:n käyttöönotto käyttäjien kotihakemistoissa toimii. Nyt meidän init.sls -tiedosto asentaa myös PHP-modin Apacheen, pitää oikean PHP-konffaustiedoston sellaisena kuin sen kopio on /srv/salt/apache:ssa, ja käynnistää Apachen uudestaan, jos kyseiseen konffaustiedostoon tehdään muutoksia.

Nyt kun init-tila ajetaan, tulee PHP käyttöön käyttäjien kotihakemistoissa.

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

Ohjeet. Käsin virtual hostin tekeminen aloitetaan luomalla uusi VirtualHost-tiedosto kansioon /etc/apache2/sites-available/. example.com.conf-niminen VirtualHost-tiedosto voisi näyttää esimerkiksi tältä:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>

Tämän jälkeen uusi VirtualHost otetaan käyttöön komennolla “sudo a2ensite example.com.conf”. Nimipalvelun puuttuessa lisättäisiin vielä /etc/hosts-tiedostoon rivit “127.0.0.1 example.com” ja “127.0.0.1 www.example.com”, jotta voidaan testata toimivuutta paikallisesti. IP-osoitteen paikalle voi myös laittaa hostname -I -komennolla löytyvän julkisen IP-osoitteen. Lopuksi vielä käynnistetään Apache-demoni uudestaan.

Luodaan siis /srv/salt/virtualhost -kansio, jonne tehdään init.sls-tilatiedosto. Tehdään init.sls:n sisällöstä seuraavanlainen:

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

/etc/apache2/sites-enabled/example.com.conf:
  file.symlink:
    - target: ../sites-available/example.com.conf

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

Tehdään vielä VirtualHostista master-kopio /srv/salt/virtualhost -kansioon. Nyt kun suoritetaan kansion virtualhost tilat komennolla “sudo salt ‘*’ state.apply virtualhost”, kopioidaan master-kopio virtualhost-tiedostosta Apachen sites-available kansioon, ja sieltä symlinkillä tiedosto kopioidaan sites-enablediin, eli otetaan virtualhosti käyttöön. Apache-demoni uudelleenkäynnistetään jos kummankaan kansion, sites-availabledin tai sites-enabledin, example.com.conf tiedosto on muuttunut.

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.

Tässä tehtävässä voisi käyttää jo aiemmin luotua Apache-tilaa, mutta loin uuden tilan selvyyden vuoksi.

Luodaan kansio /srv/salt/homepage, jonne teemme esimerkkikotisivun index.php. Esimerkkisivulla voi lukea esimerkiksi “Welcome to my placeholder homepage. PHP test: <?php print(2+2) ?>”.

Sitten tehdään tila /srv/salt/homepage/init.sls, jonne kirjoitamme

/etc/skel/public_html/index.php:
  file:
    - managed
    - source: salt://homepage/index.php
    - makedirs: true

Nyt kun tila ajetaan komennolla “sudo salt ‘*’ state.apply homepage”, tehdään /etc/skel/public_html/index.php -esimerkkisivu sisältöineen. Kun uusi käyttäjä luodaan, esimerkkisivu tulee automaattisesti heidän kotihakemistoonsa.

Lisätään kaikki kolme tilaa /srv/salt/top.sls -tiedostoon, jotta ne voidaan kaikki suorittaa samalla kertaa käyttämällä komentoa “sudo salt ‘*’ state.highstate”. top.sls näyttää siis tältä:

base:
  '*':
    - apache
    - virtualhost
    - homepage

Testatakseni latasin toiselle tietokoneelle (livetikulla) salt-minionin, asetin masteriksi pöytätietokoneeni (jolla tein nämä tehtävät) ja käynnistin salt-minionin uudestaan. Hyväksyin avaimen pöytätietokoneellani, ja suoritin komennon “sudo salt ‘*’ state.highstate”. Hetken kuluttua tulivat muutokset valmiiksi ja hip hurraa! Yhtäkään virheilmoitusta ei salt antanut.

Menin vielä uudelle minionille säätämään hosts-tiedostoon example.comin osoittamaan 127.0.0.1:een ja käynnistin Apachen uudestaan. Nyt kun loin uuden käyttäjän “testi” adduser-komennolla ja menin osoitteeseen example.com/~testi, oli siellä käyttäjän kotisivut, joissa PHP toimii! VirtualHostkin löytyy ja on toiminnassa.

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.

Päätin ottaa sysstatin käyttöön Saltin tilojen avulla.

Luodaan /srv/salt/sysstat -kansio, jonne tilatiedosto init.sls:

sysstat:
  pkg.installed

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

/etc/cron.d/sysstat:
  file:
    - managed
    - source: salt://sysstat/cron.d

sysstatservice:
  service.running:
    - name: sysstat
    - watch:
      - file: /etc/default/sysstat
      - file: /etc/cron.d/sysstat

Kopioin /etc/default/sysstat -tiedoston /srv/salt/sysstat -kansioon nimellä “default”, ja /etc/cron.d/sysstati:in samaan kansioon nimellä “cron.d”. Muokkasin default-tiedostoon ENABLED=”false” sijaan ENABLED=”true”. cron.d-tiedostoon muokkasin rivin

5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

seuraavanlaiseksi:

*/2 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

Nyt kun tila ajetaan komennolla “sudo salt ‘*’ state.apply sysstat”, asennetaan sysstat jos se ei ole vielä asennettuna, ja tarvittaviin tiedostoihin tehdään muutokset, jotta tietojenkeruu laitetaan päälle, ja keruuintervalli muutetaan kahteen minuuttiin. Lopuksi vielä sysstat käynnistetään uudelleen jos kyseisiin tiedostoihin on tullut muutoksia.


Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.