Tehtävät perustuvat tähän Tero Karvisen kurssiin.

Tehtävät edellyttävät salt-masterin ja salt-minionin asennusta ja käyttöönottoa. Käytin samaa tietokonetta livetikulta sekä herrana että orjana.

 

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

Ohje. Aloitetaan luomalla /srv/salt -kansioon files-niminen kansio selkeyden säilyttämiseksi. Tähän kansioon luodaan vielä tiedosto init.sls.

init.sls:n sisällöstä tehdään seuraavanlainen:

# Original code by Tero Karvinen http://terokarvinen.com
 
{% for file in ['hello'] %}
 
/tmp/{{ file }}.txt:
  file.managed:
    - source: salt://files/hello.txt
    - makedirs: True
    - template: jinja
    - context:
      file: {{ file }}
{% endfor %}

Luodaan vielä /srv/salt/files -kansioon hello.txt-tiedosto. Kirjoitetaan tiedostoon

{{ file }}! This file is called {{ file }}.txt.

Nyt kun tila ajetaan, luodaan /tmp/ -kansioon hello.txt -tiedosto, jossa lukee “hello! This file is called hello.txt.”. Ajetaan siis tila:

$ sudo salt '*' state.apply files

Ja tarkistetaan, että /tmp/hello.txt luotiin ja file-muuttujat vaihdettiin hello-sanaan. Näin on, eli tila toimii!

 

c) SLS tilaa Jinjalla: tee yksinkertainen SLS-tilatiedosto, joka käyttää for-in -silmukaa. Voit esimerkiksi tehdä kolme tiedostoa silmukalla.

Ohje. Koska käytimme for-silmukkaa jo edellisessä tehtävässä, muokataan vain äskeistä files/init.sls -tiedostoa niin, että se luo useita tiedostoja yhden sijaan:

# Original code by Tero Karvinen http://terokarvinen.com
 
{% for file in ['hello', 'bonjour', 'moi', 'hej'] %}
 
/tmp/{{ file }}.txt:
  file.managed:
    - source: salt://files/hello.txt
    - makedirs: True
    - template: jinja
    - context:
      file: {{ file }}
{% endfor %}

Nyt tila luo neljä eri tiedostoa, hello.txt, bonjour.txt, moi.txt ja hej.txt. file-muuttujat tiedostoissa muutetaan tiedoston vastaavalla arvolla (hello, bonjour, moi tai hej).

Ajetaan tila samalla komennolla kuin äskeisessä tehtävässä, ja käydään /tmp -kansiossa tarkistamassa tiedostot. Toimii! Esimerkiksi /tmp/bonjour.txt:n sisältö näyttää seuraavanlaiselta:

bonjour! This file is called bonjour.txt.
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.

Pohja. Selkeyden säilyttämiseksi luodaan kansio /srv/salt/ssh, jonne init.sls-tiedosto:

# Original code by Tero Karvinen http://terokarvinen.com

openssh-server:
  pkg.installed

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

/etc/ssh/sshd_config:
  file.managed:
    - source: salt://ssh/sshd_config 
    - template: jinja
    - context:
      port: {{ port }}
{% endfor %}

sshd:
  service.running:
    - watch:
      - file: /etc/ssh/sshd_config

Asensin openssh-server -paketin, jotta saan kopioitua asetustiedoston /etc/ssh/sshd_config -tiedoston /srv/salt/ssh -kansioon. Tämän tehtyäni poistin openssh-serverin komennolla

$ sudo apt purge openssh-server

Tarkistin poistamisen jälkeen vielä, että /etc/ssh/sshd_config -tiedosto hävisi myös.

Selkeyden säilyttämiseksi poistin kommenttirivit tiedostosta, ja vaihdoin porttinumeron tilalle muuttujan {{ port }}. Nyt /srv/salt/ssh/sshd_config näyttää tältä:

Port {{ port }}
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

Suoritetaan tila komennolla

$ sudo salt '*' state.apply ssh

Nyt voimme kokeilla ssh-yhteyttä porttiin 1337 (livetikkua käyttäessä tulee käyttäjällä olla salasana. Salasanaa voi muuttaa passwd-komennolla):

$ ssh -p 1337 xubuntu@localhost

Salasanan syötettyä yhteys toimii. Voidaan vielä kokeilla yhteyttä oletusporttiin 22:

$ ssh xubuntu@localhost

Yhteyttä ei saada muodostettua, ja tulostuu vikailmoitus:

ssh: connect to host localhost port 22: Connection refused

Voimme todeta, että ssh-demoni asentui porttiin 1337.

 

e) Kokeile jonkun toisen opiskelijan tekemää Salt-tilaa. Kokeiltava tila voi olla mistä vain harjoituksesta. Opiskelijoiden raportteja ja koodeja löydät tämän sivun perästä kommenteista.

Käytin Marcus K:n tilaa Apachen käyttäjien kotisivujen käyttöönottoon. Loin /srv/salt/apache -kansion, jonne init.sls:

# Original code by Marcus K https://palvelintenhallinta1.wordpress.com

apache2:
  pkg.installed

/var/www/html/index.html:
  file.managed:
    - source: salt://apache/index.html.example

/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

apache_service:
  service.running:
    - name: apache2
    - watch:
      - file: /etc/apache2/mods-enabled/userdir.conf
      - file: /etc/apache2/mods-enabled/userdir.load

Loin tiedoston /srv/salt/apache/index.html.example, joka kopioidaan Apachen oletuskotisivuksi. Suoritin tilan komennolla

$ sudo salt '*' state.apply apache

ja loin vielä /home/xubuntu/public_html/index.html -tiedoston (kansioineen). Kirjoitin index.html:ään vain “Hei xubuntu!”

Nyt kun menin selaimella osoitteeseen localhost/~xubuntu, näkyi sivulla yllä mainittu teksti. Tila siis asentaa Apachen ja laittaa käyttäjien kotisivut toimimaan.

 


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.