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.
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
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.
<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
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”