SaltStack
Autor:Vjatšeslav Jertsalov
Kuupäev:11.01.2014
Rühm:A32
Sissejuhatus
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.
Selles süsteemis võib eraldada järgmised võtme võimalused:
- 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.Kui teile vaja natuke edasijõudnud fuktsionaalsuse siis teile läheb vaja installerida Salt syndic pakki.
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.
Salt minion - on potentsiaalseid sajad tuhanded serverid mis võivad olla päritud ja kontrollitud Salt masteri poolt.
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:
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:
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:
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:
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.
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:
Leia:
# The address of the interface to bind to #interface: 0.0.0.0
Asenda järgnevalt:
# 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.
Leia:
#file_roots: #base: #- /srv/salt
Asenda järgnevalt:
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.
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.
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.
Selleks et lisada "enviroments" on vaja lihtsalt lisada file_roots konfiguratsionisse.
Lisan development enviroment:
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.
Leia:
#pillar_roots: #base: #- /srv/pillar
Asenda:
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:
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:
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.
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:
root@saltminion:~# nano /etc/salt/minion
Leia:
#master: salt
Asenda:
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:
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 juhtudame peame vastuvõtta minions-i võti master-i peal.
Ava võtmete nimekirja Salt masteri peal
Me saame vaadata missugused võtid ootavad vastuvõttmist käivitades salt-key käsku.
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.
Aktsepteerida nime järgi:
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:
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:
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:
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
Sisestame järgmised parameetrid:
base: 'desktop.planet.zz*': - webserver
Loo sls mooduli
Samas kaustas kus asub top fail, loo tühi fail nimega webserver.sls, mis sisaldab:
apache2: # ID deklareerimine pkg: # state deklareerimine - installed # funktsiooni deklareerimine
Installeri paki apache2
root@ubuntu:~# salt '*' state.highstate
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.
Kui kõik on valmis, minion raporteerib masterile kokkuvõtte kõikidest tegevustest ja muudatustes mis olid tehtud
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
Kasutatud kirjandus
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