<Precedenti | Contenuti | Succ.>
10.2.3. Stati del sale e altre caratteristiche
Sebbene l'esecuzione remota sia un elemento importante, è solo una piccola parte di ciò che SaltStack può fare.
Quando si configura una nuova macchina, spesso si eseguono molti comandi e test per determinare i dettagli del sistema prima dell'installazione. Queste operazioni possono essere formalizzate in modelli di configurazione riutilizzabili chiamati file di stato. Le operazioni descritte nei file di stato possono quindi essere eseguite con un unico stato.applica comando sale.
Per risparmiare un po' di tempo, puoi fare affidamento su molti file di stato pronti all'uso che sono stati creati dalla comunità e che sono distribuiti in "Formule del sale":
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
Ci sono molte altre caratteristiche che possono essere combinate:
• Esecuzione programmata di azioni
• Definire le azioni in risposta agli eventi innescati dai servitori
• Raccogliere dati dai servitori
• Orchestrazione di una sequenza di operazioni su più servitori
• Applicazione di stati su SSH senza installare il servizio salt-minion
• Provisioning di sistemi su infrastrutture cloud e loro gestione
• E altro ancora
SaltStack è piuttosto vasto e non possiamo assolutamente coprire tutte le funzionalità qui. In effetti, ci sono libri dedicati interamente a SaltStack e anche la documentazione online è molto ampia. Dai un'occhiata se vuoi saperne di più sulle sue caratteristiche:
➨ https://docs.saltstack.com/en/latest/
Se gestisci un numero significativo di macchine, ti consigliamo di saperne di più su SaltStack poiché puoi risparmiare una notevole quantità di tempo durante l'implementazione di nuove macchine e sarai in grado di mantenere una configurazione coerente in tutta la tua rete.
Per darti un assaggio di come funziona con i file di stato, tratteremo un semplice esempio: come abilitare il repository APT e installare un pacchetto creato nella sezione 10.3.3, «Creazione di un repository di pacchetti per APT» [Pagina 269] e la sezione 10.3.2, «Creazione di pacchetti di configurazione” [pagina 263]. Registrerai anche una chiave SSH nell'account di root in modo da poter accedere da remoto in caso di problemi.
Per impostazione predefinita, i file di stato sono archiviati in /srv/sale sul maestro; sono file strutturati YAML con a .sl estensione. Proprio come per l'esecuzione di comandi, l'applicazione di uno stato si basa su molti moduli di stato:
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
Trasferimento da aeroporto a Sharm /srv/salt/offsec.sls file chiamerà tre di questi moduli:
offsec_repository: pkgrepo.gestito:
- nome: deb http://pkgrepo.offsec.com offsec-internal main
- file: /etc/apt/sources.list.d/offsec.list
- URL_chiave: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-default
offsec-default: pkg.installed
ssh_key_for_root: ssh_auth.present:
- utente: root
- nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository: pkgrepo.gestito:
- nome: deb http://pkgrepo.offsec.com offsec-internal main
- file: /etc/apt/sources.list.d/offsec.list
- URL_chiave: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-default
offsec-default: pkg.installed
ssh_key_for_root: ssh_auth.present:
- utente: root
- nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
I repository_offsec lo stato fa affidamento sul pkgrepo modulo di stato. L'esempio usa il gestito
funzione in quel modulo di stato per registrare un repository di pacchetti. Con il chiave_url attributo, tu
far sapere a salt che la chiave GPG (ASCII blindata) richiesta per verificare la firma del repository può essere recuperata da /srv/salt/offsec-apt-key.asc sul maestro di sale. Il richiedono_in attributo assicura che questo stato venga elaborato prima del offsec-default, poiché quest'ultimo necessita del repository correttamente configurato per poter installare il pacchetto.
I offsec-default state installa il pacchetto con lo stesso nome. Ciò mostra che il nome della chiave è spesso un valore importante per gli stati, sebbene possa sempre essere sovrascritto con a Nome attributo (come fatto per il primo stato). Per casi semplici come questo, questo è sia leggibile che conciso.
L'ultimo stato (ssh_key_for_root) aggiunge la chiave SSH fornita in Nome attribuire a /root/.ssh/ chiavi_autorizzate (l'utente di destinazione è impostato nel Utente attributo). Nota che qui abbiamo accorciato la chiave per la leggibilità, ma dovresti inserire la chiave completa nell'attributo name.
Questo file di stato può essere successivamente applicato a un determinato servitore:
server# Salt kali-scratch state.applica offsec
kali-graffio:
----------
ID: offsec_repository Funzione: pkgrepo.managed
Nome: deb http://pkgrepo.offsec.com offsec-internal main Risultato: True
Commento: configurato il repository del pacchetto 'deb http://pkgrepo.offsec.com offsec-internal
➥ principale'
Iniziato: 06:00:15.767794
Durata: 4707.35 ms Modifiche:
----------
pronti contro termine:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID: offsec-defaults Funzione: pkg.installed
Risultato: vero
Commento: i seguenti pacchetti sono stati installati/aggiornati: offsec-defaults Avviato: 06:00:21.325184
Durata: 19246.041 ms Modifiche:
----------
offsec-default:
----------
nuovo:
1.0
vecchio:
----------
ID: ssh_key_for_root Funzione: ssh_auth.present
server# Salt kali-scratch state.applica offsec
kali-graffio:
----------
ID: offsec_repository Funzione: pkgrepo.managed
Nome: deb http://pkgrepo.offsec.com offsec-internal main Risultato: True
Commento: configurato il repository del pacchetto 'deb http://pkgrepo.offsec.com offsec-internal
➥ principale'
Iniziato: 06:00:15.767794
Durata: 4707.35 ms Modifiche:
----------
pronti contro termine:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID: offsec-defaults Funzione: pkg.installed
Risultato: vero
Commento: i seguenti pacchetti sono stati installati/aggiornati: offsec-defaults Avviato: 06:00:21.325184
Durata: 19246.041 ms Modifiche:
----------
offsec-default:
----------
nuovo:
1.0
vecchio:
----------
ID: ssh_key_for_root Funzione: ssh_auth.present
Nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Risultato: Vero
Commento: è stata aggiunta la chiave host autorizzata AAAAB3NzaC1yc2...89C4N per l'utente root Inizio: 06:00:40.582539
Durata: 62.103 ms Modifiche:
---------- AAAAB3NzaC1yc2...89C4N:
New
Riepilogo per kali-scratch
------------
Riuscito: 3 (cambiato=3)
Non riuscito: 0
------------
Stati totali eseguiti: 3
Tempo di esecuzione totale: 24.015 s
Nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Risultato: Vero
Commento: è stata aggiunta la chiave host autorizzata AAAAB3NzaC1yc2...89C4N per l'utente root Inizio: 06:00:40.582539
Durata: 62.103 ms Modifiche:
---------- AAAAB3NzaC1yc2...89C4N:
New
Riepilogo per kali-scratch
------------
Riuscito: 3 (cambiato=3)
Non riuscito: 0
------------
Stati totali eseguiti: 3
Tempo di esecuzione totale: 24.015 s
Può anche essere associato in modo permanente al seguace registrandolo nel /srv/sale/top.sls
file, che viene utilizzato dal stato.alto stato comando per applicare tutti gli stati rilevanti in un unico passaggio:
server# cat /srv/sale/top.sls
base:
kali-graffio:
- offsec
server# sale kali-scratch state.highstate
kali-graffio:
----------
ID: offsec_repository Funzione: pkgrepo.managed
Nome: deb http://pkgrepo.offsec.com offsec-internal main Risultato: True
Commento: il repository del pacchetto 'deb http://pkgrepo.offsec.com offsec-internal main' è già
➥ configurato Avviato: 06:06:20.650053
Durata: 62.805 ms Modifiche:
----------
ID: offsec-defaults Funzione: pkg.installed
Risultato: vero
Commento: il pacchetto offsec-defaults è già installato Iniziato: 06:06:21.436193
Durata: 385.092 ms Modifiche:
----------
ID: ssh_key_for_root
server# cat /srv/sale/top.sls
base:
kali-graffio:
- offsec
server# sale kali-scratch state.highstate
kali-graffio:
----------
ID: offsec_repository Funzione: pkgrepo.managed
Nome: deb http://pkgrepo.offsec.com offsec-internal main Risultato: True
Commento: il repository del pacchetto 'deb http://pkgrepo.offsec.com offsec-internal main' è già
➥ configurato Avviato: 06:06:20.650053
Durata: 62.805 ms Modifiche:
----------
ID: offsec-defaults Funzione: pkg.installed
Risultato: vero
Commento: il pacchetto offsec-defaults è già installato Iniziato: 06:06:21.436193
Durata: 385.092 ms Modifiche:
----------
ID: ssh_key_for_root
Funzione: ssh_auth.present
Nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Risultato: Vero
Commento: la chiave host autorizzata AAAAB3NzaC1yc2...89C4N è già presente per
➥ utente root
Iniziato: 06:06:21.821811
Durata: 1.936 ms Modifiche:
Riepilogo per kali-scratch
------------
Successo: 3
Non riuscito: 0
------------
Stati totali eseguiti: 3
Tempo di esecuzione totale: 449.833 ms
Funzione: ssh_auth.present
Nome: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Risultato: Vero
Commento: la chiave host autorizzata AAAAB3NzaC1yc2...89C4N è già presente per
➥ utente root
Iniziato: 06:06:21.821811
Durata: 1.936 ms Modifiche:
Riepilogo per kali-scratch
------------
Successo: 3
Non riuscito: 0
------------
Stati totali eseguiti: 3
Tempo di esecuzione totale: 449.833 ms