
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.