Palvelinten hallinta h3

H3

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

Käytän tehtäviin Masterina vuokrattua virtuaalipalvelinta, jossa Ubuntu 16.04.4. Minionina toimii koululäppäri tuoreelta livetikulta, jossa Xubuntu 16.04.3.

Aloitetaan tilanteesta, missä hallintasuhde on jo muodostettu.

HUOM. WordPress on hyvä tuhoamaan sisennyksiä, kiinnitä huomiota niihin, mikäli kopioit tekstiä suoraan. Sisennys = 2 väliä.

 

b)

Tehdään kohtaa varten oma kansio, jinja1:

$ sudo mkdir /srv/salt/jinja1

Jonne seuraavat tiedostot:

$ sudo touch /srv/salt/jinja1/init.sls && sudo touch /srv/salt/jinja1/testi.txt

Init.sls tiedoston sisällöksi laitamme seuraavan:

{% for file in ['testi.txt'] %}

/tmp/testi/{{ file }}:
  file.managed:
    - source: salt://jinja1/testi.txt
    - makedirs: True
  - template: jinja
  - context:
  file: {{ file }}

{% endfor %}

Koodin pitäisi paikata jokainen {{ file }} tekstillä testi.txt, eli siis sen pitäisi luoda tiedosto testi.txt.

Tehdään testi.txtille sisältöä:

This is {{ file }}!

Kokeillaan tilaa:

$ sudo salt ’*’ state.apply jinja1

Tiedosto on ilmestynyt onnistuneesti, joten tila toimii.

c)

Kohdassa c) tehdään lähes samaa, mutta kerralla useampia tiedostoja. Muokataan aikaisemmin tehtyä tiedostoa init.sls:

{% for file in ['testi.txt', 'joonas.txt', 'marko.txt', 'kissa.txt', 'tero.txt'] %}

/tmp/testi/{{ file }}:
  file.managed:
    - source: salt://jinja1/testi.txt
    - makedirs: True
    - template: jinja
    - context:
    file: {{ file }}

{% endfor %}

Muokataan vielä tiedostoa testi.txt, jotta tiedämme että muutos on oikeasti tapahtunut:

For loops with jinja

This is {{ file }}!

Nyt tilan pitäisi luoda 4 uutta tiedostoa, ja muokata viimeksi tehtyä testi.txt tiedostoa.

Kokeillaan samalla komennolla kuin aikaisemminkin:

$ sudo salt ’*’ state.apply jinja1

Tila menee läpi ja tiedostot muuttuvat, homma siis toimii.

d)

Seuraavaksi pitää konfiguroida SSH-demoni toiseen porttiin jinjan avulla. Tehdään aluksi uusi kansio:

$ sudo mkdir /srv/salt/jinja2 && cd /srv/salt/jinja2

Kopioidaan sshd_config tiedosto, jotta voidaan tehdä muutoksille pohja:

$ sudo cp /etc/ssh/sshd_config /srv/salt/jinja2/

Muutetaan tiedoston sisällä porttinumero 1337:ksi.

Laitetaan init.sls tiedosto kuntoon:

{% for port in ['1337'] %}

ssh:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
  - source: salt://jinja2/sshd_config
  - makedirs: True
  - template: jinja
  - context:
  file: {{ port }}

{% endfor %}

Tiedostoa ajettaessa salt heittää parsing erroria, virheilmoituksen saat näkyviin oheisesta painikkeesta :

 

Tutkittuani virhettä, löysin seuraavan keskustelun:

https://github.com/saltstack/salt/issues/8549

Sivu neuvoi kiinnittämään huomiota tiedoston sisennyksiin, mutta mielestäni se oli kunnossa, joten arvelen virheen johtuvan context: kentästä. Pyörittelin myös muita ratkaisuja, joita etsin sivulta http://terokarvinen.com/2018/make-a-million-of-those-jinja-templating-salt-states, niin että lopulta tiedosto näytti tältä:

{% for port in ['1337'] %}

ssh:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - source: salt://jinja2/sshd_config
    - makedirs: True
    - template: jinja
    - context:
    port: {{ port }}

{% endfor %}

Luulen, että tarkemmin vika johtui context: kentästä. En täysin ymmärrä, mistä ensimmäinen port tulee, mutta {{ port }} on looginen. Joka tapauksessa tila meni onnistuneesti läpi korjattuna.

Testataan yhdistämistä paikallisesti livetikkukoneelta, jotta vältytään porttien avaamiselta

Minionilla:

$ ssh xubuntu@xubuntu -p 1337

Yhteys menee läpi ja kysyy salasanaa, tila siis asentaa SSH:n oikein ja muuttaa portin 1337:ksi.

e)

Lopuksi kokeillaan toisen opiskelijan tekemää salt-tilaa.

Lainaan Jaakko Veijosen tilaa, jossa asennetaan ja konfiguroidaan sysstat.

http://veijonen.com/h2p.html

Toimin raportoinnin mukaan.

Raportoinnista valitan sen verran, että itseäni ärsyttää se, etten pysty dokumentoinnin perusteella toimimaan suoraan, sillä raportointi jättää mahdollisuuden käyttäjävirheisiin esimerkiksi kohdassa:

Kopioin /etc/default/sysstat -tiedoston /srv/salt/sysstat -kansioon nimellä “default”, ja /etc/cron.d/sysstati:in samaan kansioon nimellä “cron.d”.”

Ohjeet käyvät kansioluonnit melko nopeasti, ja jää hieman epäselväksi, miten kansiorakenne oikeasti menee. Sysstat kansion init.sls tiedostossa tuntuu olevan pieniä ristiriitoja raportoinnin kanssa.

Mielestäni raportoinnin olisi helposti voinut tehdä niin, että annetut komennot tekevät kansiot automaattisesti niin, että lukijan täytyy apinoida komennot, ja asiat toimivat suoraan.

Keskusteltuani asiasta Jaakon kanssa, tulimme siihen tulokseen, että ohjeet ovat hiukka epäselvästi kirjoitettu ja ymmärsin niitä väärin.

Joka tapauksessa, viilasin init.sls tiedoston ja kansiorakenteen sellaiseksi, kuin miten sen itse ymmärsin ja sen perusteella tekisin:

sysstat:
  pkg.installed

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

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

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

 

Kansiorakenne on seuraava:

/srv/salt/
├── jinja1
│   ├── init.sls
│   └── testi.txt
├── jinja2
│   ├── init.sls
│   └── sshd_config
├── sysstat                       
│   ├── default             
│   │   ├── cron.d     
│   │   └── sysstat  
│   └── init.sls
└── top.sls

Muokattuna tila toimii. Luultavasti tila olisi myös toiminut Jaakon tavalla, mikäli tiedostot saa oikeille paikoilleen, toisin kuin itse sain.

This entry was posted in Uncategorised. Bookmark the permalink.

Leave a Reply

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