Salt - arhitectura distribuita cu salt syndic

Postat la Sun 20 September 2020 in tutoriale

Arhitectura clasica pentru Salt este un singur master ce controleaza un grup de minioni. Dar in anumite cazuri se doreste impartita in diferite segmente pe care sa fie controlate dintr-o locatie centrala.

Intalnim acest caz cand avem multiple datacentere sau filiale locale (cu numar mai mare de staii locale).

Nodul/minionul intermediar numit Syndic ruleaza o instanta de salt-syndic si o instanta de salt-master - find master local pentru minionii din segmetul local - si transmite comenzile primite de la master-ul central numit si "Master of Masters".

Configurare Syndic

Instalam pachetele necesare:

yum install salt-master
yum install salt-syndic
yum install salt-minion

Configuram minionul sa se conecteze la masterul central. Adaugam in /etc/salt/minion.d/master.conf:

master: master.lxd

Specificam conectarea la Master of Masters pentru salt-syndic in /etc/salt/minion.d/syndic.conf:

syndic_master: master.lxd

Activam si pornim serviciile:

systemctl enable salt-syndic --now
systemctl enable salt-master --now
systemctl enable salt-minion --now

Configuram ca Master of Masters pentru comunicarea cu serverele Syndic in /etc/salt/master.d/syndic.conf:

order_masters: True

Acum putem accepta cheile minionilor administrati de syndic

[root@syndic-1 ~]# salt-key
Accepted Keys:
minion00.zone1.lxd
minion01.zone1.lxd
minion02.zone1.lxd
minion03.zone1.lxd
minion04.zone1.lxd
minion05.zone1.lxd

si acceptam cheia nodului syndic pe master.

[root@master ~]# salt-key
Accepted Keys:
master.lxd
syndic.zone1.lxd
syndic.zone2.lxd

Verificare conectare minioni

[root@master ~]# salt \* test.version
master.lxd:
    3001.1
syndic.zone1.lxd:
    3001.1
syndic.zone2.lxd:
    3001.1
minion00.zone1.lxd:
    3001.1
minion02.zone1.lxd:
    3001.1
minion04.zone2.lxd:
    3001.1
minion05.zone2.lxd:
    3001.1
minion01.zone2.lxd:
    3001.1
minion00.zone2.lxd:
    3001.1
minion03.zone2.lxd:
    3001.1
minion02.zone2.lxd:
    3001.1
minion03.zone1.lxd:
    3001.1
minion01.zone1.lxd:
    3001.1
minion05.zone1.lxd:
    3001.1
minion04.zone1.lxd:
    3001.1

Acum putem transmite comenzi tutror minionilor conectati.

Distributie states si pillar

Pentru a beneficia de intreaga putere oferita de Salt e necesar sa distribuim fisierele de state si pillar pe serverele syndic. Una din metodele recomandate este dintr-un repo git central prin gitfs. Modul de configurare l-am descris in articolul Salt - gestionare states si pillar prin git

In caz contrar primim eroarea:

[root@master lxd]# salt minion04.zone1.lxd state.apply ssh
minion04.zone1.lxd:
Data failed to compile:
----------
No matching sls found for 'ssh' in env 'base'
ERROR: Minions returned with non-zero exit code

Articolul face parte din seria Aplicatii pentru managementul configuratiilor