Artikkelissa kuvataan salt-stackin asennus master-minion rooleilla.

Tämä kirjoitus on kotitehtäväpalautus Haaga-Helian Tero Karvisen kurssille ICT4TN011 Linuxin keskitetty hallinta. Tehtävänanto on seuraavanlainen:

  1. Herra ja orjat. Asenna salt toimimaan herra-orja (master-slave, master-minion) arkkitehtuurissa. Tee uusi moduli ja määrää orjat noudattamaan sitä.

1 Lähtötilanne

Teen harjoituksen ja muutkin tulevat harjoitukset Digitalocean.com virtuaalipalvelimella jotta vältyn VirtualBoxin kanssa puljaamiselta ja voin tehdä harjoitukset joko työkoneella (MacBook Pro) tai kotikoneella (iMac) helposti ilman linuxin asennusta kumpaankaan. Haaga-Helian opiskelijana saa Githubin Student Developer Pack:n kautta 100$ krediittiä DigitalOceanin palveluun, joten tämä on käytännössä ilmaista.

Lähtötilanteessa on tehtynä jo seuraavaa:

  • Virtuaalikone (droplet) on luotu DigitalOceanin web-käyttöliittymän kautta Lontoon palvelinkeskukseen. Hostname on “gru”, julkinen IP-osoite 178.62.126.210 ja käyttöjärjestelmänä DigitalOceanin asentama Ubuntu 14.04 x64. Palvelin löytyy kätevästi hostnamella gru.jkw.fi.
  • Olen luonut palvelimelle omat käyttäjätunnukseni (jkw) ja asentanut julkiset avaimeni tiedostoon (~/.ssh/authorized_keys) jotta pääsen yhdistämään palvelimelle ssh:lla ilman salasanan syöttämistä.
  • Palvelimelle on asennettu uusimmat päiv≤≤itykset (sudo apt-get update && sudo apt-get dist-upgrade) ja palvelin on sen jälkeen uudelleenkäynnistetty.

2 Saltin asennus master-minion arkkitehtuurissa

Tein tämän jo ensimmäisessä kotitehtävässä joten en turhaan toista tekemääni. Alla oleva on kopioitu tuosta ensimmäisestä tehtävästä. Uusi osio alkaa otsikolla “Uusi moduli”.

Seurasin Saltin virallisia ohjeita Ubuntulle.

Ensiksi lisäsin SaltStackin reposirotyn GPG-avaimen käyttöjärjestelmäni luotettuihin avaimiin komennolla wget -O - https://repo.saltstack.com/apt/ubuntu/ubuntu14/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -. Tiedostan kyllä että näin tekemällä avainta ei edes tarkisteta eikä sen lisäämisestä ole mainittavaa hyötyä. Olen sitä mieltä Saltin pitäisi muokata dokumentaatiotaan tämän osalta.

Seuraavaksi muokkasin ohjeen mukaisesti apt:n pakettilähdeluetteloa /etc/apt/sources.list. Tein muokkauksen tiedostoon manuaalisesti nano-editorilla. Editorin tarvitsee sudo-oikeudet tiedoston muokkaamiseen joten se pitää käynnistää komennolla sudo nano /etc/apt/sources.list. Lisäsin tiedoston viimeiseksi riviksi deb http://repo.saltstack.com/apt/ubuntu/ubuntu14/latest trusty main

Tämän jälkeen päivitin käytössä olevat paketit komennolla sudo apt-get update.

Ennen varsinaista asennusta on hyvä testata lähtötilanne, jotta voidaan Saltin asennuksen toimivuuden lisäksi varmistua siitä että Salt ei toiminut ennen tätä meidän tekemää asennusta. Ilman tällaista testiä, ei voida varmuudella sanoa etteikö salt olisi ollut (kenties manuaalisesti käännettynä ja pathiin lisättynä) asennettu jo valmiiksi. Vaikka tietysti which salt komennolla voidaan jälkikäteen tarkistaa mitä saltia käytetään. Testataan kuitenkin toimiiko salt. Käytetään komentoa salt -v

salt version - not installed

Ei toimi, hyvä. Lopuksi asensin salt-masterin riippuvuuksineen komennolla sudo apt-get install salt-master ja testasin toimivuuden sen jälkeen uudelleen.

Tässä vaiheessa tietysti huomasin, että oikea komento Saltin versionumeron tulostamiseen ei ole salt -v vaan salt --version. Tässä tilaneessa sillä ei ole kuitenkaan niin väliä, koska ennen asennusta salt -v sanoi “program salt not installed” ja asennuksen jälkeen se listaa kaikki Saltin komennot. Oikealla komennolla saadaan nyt versiokin näkyviin:

salt version - installed

Ensimmäinen tehtävä suoritettu. Aikaa osion suorittamiseen meni kirjoittaminen ja julkaisuun käytettävän Jekyllin kanssa kikkailu mukaan lukien noin tunti.

2.1 Minionien asennus

Päätin tehdä koko tehtävän saman tien vähän laajempana, koska loin jo viime tunnilla myös pari minion-palvelinta kevin.jkw.fi ja bob.jkw.fi.

Asensin molemmille palvelimille Saltin samalla tavalla kuin masterille, paitsi että loppujen lopuksi ei asenneta pakettia salt-master vaan salt-minion.

Tämän jälkeen seurasin Saltin Configurin Salt -ohjetta. Lisäsin molemmilla minion-palvelimilla tiedostoon /etc/salt/minion rivin master: gru.jkw.fi jotta minionit ottavat yhteyttä oikeaan masteriin. Tämän jälkeen uudelleenkäynnistin molemmat minionit komennolla sudo service salt-minion restart ja siirryin master-koneelle.

Tässä vaiheessa siirryin käyttämään Master-koneella root-käyttäjää (komennolla sudo su) koska oletuksena salt-komennot toimivat vain sillä. Master-koneella näkyikin heti molempien minionien yhteysyritykset:

salt minion keys - unaccepted

Ohjeen mukaisesti ajoin molemmilla minoneilla komennon sudo salt-call --local key.finger ja vertasin avaimia salt-masterin näyttämiin, ja ne täsmäsivät. Koska kaikki on kunnossa, lisätään minioneiden avaimet luotetuiksi:

salt minion keys - accepted

Seuraavaksi pystyinkin jo testaamaan yhteyttä ja testikomennon suoritusta kaikilla tunnetuilla minioneilla (valinta ‘*’):

test.ping

3 Uusi moduli

Tein harjoituksen vuoksi yksinkertaisen modulin joka asentaa ohjelman nimeltä “cmatrix”.

Loin master-koneella hakemiston /srv/salt/cmatrix ja sinne tiedoston init.sls, jonka sisällöksi laitoin:

cmatrix:
  pkg:
    - installed

Kokeillaan ensin ettei cmatrixia löydy minionilla:

jkw@kevin:~$ cmatrix
The program 'cmatrix' is currently not installed. You can install it by typing:
sudo apt-get install cmatrix

Ajetaan tila minioneille master koneella komennolla sudo salt '*' state.sls cmatrix ja kokeillaan uudelleen:

cmatrix test