Palvelinten hallinta h2

Alkuperäinen päivämäärä 8.4.2018

H2

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h2

http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example

https://github.com/saltstack/salt/wiki/Cheat-Sheet suosittelen tätä cheat sheettiä kaikille saltista kiinnostuneille, tiivistää tehokkaasti kaikki yksinkertaiset asiat, ja mukana myös muuta jännää.

Harjoituksissa on tehty virtuaalipalvelimesta master, ja koulukannettavasta minion. Palvelimella on käytössä ubuntu 16.04, kannettavalla xubuntu 16.04 jota käytetään livetikulta. Virtuaalipalvelinta hallitaan SSH-yhteydellä.

b), c) ja e) Laita käyttäjien kotisivut toimimaan Apachella, laita PHP toimimaan käyttäjien kotisivuilla, tee tila, joka laittaa esimerkkisivun uusille käyttäjille.

Ensimmäisenä tehtävänä on saada käyttäjien kotisivut toimimaan automaattisesti saltin tilan kautta.

Lähdetään tilanteesta, missä tarvittavat ohjelmistot, salt-minion ja salt-master, ovat jo asennettu tietokoneille, joita halutaan hallita, ja että hallintayhteys on jo muodostettu.

Hallintatietokoneelle tehdään tarvittavat kansion apachen asennusta varten:

$ sudo mkdir /srv/salt/apache

Tehdään samalla esimerkkikotisivu, joka kopioidaan vapaavalintaisella tekstillä:

$ sudo nano /srv/salt/apache/index.php

Tehdään apache kansioon tiedosto init.sls:

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

Asetetaan tila niin, että se asentaa apache2, php-moduulin, sekä luo esimerkkisivun. Lisäksi tila muokkaa skeliä niin, että uudet käyttäjät saavat käyttäjäsivun valmiiksi ja pystyvät käyttämään PHP:tä halutessaan. HUOM. Koko teksti kuuluu yhteen pötköön, välissä olevat kommentit selittävät sen toimintaa, eivätkä tarkoita ylimääräisiä välejä missään.

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

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

/var/www/html/index.html:
  file:
    - absent

Tämä osa varmistaa apachen asennuksen, ja luo esimerkkisivun, samalla poistaen index.html tiedoston, minkä tilalle .php päätteinen tulee.

/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

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

Tämä aktivoi käyttäjähakemistomoduulin, sekä PHP:n käyttäjähakemistoissa.

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

Lopuksi automatisoidaan käyttäjähakemistojen tekeminen siten, että käyttäjille luodaan valmiiksi sivu skelin kautta. Apache uudelleenkäynnistetään myöhemmässä vaiheessa.

HUOM! YAMLissa sisennykset toimivat välilyönneillä, joten ole tarkkana, että sisennykset säilyvät mikäli kopioit suoraan. Sisennys = 2 väliä.

Luodaan /srv/salt kansioon tiedosto top.sls:

base:
  '*':
    - apache

Tila ajetaan minionille komennolla:

$ sudo salt ‘*’ state.highstate

Jos kaikki menee oikein, esimerkkisivun tulisi näkyä, kun minionin selaimeen laitetaan localhost.

d) Rakenna tila, joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen.

Luodaan aluksi kansio /srv/salt/hosting, johon tiedosto init.sls:

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

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

/var/www/html/example/index.php:
  file.managed: 
    - makedirs: True
    - source: salt://hosting/index.php

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

Huom. Kokeillessani koko settiä lopussa, huomasin, että edelleenkään www.example.com ei ohjannut oikeaan sivuun. En löytänyt nopeilla hauilla mitään ratkaisua, mutta onneksi ratkaisu löytyi Axel Rusaselta: Apache2.service pitää tietysti käynnistää uudestaan, kun muokataan enablettuja sivuja… Tässä komento, millä se tehdään, mikä lisätään myöhempänä.

apache2-restart:
  cmd.run:
    - name: 'sudo systemctl restart apache2.service'

Tehdään hosting kansioon index.php, joka lisätään minionille example kansioon yllä olevassa tilassa:

$ sudo nano index.php

Kopioidaan default sivu hosting kansioon, josta muokataan www.example.com.conf

$ sudo cp /etc/apache2/sites-available/000-default.conf /srv/salt/hosting/
$ sudo mv /srv/salt/hosting/000-default.conf /srv/salt/hosting/www.example.com.conf

Tiedoston sisältä muokataan ServerName, ServerAlias ja DocumentRoot seuraavanlaiseksi:

ServerName www.example.com

ServerAlias example.com

DocumentRoot /var/www/html/example/index.php

Seuraavaksi luodaan oma versio hosts –tiedostosta joka kopioidaan minionille:

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

Muokataan tiedostoon uusi osoite:

$ sudo nano hosts

Lisätään rivin 127.0.0.1 localhost alle rivit

127.0.0.1 www.example.com
127.0.0.1 example.com

Lopuksi muokataan top.sls ottamaan hosting kansio huomioon:

$ sudo nano /srv/salt/top.sls

Lisätään apachen alle hosting:

base:
  '*':
    - apache
    - hosting

Nyt kaikki asetukset on tehty, kokeillaan ajoa:

$ sudo salt ‘*’ state.highstate

Komento menee onnistuneesti läpi. Nimipalvelimen toimintaa voidaan kokeilla kirjoittamalla minionin selaimen hakukenttään www.example.com tai example.com, jolloin pitäisi näkyä eri teksti. Tässä tapauksessa sekin toimii.

Kokeillaan vielä lopuksi käynnistää kannettava uudestaan tikulta, jotta voidaan kokeilla tilan asennusta puhtaalta pöydältä minioniksi lisäämisen jälkeen.

Jotta säästytään avainsotkuilta poistetaan aikaisempi minionin avain:

$ sudo salt-key -d minion-id

Hyväksytään minion uusiksi, ja syötetään ainoastaan komento:

$ sudo salt ‘*’ state.highstate.

Ajamisessa kestää vähän kauemmin, ja selviää, että nimipalvelin ei hoida tehtäväänsä. Tämä korjaantuu, kun lisätään ../hosting/init.sls tiedoston loppuun seuraava:

apache2-restart:
  cmd.run:
    - name: 'sudo systemctl restart apache2.service'

Tällä muutoksella tila toimii. Cmd.run on tuskin kuitenkaan suositeltava tapa, mutta mennään sillä, kun se kerta toimii.

f) Asennetaan minionille sysstat, kytketään se päälle ja asetetaan sen päivitystahti minuutiksi. Vastaus olettaa, että sysstat on asennettu masterille, jolloinka haluttavat tiedostot löytyvät masterilta.

Aluksi tehdään kansio /srv/salt/sysstat. Kopioidaan sinne sisään sysstatin asetustiedosto:

$ sudo cp /etc/default/sysstat /srv/salt/sysstat/sysstat

Kopioidaan samalla ajastuksen konfigurointitiedosto, mutta laitetaan sen perään numero 2, jottei aikaisempi tiedosto ylikirjoitu:

$ sudo cp /etc/cron.d/sysstat /srv/salt/sysstat/sysstat2

EDIT 16.4.: Korjasin tiedostopolun kopiointeihin, kiitos Axel. https://axellinux.wordpress.com/

Tehdään tiedostoihin tarvittavat muutokset, sysstatiin muutetaan seuraava:

ENABLED=”true”

Seuraavaan, sysstat2, muutetaan 5-55/10 tekstiksi */1, lopullinen rivi on siis:

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

Seuraavaksi luodaan sysstat kansioon init.sls:

sysstat:
  pkg.installed

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

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

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

EDIT 16.4.: Lisäsin tilaan watchin, jotta sysstat.service käynnistyy uudestaan automaattisesti, kiitos Axel. https://axellinux.wordpress.com/

Lisätään tehty tila top.sls tiedostoon:

base:
  '*':
    - apache
    - hosting
    - sysstat

Sitten voidaankin lähteä ajamaan tilaa:

$ sudo salt ‘*’ state.highstate

Jos tila halutaan ajaa yksinään ilman highstatea, voidaan käyttää komentoa:

$ sudo salt '*' state.apply sysstat

Tila menee läpi, eli sysstat on konfiguroitu onnistuneesti oikein tilan kautta.

Sysstatin keräämiä tietoja voidaan selata komennolla

$ sar -A

 

This entry was posted in Uncategorised. Bookmark the permalink.

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.