Salt - instalare si configurare

Postat la Sat 12 January 2019 in tutoriale

Salt (sau Saltstack) este un sistem de managementul configuratiilor scris in Python ce are urmatoarele caracteristici:

  • arhitecura master - slave (necesita agent locat pe fiecare slave)
  • capabil sa administreze mii de noduri (minioni) per master
  • executa comenzile in paralel pe minioni
  • comenzile sunt scrise in YAML

Ca si Ansible acesta permite - instalare pachete, configurare, administrare servicii - cat si efecturea de deploy-uri, creare de containere etc. Totul prin intermediul modulelor incluse.

Comenzile sunt foarte intuitive si se pot grupa pentru rularea lor in formule in format yaml.

Pana acum nu am gasit pentru Salt o interfata grafica gratuita - exista Saltstack Enterprise contracost - la nivelul AWX. Exista cateva proiecte mai vechi ca Saltpad sau Saltshaker ori ca module pentru Foreman sau Jenkins, fiecare cu limitarile sale.

Salt poate fi instalat ca pachet pentru distributia folosita sau ca modul Python.

Instalare in CentOS

Se instaleaza repo Saltstack

yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm

Se instaleaza pachetele pentru server si minion (se recomanda si pe master)

yum install -y salt-master
yum install -y salt-minion

Instalare in Ubuntu server

Se importa cheia GPG pentru repo:

wget -O - https://repo.saltstack.com/apt/ubuntu/18.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -

si se creaza fisierul pentru repo in /etc/apt/sources.list.d/saltstack.list

deb http://repo.saltstack.com/apt/ubuntu/18.04/amd64/latest bionic main

Se instaleaza pachetele pentru server si minion (se recomanda si pe master)

sudo apt-get update
sudo apt-get install salt-master
sudo apt-get install salt-minion

Pentru alte sisteme de operare, gasiti in documentatie instructiuni

Instalarea multiplatforma

Salt pune la dispozitie un script general de instalare ce detecteaza OS si instaleaza versiunea corecta.

Este necesar sa descarcam si sa rulam un singur script. Pentru master:

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M

iar pentru minion:

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -A <master_ip>

Configurare master

Pentru comunicare pe master trebuie deschise porturile 4505 si 4506 pe interfata dorita.

Fisierul de configurare principal este /etc/salt/master si cele din /etc/salt/master.d/

Se porneste serviciul salt-master:

systemctl start salt-master

Configurare minion

Fisierul de configurare principal este /etc/salt/minion si cele din /etc/salt/minion.d/

Se seteaza adresa corecta a serverului master ca nume sau ip

master: salt-master

Se porneste serviciul salt-minion:

systemctl start salt-minion

La prima pornire minionul trimite cheia sa de identificare la master pe care trebuie sa o acceptam.

Listam cheile cunoscute:

[root@master ~]# salt-key -L
Unaccepted Keys:
minion1.domeniu.meu
minion2.domeniu.meu
Accepted Keys:

Acceptam cheia minionului

[root@master ~]# salt-key -a minion1.domeniu.meu

si acesta apare in sectiunea cheilor acceptate

[root@master ~]# salt-key -L
Unaccepted Keys:
minion2.domeniu.meu
Accepted Keys:
minion1.domeniu.meu

Mai multe optiuni pentru configurarea serviciilor gasiti in documentatia oficiala

O metoda foarte populara prin care se verifica comunicarea intre master si minioni este:

[root@master ~]# salt '*' test.ping
minion1.domeniu.meu:
    True
minion2.domeniu.meu:
    True

Articolul face parte din seria Aplicatii pentru managementul configuratiilor