Henry Isakoff 🥕 Palvelinten Hallinta

| Palvelinten Hallinta | 3 min

Suola, salt ja kutsu kotiin

Tässä raportissa asennetaan yksinkertaisesti Salt, käymme läpi Saltin toimintatapaa ja käymme yksinkertaisen kutsun läpi.

Lyhyesti täältä, täältä ja täältä. Saltin asennusohjeet, saltin perustoiminnot (joita käydään tässä raportissa vähän läpi). Ja viimeisenä hyvä raportti on tiivis ja suoraan pisteeseen.

Laitan tässä raportissa Saltin pyörimään suoraan yhdelle labrani raudalle kalissa. Tulevissa raporteissa tulemme tekemään laajemman ympäristön jossa laajemmin esimerkitetty käyttöä. Teen todennäköisesti yhdestä koneesta isännän ja teen koneelleni esimerkiksi ARM-debianin ja synkkaan tiedostot hostista. Siitä lopussa kommenteissa.

Nyt kuitenkin alkuun seurataan Teron asennusohjeita täältä ja saltin omia täältä. Eli latauksesta huomaamme, että kyseessä on avain ja saltin latausrepo. Nyt tiedämme mihin lähdemme ja voimme lisätä tämän asennukseen.

Avain ja lataus

Kopioidaan avain ja repo paikoilleen käyttöjärjestelmälle. Huomaa, että nyt annamme tietoisesti repolle oikeuden asentaa binääriä järjestelmällemme.

sudo cp public /etc/apt/keyrings/salt-archive-keyring.pgp
sudo cp salt.sources /etc/apt/sources.list.d/

Avain ja lataus

Teen vielä lokaalin ping-koputuksen palveluun salt-call funktiolla varmistaakseni, että homma pyörii.

sudo salt-call --local test.ping

Avain ja lataus

Tilafunktiot ja idempotenssi

Saltin perusidea on tilanhallinta (State Management). Sijaan, että kertoisimme koneelle mitä tehdä (esim. apt install wget), kerrotaan nyt sille, missä tilassa kyseisen paketin pitäisi olla. Salt selvittää sitten itse - tarvitseeko sen itse tehdä jotain saavuttaakseen tuon tilan.

Ominaisuus jossa komennon voi ajaa yhä uudelleen ilman, että tämä aiheuttaa virheitä (tai tarpeettomia muutoksia) on nimeltään idempotenssi. Tämä on nimenomaan Saltin tärkein periaate.

Eli tehdään esimerkki. Käytetään lapsuuteni yhtä suosikkipeliä mitä kavereiden kanssa väännettiin - nethack

sudo salt-call --local state.single pkg.installed name=nethack-console

Luodaan salt-kutsu lokaalisti hallittavaan koneeseen pakettina nethackille (nethack-console). Tämä pyöräyttää kutsun ja asentaa pelin. Esimerkissä ennen kutsua peliä ei oltu asennettu ja kutsun jälkeen on.

Avain ja lataus Thoimii

Nyt voisin ajaa edellisen kutsun uudestaan ja muutoksia ei tapahtuisi.

Yleisesti muita tärkeitä salt kutsuja tämän pakettien hallinnan lisäksi ovat

file.managed – Tiedostojen hallinta. Esimerkissä tmp kansiossa poro tekstitiedosto.

sudo salt-call --local state.single file.managed name=/tmp/poro.txt contents='Moro mitä poro'

service.running – Palveluiden hallinta. Tässä varmistetaan järjestelmäpalvelun olemassaolo ja pyöriminen (esimerkiksi cron)

sudo salt-call --local state.single service.running name=cron

user.present – Käyttäjien hallinta. Jolla varmistetaan ja hallitaan käyttäjäkontrollia.

sudo salt-call --local state.single user.present name=harjoittelija

cmd.run – Komentojen suorittaminen (jos ei valmista idempotenttia löydy).

sudo salt-call --local state.single cmd.run name='touch /tmp/cmd_testi'

Kommentit

Päästään saltissa vielä pidemmälle ja eteenpäin. Itse ajttelin tässä kurssin aikana tehdä saltilla vähän laajemmin työkaluja esimerkiksi kaikkiin kotilabrani CTF/dotfiles järjestelmiin.

Suunnitelmassa on laittaa oma sisäinen GIT pyörimään ja siitä voin aina saltilla vetää halutut asiat sisään. Tämä kuitenkin vielä suunnitelmavaiheessa.

Salt vaikuttaa oikein kivalta ohjelmalta hallita laajempaa järjestelmäkokonaisuutta.

Lähteet

Teron salt linkkejä https://terokarvinen.com/install-salt-on-debian-13-trixie/ https://terokarvinen.com/2018/03/28/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux/ https://terokarvinen.com/2021/salt-run-command-locally/

Salt omat asennusohjeet https://docs.saltproject.io/salt/install-guide/en/latest/topics/install-by-operating-system/linux-deb.html

Nethack https://www.nethack.org

Kuvat optimoitu https://optimage.app

Käytetty aika: 1h