SaltStack

From EIK wiki

Autor:Vjatšeslav Jertsalov

Kuupäev:11.01.2014

Rühm:A32

Sissejuhatus

SaltStack logo.png




Mis on SaltStack ja milleks seda kasutada?

SaltStack(edasi lihtsalt Salt)lubab uut lähenemist suurte infrastuktuuride administreerimiseks.Piisavalt lihtne et paigaldada loetud minutitega,piisavalt skaleeruv et hallata kümneid tuhandeid servereid ja piisavalt kiire et suhelda nendega sekunditega[1].

Selles süsteemis võib eraldada järgmised võtme võimalused:[2]

  • Teenuste konfiguratsiooni haldus mitme serverite peal üheaegselt
  • Kaugelt käskude täitmist mitme serverite peal üheaegselt
  • Realajas informatsiooni saamine keskkonnast
  • SQL/NoSQL andmebaasidega ühenduse võimalus konfiguratsioni salvestamiseks või saamiseks,käskude taitmise tulemuste ja muu info salvestamiseks
  • Seadistamise ja kasutamise lihtsus
  • Põhi serverite platformide toetus(Linux/Windows)
  • Ta on kirjutatud Python programeerimis keeles,mis idealselt selleks sobib.


Salt arhitektuur on väga lihtne - on olemas üks(või grupp) Salt master node-id,mille külge ühendavad Salt minion-id mis on paidaldatud teie kõikide serverite peal.[3]Kui teile vaja natuke edasijõudnud fuktsionaalsuse siis teile läheb vaja installerida Salt syndic pakki[4]

Töö eesmärk

Teha läbi praktiliselt ja kirjutada juhendid kuidas installerida,seadistada ja kasutada SaltStack-i konfiguratsiooni haldamis süsteemi mis võiks olla alternatiiviks sellistele tarkvaradele nagu Puppet,Chef,CFEngine.

Labori ülesanne püstitus

Installerida SaltStack-master Ubuntu Serveri peale ja SaltStack-minion installerida Ubuntu Desktop-i peale.Konfigureerida neid et nad saaksid ühendust omavahel.Seejärel SaltStack-masteri kaudu käivitada skripti et paigaldada mingi programmi või packgage-i SaltStack-minion-i peale.

NB! Selles laboris ma ei paigalda Salt syndic ja ei kirjuta kuidas seda paigaldada ja seadistada.Lisainfo http://docs.saltstack.com/ref/syndic.html

Põnimõisted

Salt master - See on keskne server mille külge on ühendatud kõik Salt minion-id.Käsud käivitatakse Salt minionide peal ja Salt master-i kaudu ja Salt minion-id tagastavad andmed tagasi salt-masterile(kui ei ole ümbersuunatud "returner"-iga).Ta on käivitatud salt-master programmiga.[5]

Salt minion - on potentsiaalseid sajad tuhanded serverid mis võivad olla päritud ja kontrollitud Salt masteri poolt.[6]

Labori keskkond

Salt master - Ubuntu Server 12.04 LTS 64 bit.

2 adapterid:

eth0 NAT adress 10.0.2.15

eth1 Host-Only address 192.168.56.200


Salt minion - Ubuntu Desktop 13.04 64 bit

2 adapterid:

eth0 NAT adress 10.0.2.15

eth1 Host-Only address 192.168.56.101


Salt Installeerimine

Viimased Salt Stack pakid on saadaval PPA-s.

Järgmised sammud näitavad kuidas lisada PPA ja installerida Salt Stack pakid:[7]

sudo apt-get install python-software-properties

sudo add-apt-repository -y ppa:saltstack/salt

Altenatiiviks,ku eelnevad käsud ei toimi,käsitsi lisa repositooriumi ja importi PPA võti järgmiste käskudega:[8]

echo deb http://ppa.launchpad.net/saltstack/salt/ubuntu `lsb_release -sc` main | sudo tee /etc/apt/sources.list.d/saltstack.list
wget -q -O- "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x4759FA960E27C0A6" | sudo apt-key add -

NB! Samad käsud tuleb käivitada Serveri peal kus me tahame paigaldada Salt masteri ja Serveri peal kuhu tahame paigaldada Salt minioni.

Nüüd oleme valmis installerima Salt pakid.

Salt master pakki installerimine

Salt masteri pakki me installerime Ubuntu Server 12.04 LTS peale.

Selleks käivitame käsu:[9]

sudo apt-get install salt-master

Salt minion pakki installerimine

Salt masteri pakki me installerime Ubuntu Desktop 13.04 peale.

Selleks käivitame käsu:[10]

sudo apt-get install salt-minion

Salt konfigureerimine

Kõik configuratsiooni failid on paigaldatud /etc/salt kaustas ja nimetatud nagu vastavat komponendid, /etc/salt/master ja /etc/salt/minion.[11]

Salt masteri konfigureerimine

Selleks et konfigureerida Salt-master meil on vaja muuta /etc/salt/master konfiguratsiooni faili:

sudo nano /etc/salt/master

Vaikimisel Salt kuulab portidel 4505 ja 4506 kõikide kasutajaliideste peal (0.0.0.0). Selleks et siduda Salt teatud IP-ga, tuleb /etc/salt/master faili muuta järgnevalt:[12]

Leia:[13]

# The address of the interface to bind to
#interface: 0.0.0.0

Asenda järgnevalt:[14]

# The address of the interface to bind to
 interface: teie_ip_aadres

Mina asendasin oma Salt masteri Serveri ip aadressiga 192.168.56.200

Stati-de file_root kausta seadistamine

Kõik salt-i poliisid või "states" peavad kuskil elama. Ja file_roots kaust on koht kus "states" asuvad diski peal.Selle artikli jaoks me paneme kõike /salt/states/base kausta.[15]

Leia:[16]

#file_roots:
#base:
#- /srv/salt

Asenda järgnevalt:[17]

file_roots:
  base:
    - /salt/states/base

Ei ole kõik "states" on samasugused, vahepeal te soovite et pakid oleksid konfigureeritud ühtemoodi arenduses ja teismoodi tootmises. Kuigi ma ei avalda sellest artiklis te võite teha selle kasutades salt-i "environments" konfiguratsiooni.[18]

Igal salt masteril peab olema "base environment", see on kasutatud et hoida top.sls fail mis defineerib mis salt-i "state"-id rakendub teatud minions-ide vastu.Samuti "base environment" kasutatakse üldiselt "state"-ide jaoks mis rakenduvad kõikidele süsteemidele.[19]

Näiteks, mulle meeldib "screen" käsk ja ma tahan et ta oleks installitud kõikide masinate peal mis ma haldan. Selleks et seda teha ma lisan "screen state" "base environment"-i juurde.[20]

Selleks et lisada "enviroments" on vaja lihtsalt lisada file_roots konfiguratsionisse.[21]

Lisan development enviroment:[22]

file_roots:
  base:
    - /salt/states/base
  development:
    - /salt/states/dev
Seadistan pillar_roots

Kuigi see artikkel ei avalda infot "pillars"-idest ma väga soovitan konfigureerida "pillar_roots" kaustat samuti. Ma ledsin et "pillars"-id on väga kasulikud selleks "state"-ide korduvkasutuseks ja vähendab unikaalsete "state"-ide osakaalu.[23]

Leia:[24]

#pillar_roots:
#base:
#- /srv/pillar


Asenda:[25]

pillar_roots:
  base:
    - /salt/pillars/base
Taaskäivita Salt master-i teenust

Selleks et configuratsiooni faili /etc/salt/master muutused jõustunud,meil on vaja teha Salt master teenusele restarti:[26]

student@ubuntu:~$ sudo service salt-master restart
salt-master stop/waiting
salt-master start/running, process 1581
Loon salt "states" ja "pillars" kaustad

NB! Edasi kõik käsud teme root õigustes:

sudo -i

Enne ku me liigume salt "minioni"-de konfiguratsiooniga edasi me peame looma file_roots ja pillar_roots kaustad millised me kirjutasime /etc/salt/master faili:[27]

root@ubuntu:~# mkdir -p /salt/states/base /salt/pillars/base

Salt minioni konfigureerimine

Salt minion-i konfigureerimine on isegi lihtsam kui salt master-i.Lihsas ülesseadistuses nagu me teeme selles laboris kõik mis on meile vaja see on seadistada salt master-i IP aadres.[28]

Lähme jalle root kasutajaks Ubuntu desktopi peal kuhu me installerisime meie Salt minion:

student@desktop:~$ sudo -i
Salt master-i sihmärgi IP muutmine

Ava Salt minion-i konfigaruratsiooni faili:[29]

root@saltminion:~# nano /etc/salt/minion

Leia:[30]

#master: salt

Asenda:[31]

master: teie_master-i_ip_aadres

Naiteks minu konfiguratsioni puhul ma kirjutan minu Salt master-i ip aadress mis on 192.168.56.200

Taaskäivita Salt minion-i teenust

Selleks et configuratsiooni faili /etc/salt/minion muutused jõustunud,meil on vaja teha Salt minion teenusele restarti:[32]

root@desktop:~# service salt-minion restart
salt-minion stop/waiting
salt-minion start/running, process 2839

Minions-ide võtmete vastuvõttmine Salt masteri poolt

Kohe kui Salt minion-i teenus on taaskäivitunud minion hakkab proovima suhelda master-iga.Enne kui see võib juhtuda me peame vastuvõtta minions-i võti master-i peal.[33]

Ava võtmete nimekirja Salt masteri peal

Me saame vaadata missugused võtid ootavad vastuvõttmist käivitades salt-key käsku.[34]

Minu masina puhul:

root@ubuntu:/# salt-key -L
Accepted Keys:
Unaccepted Keys:
desktop.planet.zz
Rejected Keys:
Võtta desktop.planet.zz-i võti vastu

Selleks et vastuvõtta destktop.planet.zz-i võti me võime teha seda kahel viisil, labi desktop.planet.zz spetsifilist nime või aktsepteerides kõik võttid mis on ootel.[35]

Aktsepteerida nime järgi:[36]

root@ubuntu:/# salt-key -a desktop.planet.zz
The following keys are going to be accepted:
Unaccepted Keys:
desktop.planet.zz
Proceed? [n/Y] Y
Key for minion desktop.planet.zz accepted.


Aktsepteerida kõike võttmed:[37]

root@ubuntu:~# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
saltminion
Proceed? [n/Y] Y
Key for minion desktop.planet.zz  accepted.

Saadame käsku

Ühendust Salt minioni ja Salt masteri vahel võib kontrollida käivitades käsku test.ping:[38]

root@ubuntu:/# salt desktop.planet.zz test.ping
desktop.planet.zz:
    True

Kui teil on palju minion-i ja te tahate kontrollida ühendust kõikidega siis tuleb käivitada järgmist käsku:[39]

root@ubuntu:/# salt '*' test.ping
desktop.planet.zz:
   True

NB! Kuna mul on ainult üks minion siis ta näitabki ainult ühe minioniga ühendust teise testi peale

Web serveri installerimine Salt minioni peale Salt masteri kaudu

Valmistame Top faili Salt masteri peal

root@ubuntu:~# nano /salt/states/base/top.sls[40]

Sisestame järgmised parameetrid:[41]

base:
  'desktop.planet.zz*':
    - webserver

Loo sls mooduli

Samas kaustas kus asub top fail, loo tühi fail nimega webserver.sls, mis sisaldab:[42]

apache2:                 # ID deklareerimine
  pkg:                   # state deklareerimine
    - installed          # funktsiooni deklareerimine

Installeri paki apache2

root@ubuntu:~# salt '*' state.highstate[43]

Meie master juhendab kõike sitmärgitud minion-id käivitada state.highstate. Kui minion täidab käsu ta laeb alla top faili ja üritab sobitada avaldis. Kui ta leiab käsud mis klappivad käskudega mis on masteri moodulites siis ta laeb need alla, compilerib ja täidab.[44]

Kui kõik on valmis, minion raporteerib masterile kokkuvõtte kõikidest tegevustest ja muudatustes mis olid tehtud[45]

Raport mis minion tagastas minu masterile:

desktop.planet.zz:
----------
   State: - pkg
   Name:      apache2
   Function:  installed
       Result:    True
       Comment:   The following packages were installed/updated: apache2.
       Changes:   libaprutil1-ldap: { new : 1.4.1-3
old : 
}
                  libapr1: { new : 1.4.6-3ubuntu1
old : 
}
                  apache2-utils: { new : 2.2.22-6ubuntu5.1
old : 
}
                  apache2.2-bin: { new : 2.2.22-6ubuntu5.1
old : 
}
                  apache2-mpm-worker: { new : 2.2.22-6ubuntu5.1
old : 
}
                  apache2.2-common: { new : 2.2.22-6ubuntu5.1
old : 
}
                  libaprutil1: { new : 1.4.1-3
old : 
}
                  apache2: { new : 2.2.22-6ubuntu5.1
old : 
}
                  libaprutil1-dbd-sqlite3: { new : 1.4.1-3
old : 
}
Summary
------------
Succeeded: 1
Failed:    0
------------
Total:     1

Vaikimisi logi failide asukohad

Salt master-i logi faili asukoht

/var/log/salt/master[46]

Salt minion-i logi faili asukoht

/var/log/salt/minion[47]


Kokkuvõtte

Saltstacki installerimine ja konfigureerimine läks kohe esimesest korrast hästi.Mulle meeldis se konfiguratsiooni haldamise süsteem oma lihtsuse poolt.Mis puudutab kiirust,siis veebiserveri installerimine minioni peal võttis kuidagi palju aega minu puhul ja Salstacki arendajate väide,et Salststack töötab väga kiirelt ei leidnud minu jaoks kinnitust.Aga igal juhul ma soovitaks seda süsteemi kasutada kui alternatiiv sellestele tarkvaradele nagu Puppet,CFEngine,Chef sellepärast et Salstack-i sest ta on väga kiirelt installeritav ja lihtsasti konfigureritatav ja kasutatav tarkvara.

Kasutatud kirjandus

http://docs.saltstack.com/

http://blog.niyakiy.com/2013/11/saltstack.html

http://sc0rp1us.blogspot.com/2013/04/saltstack.html

http://docs.saltstack.com/topics/configuration.html

http://ubuntu-tutorials.com/2013/03/01/install-salt-stack-on-ubuntu-lts/

http://docs.saltstack.com/topics/installation/ubuntu.html

http://docs.saltstack.com/topics/configuration.html

http://bencane.com/2013/09/03/getting-started-with-saltstack-by-example-automatically-installing-nginx/

http://docs.saltstack.com/topics/tutorials/states_pt1.html

http://docs.saltstack.com/ref/configuration/master.html

http://docs.saltstack.com/ref/configuration/minion.html