10.2.3. Stare de sare și alte caracteristici
În timp ce execuția de la distanță este un bloc important, este doar o mică parte din ceea ce poate face SaltStack.
Când configurați o mașină nouă, deseori rulați multe comenzi și teste pentru a determina detaliile sistemului înainte de instalare. Aceste operațiuni pot fi formalizate în șabloane de configurare reutilizabile numite dosare de stat. Operațiile descrise în fișierele de stare pot fi apoi efectuate cu un singur stare.aplica comanda sare.
Pentru a economisi ceva timp, vă puteți baza pe multe fișiere de stat gata de utilizare care au fost create de comunitate și care sunt distribuite în „Formulele de sare”:
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
Există multe alte caracteristici care pot fi combinate:
• Execuția programată a acțiunilor
• Definirea acțiunilor ca răspuns la evenimentele declanșate de minioni
• Colectarea datelor de la slujitori
• Orchestrarea unei secvențe de operații în mai mulți minioni
• Aplicarea stărilor prin SSH fără a instala serviciul salt-minion
• Aprovizionarea sistemelor pe infrastructurile cloud și administrarea acestora
• Și altele
SaltStack este destul de vast și nu putem acoperi toate caracteristicile aici. De fapt, există cărți dedicate în întregime lui SaltStack, iar documentația online este, de asemenea, foarte extinsă. Verificați-l dacă doriți să aflați mai multe despre caracteristicile sale:
➨ https://docs.saltstack.com/en/latest/
Dacă gestionați un număr semnificativ de mașini, ar fi bine să aflați mai multe despre SaltStack, deoarece puteți economisi o cantitate semnificativă de timp atunci când instalați mașini noi și veți putea menține o configurație coerentă în întreaga rețea.
Pentru a vă oferi o idee despre cum arată să lucrați cu fișierele de stare, vom acoperi un exemplu simplu: cum să activați depozitul APT și să instalați un pachet pe care îl creați în secțiunea 10.3.3, „Crearea unui depozit de pachete pentru APT” [pagina 269] și secțiunea 10.3.2, „Crearea pachetelor de configurare” [pagina 263]. De asemenea, veți înregistra o cheie SSH în contul root, astfel încât să vă puteți autentifica de la distanță în caz de probleme.
În mod implicit, fișierele de stare sunt stocate în /srv/sare pe maestru; sunt fișiere structurate YAML cu a .sls extensie. La fel ca pentru rularea comenzilor, aplicarea unei stări se bazează pe multe module de stare:
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
Ta /srv/salt/offsec.sls fișierul va apela trei dintre aceste module:
offsec_repository: pkgrepo.managed:
- nume: deb http://pkgrepo.offsec.com offsec-internal main
- fișier: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-defaults
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- utilizator: root
- nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository: pkgrepo.managed:
- nume: deb http://pkgrepo.offsec.com offsec-internal main
- fișier: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-defaults
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- utilizator: root
- nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository statul se bazează pe pkgrepo modul de stare. Exemplul folosește gestionate
funcția din acel modul de stare pentru a înregistra un depozit de pachete. Cu cheie_url atribut, tu
informați saltul că cheia GPG (blindată ASCII) necesară pentru a verifica semnătura depozitului poate fi preluată de la /srv/salt/offsec-apt-key.asc pe maestrul de sare. The cere_in Atributul asigură că această stare este procesată înainte de offsec-implicite, deoarece acesta din urmă are nevoie de depozitul configurat corect pentru a putea instala pachetul.
offsec-implicite state instalează pachetul cu același nume. Acest lucru arată că numele cheii este adesea o valoare importantă pentru state, deși poate fi întotdeauna înlocuit cu un nume atribut (ca și pentru fostul stat). Pentru cazuri simple ca acesta, acesta este atât lizibil, cât și concis.
Ultima stare (ssh_key_for_root) adaugă cheia SSH dată în nume atribuit lui /root/.ssh/ chei_autorizate (utilizatorul țintă este setat în utilizator atribut). Rețineți că am scurtat cheia pentru lizibilitate aici, dar ar trebui să puneți cheia completă în atributul nume.
Acest fișier de stare poate fi aplicat în continuare unui minion dat:
Server# sare kali-scratch state.aplica offsec
kali-scratch:
----------
ID: offsec_repository Funcție: pkgrepo.managed
Nume: deb http://pkgrepo.offsec.com offsec-internal principal Rezultat: Adevărat
Comentariu: pachetul configurat repo 'deb http://pkgrepo.offsec.com offsec-internal
➥ principal'
Început: 06:00:15.767794
Durata: 4707.35 ms Modificări:
----------
repos:
deb http://pkgrepo.offsec.com offsec-internal principal
----------
ID: offsec-defaults Funcție: pkg.installed
Rezultat: Adevărat
Comentariu: Următoarele pachete au fost instalate/actualizate: offsec-defaults Pornit: 06:00:21.325184
Durata: 19246.041 ms Modificări:
----------
offsec-default:
----------
noi:
1.0
vechi:
----------
ID: ssh_key_for_root Funcție: ssh_auth.present
Server# sare kali-scratch state.aplica offsec
kali-scratch:
----------
ID: offsec_repository Funcție: pkgrepo.managed
Nume: deb http://pkgrepo.offsec.com offsec-internal principal Rezultat: Adevărat
Comentariu: pachetul configurat repo 'deb http://pkgrepo.offsec.com offsec-internal
➥ principal'
Început: 06:00:15.767794
Durata: 4707.35 ms Modificări:
----------
repos:
deb http://pkgrepo.offsec.com offsec-internal principal
----------
ID: offsec-defaults Funcție: pkg.installed
Rezultat: Adevărat
Comentariu: Următoarele pachete au fost instalate/actualizate: offsec-defaults Pornit: 06:00:21.325184
Durata: 19246.041 ms Modificări:
----------
offsec-default:
----------
noi:
1.0
vechi:
----------
ID: ssh_key_for_root Funcție: ssh_auth.present
Nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Rezultat: Adevărat
Comentariu: Cheia gazdă autorizată AAAAB3NzaC1yc2...89C4N pentru utilizator root a fost adăugată Pornire: 06:00:40.582539
Durata: 62.103 ms Modificări:
---------- AAAAB3NzaC1yc2...89C4N:
Nou
Rezumat pentru kali-scratch
------------
Reușite: 3 (modificat=3)
A eșuat: 0
------------
Total state rulate: 3
Timp total de rulare: 24.015 s
Nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Rezultat: Adevărat
Comentariu: Cheia gazdă autorizată AAAAB3NzaC1yc2...89C4N pentru utilizator root a fost adăugată Pornire: 06:00:40.582539
Durata: 62.103 ms Modificări:
---------- AAAAB3NzaC1yc2...89C4N:
Nou
Rezumat pentru kali-scratch
------------
Reușite: 3 (modificat=3)
A eșuat: 0
------------
Total state rulate: 3
Timp total de rulare: 24.015 s
De asemenea, poate fi asociat permanent minionului prin înregistrarea lui în /srv/salt/top.sls
fișier, care este folosit de stat.stat înalt comandă pentru a aplica toate stările relevante într-o singură trecere:
Server# cat /srv/salt/top.sls
baza:
kali-scratch:
- offsec
Server# sare kali-scratch state.highstate
kali-scratch:
----------
ID: offsec_repository Funcție: pkgrepo.managed
Nume: deb http://pkgrepo.offsec.com offsec-internal principal Rezultat: Adevărat
Comentariu: pachetul repo 'deb http://pkgrepo.offsec.com offsec-internal main' deja
➥ configurat Pornit: 06:06:20.650053
Durata: 62.805 ms Modificări:
----------
ID: offsec-defaults Funcție: pkg.installed
Rezultat: Adevărat
Comentariu: Pachetul offsec-defaults este deja instalat. Început: 06:06:21.436193
Durata: 385.092 ms Modificări:
----------
ID: ssh_key_for_root
Server# cat /srv/salt/top.sls
baza:
kali-scratch:
- offsec
Server# sare kali-scratch state.highstate
kali-scratch:
----------
ID: offsec_repository Funcție: pkgrepo.managed
Nume: deb http://pkgrepo.offsec.com offsec-internal principal Rezultat: Adevărat
Comentariu: pachetul repo 'deb http://pkgrepo.offsec.com offsec-internal main' deja
➥ configurat Pornit: 06:06:20.650053
Durata: 62.805 ms Modificări:
----------
ID: offsec-defaults Funcție: pkg.installed
Rezultat: Adevărat
Comentariu: Pachetul offsec-defaults este deja instalat. Început: 06:06:21.436193
Durata: 385.092 ms Modificări:
----------
ID: ssh_key_for_root
Funcția: ssh_auth.present
Nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Rezultat: Adevărat
Comentariu: Cheia gazdă autorizată AAAAB3NzaC1yc2...89C4N este deja prezentă pentru
➥ utilizator root
Început: 06:06:21.821811
Durata: 1.936 ms Modificări:
Rezumat pentru kali-scratch
------------
Reusit: 3
A eșuat: 0
------------
Total state rulate: 3
Timp total de rulare: 449.833 ms
Funcția: ssh_auth.present
Nume: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Rezultat: Adevărat
Comentariu: Cheia gazdă autorizată AAAAB3NzaC1yc2...89C4N este deja prezentă pentru
➥ utilizator root
Început: 06:06:21.821811
Durata: 1.936 ms Modificări:
Rezumat pentru kali-scratch
------------
Reusit: 3
A eșuat: 0
------------
Total state rulate: 3
Timp total de rulare: 449.833 ms