3. Viikkotehtävä (Palvelinten hallinta)

Aiheina tällä kertaa Jinjalla tehtävät SLS-tilatiedostot, muuttujat, for-in -silmukat, muotit ja lopuksi kokeillaan toisen opiskelijan tekemää Salt-tilaa.

Tehtävät ovat osana Tero Karvisen palvelinten hallinta -kurssia. Tehtävänannot löytyvät Teron kotisivuilta.

Käytin tehtävissä DigitalOceanista vuokrattua virtuaalipalvelinta (Ubuntu 16.04.3 x64) joka toimii Salt-masterina.

Salt-minion koneina käytän VirtualBoxia ja ThinkPad 13 läppäriäni joissa molemmissa asennettuna Xubuntu (Xubuntu 16.04.3 x64)

Tehtävä B

Tiedosto muotista: tee yksinkertainen SLS-tilatiedosto, joka laittaa muuttujan tiedostoon. Käytä jinjan kontekstimuuttujaa (template: jinja, context: …).

Halusin luoda jokaiselle orjakoneelle yksilöllisen message of the day -viestin, josta ilmenisi koneen slave id sekä prosessorin malli.

Itse motd-tiedosto on hyvin yksinkertaista luoda. Tein motd nimisen tiedoston /etc/ -hakemistoon ja lisäsin sisällön jonka halusin näkyvän SSH:lla kirjauduttuessa.

1

Seuraavaksi lähdin etsimään salt-grains komentoja joilla saan selville yksilölliset tiedot orjakoneista.

Siirryin salt-masterille vilkaisemaan mitä kaikkia grains-tietoja voin orjista kaivaa.

sudo salt 'slave1' grains.ls

2

Tarvitsemani tiedot löytynee yllä merkityistä cpu_model ja id komennoista. Testasin seuraavasti:

3

Komennot tuottivat toivotut tiedot!

Näillä tiedoilla lähdin rakentamaan sls-tilatiedostoa!

Loin /srv/salt -hakemistoon motd -kansion, johon lisäsin motd sekä init.sls tiedostot.

Tilatiedoston rakensin seuraavasti:

/etc/motd:
  file.managed:
    - source: salt://motd/motd
    - template: jinja

Määritin tilatiedoston käyttämään Jinja-templatea, jotta salt voi hyödyntää Jinja-funktioita tiedostoja luodessa.

Itse motd-tiedostoon halusin yksinkertaisen tervehdyksen, orjan nimen sekä orjakoneen prosessorin mallin.

Muotti näytti lopulta tältä:

Tervetuloa! Olet orja nimeltä {{ grains['id'] }}

Prosessorin malli: {{ grains['cpu_model'] }}

Poistin alussa luodun motd-tiedoston orjakoneelta, ja testasin tilatiedostoa kahdella orjakoneella jotta näkisin että tiedot varmasti ovat yksilöllisiä.

sudo salt '*' state.apply motd

4

Tiedostot ilmestyivät orjakoneille. Tarkistin vielä ssh-yhteydellä että motd-sanomassa näkyi toivotut tiedot.

5
VirtualBox-orjakone
6
ThinkPad-orjakone

Orjakoneet saivat onnistuneesti yksilöllisen motd-tiedoston.


Tehtävä C

SLS tilaa Jinjalla: tee yksinkertainen SLS-tilatiedosto, joka käyttää for-in -silmukaa. Voit esimerkiksi tehdä kolme tiedostoa silmukalla. (Tässä tehtävässä siis käytetään jinjaa vain SLS-tiedoston sisällä, älä sotke samaan esimerkkiin tekstitiedostojen sisällön muuttamista.)

Halusin lähteä tekemään kolmen eri virtuaalipalvelimen asetustiedostoja. Loin /srv/salt/multi -hakemiston. Lisäsin hakemistoon tiedostot init.sls sekä oletus.conf.

Haluan että tilatiedosto luo orjakoneille web.conf, db.conf sekä lab.conf asetustiedostot.

sudoedit /srv/salt/multi/init.sls

Käytin apuna Tero Karvisen esimerkkiä.

{% for file in ['web', 'db', 'lab'] %}
/var/www/slave/{{ file }}.conf:
  file.managed:
    - source: salt:/multi/oletus.conf
    - makedirs: True
    - template: jinja
    - context:
      file: {{ file }}
      id: {{ grains['id'] }}
{% endfor %}

Lisäsin init.sls tiedostoon context-määrityksien alle id: {{ grains[’id’] }} sillä haluan hyödyntää myöhemmin orjakoneiden tunnusta tiedostojen sisällössä.

Testasin tässä vaiheessa onnistuuko tiedostojen luonti

sudo salt 'slave1' state.apply multi

11

Tiedostot luotiin onnistuneesti. Seuraavaksi tein vielä sisällön oletus.conf -tiedostolle.

sudoedit /srv/salt/multi/oletus.conf

Sieppaa

Tässä tiedostossa hyödynsin file ja id muuttujia saadakseni yksilölliset verkko-osoitteet orjakoneille.

Ajoin salt-staten päivittääkseni tiedostojen sisällöt ja testasin tällä kertaa myös toisella orjakoneella.

15
VirtualBox-orjalla kaikki meni oikein!
16
ThinkPad sai myös yksilölliset asetustiedostot!

Tehtävä D

SSH-demonin portti: tee tila, joka asentaa SSH-demonin valittuun porttiin. Käytä portin valintaan Jinjaa, siten että sshd_config:issa “Port:”-kohdan arvo tulee Jinjan muuttujasta.

Ennen tilan tekemistä poistan nykyisen SSH-demonin ja asennan uudelleen manu

aalisesti.

sudo apt-get install -y openssh-server

Asennuksen jälkeen testasin yhteyttä

ssh slave1@localhost

7

Testasin vielä portin vaihtamista

sudo sed -i 's/Port 22/Port 8888/' /etc/ssh/sshd_config

Muutoksen jälkeen käynnistin vielä sshd-palvelun uudelleen

sudo systemctl restart sshd.service

8

Portin vaihto onnistui!

Seuraavaksi lähdin tekemään muottia openssh asennukselle ja portin vaihdolle.

Aikaisemmissa tehtävissä olen tehnyt sshd asennukselle salt-state tiedoston, joten hyödynnän sitä pohjana tässä tehtävässä.

/srv/salt hakemistosta löytyy sshd kansio, joka sisältää init.sls ja sshd_config -tiedostot.

Muokkaan ensimmäiseksi sshd_config tiedostoon Jinja-muuttujan porttinumeron kohdalle.

sudoedit /srv/salt/sshd/sshd_config

9

Seuraavaksi siirryin init.sls tiedostoon tekemään {{ porttinumero }} muuttujalle arvon.

sudoedit /srv/salt/sshd/init.sls
111
Minioneille asentuu SSH-demoni joka toimii portissa 888

Poistin orjakoneelta openssh-server paketin ja varmistin että ssh ei toimi.

sudo apt-get purge openssh-server

Ajoin salt-tilan orjakoneelle

sudo salt 'slave1' state.apply sshd

11

Lupaavalta näytti! Testasin vielä SSH-yhteyttä orjakoneella ensin vakioportilla (22) sekä asetetulla portilla (888)

12

SSH-demoni asentui ja porttiasetus meni läpi Jinja-muuttujan kautta!


Tehtävä E

Kokeile jonkun toisen opiskelijan tekemää Salt-tilaa. Kokeiltava tila voi olla mistä vain harjoituksesta. 

Valitsin tehtäväksi Jami Jernvallin tekemän ratkaisun viikolta 2.

f) Tehtävän tarkoituksena on tehdä eri asetuksia Package-File-Service tilalla

Jami halusi tehdä mopo-käyttäjälle oman kotisivun jolle pääsisi mopo.example.com osoitteesta.

Ensiksi tein ohjeiden mukaisesti vp.conf tiedoston /srv/salt/ -kansioon johon lisäsin seuraavan pätkän tekstiä:

 ServerName mopo.example.com
 ServerAlias www.mopo.example.com

DocumentRoot /home/mopo/public_html/

 Require all granted

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

hosts-tiedostoon täytyi vielä lisätä

127.0.0.1 mopo.example.com

33

Sitten luotiin mopo.sls tilatiedosto

sudoedit mopo.sls

Syötetään seuraavat tekstit

/etc/apache2/sites-available/vp.conf
  file.managed:
    - source: salt://mopo/vp.conf
    - create: True

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

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

apache2service:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/sites-available/vp.conf

Huomasin että Jamin esimerkissä viitataan /srv/salt/apache -hakemistosta löytyviin tiedostoihin. Tein itselleni /srv/salt/mopo -hakemiston ja nimesin mopo.sls tiedoston init.sls.

Testasin tässä vaiheessa sls-ajoa

21

Tiedostot näytti siirtyvän nätisti!

Lähdin testaamaan orjakoneelle, ja huomasin että minun tarvitsee tehdä vielä tämä mopo niminen käyttäjä.

sudo adduser mopo

Kirjaudutaan käyttäjällä..

su mopo

Käyttäjällä ei vielä ollut tarvittua public_html kansiota eikä kotisivua, joten tein ne seuraavaksi

mkdir /home/mopo/public_html

Sinne vielä testisivusto

nano /home/mopo/public_html/index.html

Siirryin selaimelle osoitteeseen mopo.example.com

123

Se toimii!


Lähteet

terokarvinen.com

askubuntu.com

saltstack.com

jernvall.com


Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

 

Mainokset

2 thoughts on “3. Viikkotehtävä (Palvelinten hallinta)

Add yours

  1. Päivitysilmoitus: H3 Jinja & States – JeweLinux

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

Luo ilmainen kotisivu tai blogi osoitteessa WordPress.com.

Ylös ↑

%d bloggers like this: