Viikko 4 – Palvelinten hallinta Pilarit jinjalla

Aurinko paistaa ja kaikilla on kivaa 🙂 eikö?

Tällä viikolla käydään läpi lisää jinjaa, sekä otetaan käyttöön pilarit.

Tehtävät löytyvät kurssin sivulta – Terokarvinen.com Palvelinten-Hallinta

Tässä harjoituksessa käytän salt masterina digitaloceanin palvelinta, joka toimi myös viime harjoituksessa masterina.

Ensimmäisenä minion koneena toimii läppäri, jossa pyörii livetikulta xubuntu.
Toisena minion koneena käytän, raspberry pi model 3+, jossa pyörii raspbian.

Digitaloceanissa on ubuntu palvelin 16.04.3 x64, ohje tämän laittamiseen löytyy vanhemmasta artikkelista Viikko 4, Virtuaalipalvelimen hallintaa ja testailu tai Digitaloceanin sivuilta: Initial Server Setup Digitalocean


Käytän ensimmäisessä minion koneessa xubuntu-16.04.4-desktop-amd64.iso, mikä on ajettu usbtikulle UNetBootilla

Toisessa minion koneessa toimii raspbian stretch with desktop, versio: Maaliskuu 2018, Julkaisupäivä: 2018-03-13, kernel 4.9. Mikä on siirretty/ajettu sd-kortille Etcherin avulla.

 

Specsit ensimmäisestä minion koneesta (Läppäri HP EliteBook 8440p

Tehtävät

h4

a) Opiskele yllä aikataulussa olevat artikkelit. Noissa artikkeleissa opetetaan ne asiat, joilla läksyt saa tehtyä. Tätä lukutehtävää ei tarvitse raportoida. Luettava materiaali on kunkin tapaamiskerran kohdalla.

b) Tee kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummalekin orjalle mene eri tieto. Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

c) Tee kahdella orjalla esimerkki, jossa toinen orja saa muuttujan pilarista ja toinen käyttää oletusarvoa (pillar.get). Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

 

Asennetaan tarvittavat paketit ja tehdään sitten tehtäviä.

Jos olet seurannut viikkojen tehtäviä, meillähän on asennettuna salt-master digitaloceanin palvelimella.

Salt-Masterin asennuksessa ei tarvitse ihmetellä kummempia. Ajetaan komennot.

sudo apt-get update
sudo apt-get install -y salt-master
sudo ufw allow 4505
sudo ufw allow 4506

Jolloin saamme salt-masterin asennettua palvelimelle tai tietokoneelle, johon haluat tämän masterin asentaa. Itselläni se on tuolla palvelimella, jonka osoite ei muutu.
Avasimme samalla portit 4505 ja 4506, jotta voimme vastaanottaa salt-minion koneilta avain pyyntöjä ja lähettää komentoja.


Asennetaan nyt salt-minion läppäriin, missä näitä komentoja suoritetaan. Käytän itse HP EliteBook 8440p, tarkemmat tiedot löytyvät ylempänä “Specsit ensimmäisestä minion koneesta” spoilerin alapuolelta. Tehdään nämä samat kohdat myös raspille.

sudo apt-get update
sudo apt-get install -y salt-minion

Jotta tämä minion kone saa yhteyden master koneeseen, meidän täytyy muuttaa minion konfiguraatio tiedostoa polussa /etc/salt

sudoedit /etc/salt/minion

Lisätään tänne muutama rivi

Läppäriin

master: 123.456.78.12
id: pasimo

Koska käytän livetikulta tätä xubuntua, en ole määrittänyt tiettyä tietokoneen nimeä. Laitan sen manuaalisesti minion tiedostoon “id” muuttujalla.
Raspiin olen asentanut raspbianin ja määrittänyt täällä oman nimen.

Raspiin

master: 123.456.78.12

Käynnistetään tuo salt-minion service uudelleen

sudo systemctl restart salt-minion.service

Nyt jos vaihdamme salt-master koneelle / palvelimelle, meidän pitäisi nähdä nämä tietokoneet, jotka juuri konfiguroimme.

sudo salt-key

Hyväksytään nuo molemmat komennolla:

sudo salt-key -A

Nyt meillä on yhteys noihin minioneihin master koneelta ja voimme lähettää komentoja niihin..

Olin jo aikaisemmin hyväksynyt jekkupi:n avaimen, joten hyväksyn tässä vain pasimon avaimen.

Mennään tehtäviin…


B) Tehtävän tarkoituksena on tehdä kahdella orjalla esimerkki, missä orjat saavat eri muuttujan pilarista.

 

Ajattelin tässä käyttää esimerkkinä apache web palvelinta, jossa laitan molemmille minioneille eri portti numeron apachen palvelimelle. Esimerkkinä localhost:8888 tai localhost:8080

 

Jos olet seurannut tätä blogia, olemme luoneet “salt” kansion /srv/:n alapuolelle ja tehneet tänne konfiguraatioita millä salt toimii. Sovellan tässä tehtävässä viimekerran tehtäviä, sekä tunnilla opittuja asioita.

Luodaan tuonne tällä kertaa kansio “pilariapache”

sudo mkdir pilariapache

Tehdään tänne tiedostot “init.sls”, sekä “000-default.conf” ja “ports.conf” mitkä voimme hakea apachen asennus kansiosta.

Voit siis asentaa apachen valmiiksi, jotta saamme nämä normaalit konfiguraatiot kopioitua.

Kopioidaan “000-default.conf” tiedosto.

sudo cp /etc/apache2/sites-available/000-default.conf

sekä “ports.conf” tiedosto.

sudo cp /etc/apache2/ports.conf

Luodaan tiedosto “init.sls” ja lisätään sinne seuraavat rivit

init.sls konfiguraatio

apache2:
 pkg.installed

/etc/apache2/ports.conf:
  file.managed:
    - source: salt://pilariapache/ports.conf
    - template: jinja
    - context:
      port: {{ pillar['port'] }}
/etc/apache2/sites-available/000-default.conf:
  file.managed:
    - source: salt://pilariapache/000-default.conf
    - template: jinja
    - context:
      port: {{ pillar['port'] }}

apache2service:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/ports.conf
      - file: /etc/apache2/sites-available/000-default.conf

Konfiguraatiossa siis asennetaan apache2 paketti. Korvataan tiedostot “ports.conf” ja “000-default.conf”, itse määritetyillä konfiguraatioilla “/srv/salt/pilariapache” kansiosta.

Tämän takia kopioimme nämä tiedostot, jotta meidän ei tarvitsisi muuttaa kuin paria riviä. Muuten joutuisimme kirjoittamaan kokohomman uudelleen. Katsotaan kohta mitä näihin tiedostoihin muutetaan.

Lopuksi vielä käynnistetään apachen palvelu uudelleen, jotta nämä uudet configuraatiot tulevat voimaan.


Muokataan tiedostoa “000-default.conf”, mikä on “/srv/salt/pilariapache” kansiossa.

000-default.conf konfiguraatio

<VirtualHost *:{{ port }}>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Vaihdetaan “Virtualhost *:80” portti -> “{{ port }}”, jotta jinja osaa kirjoittaa tähän tarvittavan muutoksen.


Muokataan ports.conf tiedostoa

ports.conf konfiguraatio

Listen {{ port }}

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Tehdään tässä sama, “Listen 80” vaihdetaan “{{ port }}”, jotta jinja osaa kirjoittaa tähän tarvittavan muutoksen.


Koska käytämme pilari muuttujaa, meidän täytyy nyt luoda kansio “pillar” kansioon “/srv/”

cd /srv/
sudo mkdir pillar

Luodaan tänne kansio “apache” sekä tiedostot “jekkupi.sls” ja “pasimo.sls”

sudo mkdir apache
cd apache/
sudoedit jekkupi.sls
sudoedit pasimo.sls

“jekkupi.sls” tiedostoon kirjoitetaan

port: "9090"

“pasimo.sls” tiedostoon kirjoitetaan

port: "8888"

Näihin tiedostoihin määritetään muuttuja, minkä jinja hakee täältä pilari kansiosta. Tämä me määriteltiin “/srv/salt/pilariapache/init.sls” tiedostossa

/srv/salt/pilariapache/init.sls

/etc/apache2/ports.conf:
  file.managed:
    - source: salt://pilariapache/ports.conf
    - template: jinja
    - context:
      port: {{ pillar['port'] }}
/etc/apache2/sites-available/000-default.conf:
  file.managed:
    - source: salt://pilariapache/000-default.conf
    - template: jinja
    - context:
      port: {{ pillar['port'] }}

 


Nyt meidän täytyy luoda enään “Top.sls” tiedostot “/srv/salt” ja “/srv/pillar/” kansioihin, jotta saamme homman rullaamaan.

 

Luodaan “top.sls” tiedosto “/srv/pillar” kansion juureen. Sekä lisätään kyseinen konfiguraatio.

base:
  jekkupi:
    - apache/jekkupi
  pasimo:
    - apache/pasimo

Luodaan toinen “top.sls” tiedosto “/srv/salt” kansion juureen.

base:
  'jekkupi':
    - pilariapache
  'pasimo':
    - pilariapache

Tässä konfiguraatiossa ajetaan “init.sls” tiedosto, mikä löytyy tuon “pilariapache” kansion alta.


Voimme nyt ajaa tämän highstate komennon ja katsoa asentuuko ohjelmat onnistuneesti.

sudo salt '*' state.highstate

 

Pasimo minionille kaikki asentui onnistuneesti ja portti vaihtui

Tilanne ennen asennusta.

Tilanne komennon annon jälkeen.



Huomataan, että vakio apachen portissa ei ole ketään, vaan portti on muuttunut 8888


Jekkupi minionille kaikki asentui onnistuneesti ja portti vaihtui

 

Huomataan, että vakio portissa ei ole ketään kotona. Osoite muuttunut porttiin 9090

 

Tehtävä B valmis.

 

 

 

C) Tehtävän tarkoituksena on tehdä kahdella orjalla esimerkki, missä toinen orja saa muuttujan pilarista ja toinen käyttää oletusarvoa.

Muokataan samantien ylempää tehtävää tähän tehtävään.

Jotta saataisiin oletusarvo, täytyy meidän muokata “init.sls” tiedostosta contextia, vähän erinnäköiseksi.
Tämä “init.sls” tiedosto sijaitsee “/srv/salt/pilariapache” kansiossa.

Tästä
    - context:
      port: {{ pillar['port'] }}

Tähän

    - context:
      port: {{ pillar.get('port', 80) }}

Huom sulkujen vaihto!

Meidän täytyy myös muokata “/srv/pillar/apache” kansiosta, vaikka “jekkupi.sls” tyhjäksi. Eli ei jätetä mitään tähän tiedostoon.
Sekä vaihdetaan vaikka “pasimo.sls” porttinumero joksikin muuksi.

Ajetaan komento

sudo salt '*' state.highstate

 

Huomaamme, että pasimo minionin apachen ip osoite vaihtuu

 

Sekä jekkupi minion saa tuon default port osoitteen.

 

Tehtävä C valmis


 

 

Toivottavasti jaksoit seurata loppuun asti! Mielenkiintoinen tämä pilari ja miten se toimii.

Nähdään taas ensikerralla

-JJ

One thought on “Viikko 4 – Palvelinten hallinta Pilarit jinjalla

Leave a Reply