Tunnilla meni ehkä pari asiaa hieman ohi, mutta näitä läksyjä tehdessäni tein hieman lisää tutkimista siitä mitä ne .sls filet edes ovat ja miten top.sls toimii, ja esimerkiksi teron sivu täällä auttoi: http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this .
a) Asenna salt ja siihen uusi orja. Tämä tapahtuu simppelisti näillä komennoilla:
sudo apt-get update sudo apt-get -y install salt-master hostname -I 10.0.2.15
Nyt meillä on mestari asennettuna. Tämän jälkeen asennamme salt slaven toiselle tai samalle laitteelle:
sudo apt-get update sudo apt-get -y install salt-minion
Tämän jälkeen orjalle tulee kuitenkin kertoa, missä masteri on, tai muuten se ei saa siihen yhteyttä, eikä homma tietenkään toimi. Muokataan orjan asetuksia:
sudoedit /etc/salt/minion
Sieltä meidän pitää etsiä kohta “master” ja kirjoittaa siihen mestarikoneen IP-osoite, joka saadaan nyt esimerkiksi komennolla hostname -I. Voimme myös antaa orjalle oman ID:nsä, tässä olen antanut sen ID:ksi/nimeksi papunorja (ei pakollista).
Restartataan minioni:
sudo systemctl restart salt-minion.service
Nyt sen pitäisi yhdistää mestariin, mutta mestarin pitää silti hyväksyä orja osaksi tätä systeemiä. Tehdään tämä näin:
sudo salt-key -A Unaccepted Keys: papunorja Proceed? [n/Y] Key for minion papunorja accepted.
Nyt voimme antaa erilaisia komentoja orjalle, kuten vaikka ‘pwd’. Terminal komentoja pystyy antamaan vaikka näin:
sudo salt '*' cmd.run 'pwd'
PS: asensin orjan ja mestarin samalle koneelle tässä harjoituksessa.
b) No nyt pääsi unohtumaan mikä se idempotenssi on, mutta oletan että pitää ensimmäinen state tehdä. Aloitetaan sillä että mennään /srv/salt/ ja tehdään sinne top.sls tiedosto., ja sitten vaikka foo.sls. Nyt tänne foo.sls lisätään vaikka joku simppeli hello world tyyppinen hommeli. Mutta ennen sitä teemme tiedoston foo.sls /srv/salt/ sisälle ja kirjoitamme sinne näin:
/tmp/foomoi.txt:
file.managed:
- source: salt://foomoi.txt
file.managed varmistaa että jos foomoi.txt tapahtuu muutoksia, tulevat ne muutokset tapahtumaan myös jokaisessa orjassa. Foomoi on siis vaan tiedoston nimi. Tämän tiedoston sisältö (foomoi.txt) on vain
Hello world!
Tallennetaan sekin. Nyt teemme
sudo salt '*' state.apply foo
Tämä lisää tämän staten kaikkiin orjiin. Lopuksi, lisäämme tämän top.sls tiedostoon:
sudoedit /srv/salt/top.sls
Kirjoitetaan sinne:
base:
'*':
- foo
Voimme vielä lisätä muutokset top fileen välittömästi komennolla
sudo salt '*' state.highstate
c) Saamme orjista valtavan määrän tietoa kirjoittamalla
sudo salt '*' grains.items
Tähän sisältyy IP ja valtava määrä system informaatiota, kuten vaikka järjestelmä ja sen versio. En tiedä pitikö sen data sisällyttää tässä mutta oletan että ei koska se on vaan aika pitkä litania sinänsä turhaa informaatiota ja jos siellä on jotain tärkeätä niin en halua myöskään että julkaisen sen tänne julkisesti.
d) Kokeilin statea pkg.installed, joka siis asentaa ohjelman orjille/varmistaa että niillä on kyseinen ohjelma asennettuna. Luin saltin official dokumentaatiosta (lähde 2) että sen voi tehdä näin:
curl: pkg.installed
Tässä siis esimerkkinä curl. Laitteella ei siis ollut etukäteen curlia asennettuna, laitoin tuon foo.sls ja päivitin sen staten komennolla
salt '*' state.apply foo
Tämä asensi laitteelleni curlin ongelmitta, vaikka ensin olin vähän skeptinen että toimisiko se oikeasti noin helposti, mutta näköjään toimi. Ei virheitä, ja curl toimii normaalisti.
Caius Juvonen
Lähteet:
Lähde 1. http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this
Lähde 2. https://salt-zh.readthedocs.io/en/latest/ref/states/all/salt.states.pkg.html