<Précédent | Table des matières | Suivant>
10.2.3. États salins et autres fonctionnalités
Bien que l'exécution à distance soit un élément important, ce n'est qu'une infime fraction de ce que SaltStack peut faire.
Lors de la configuration d'une nouvelle machine, vous exécutez souvent de nombreuses commandes et tests pour déterminer les détails du système avant l'installation. Ces opérations peuvent être formalisées dans des modèles de configuration réutilisables appelés fichiers d'état. Les opérations décrites dans les fichiers d'état peuvent alors être effectuées avec un seul état.appliquer commande sel.
Pour gagner du temps, vous pouvez vous appuyer sur de nombreux fichiers d'état prêts à l'emploi qui ont été créés par la communauté et qui sont distribués dans des « formules Salt » :
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
De nombreuses autres fonctionnalités peuvent être combinées :
• Exécution planifiée des actions
• Définir des actions en réponse à des événements déclenchés par des serviteurs
• Collecte de données sur les sbires
• Orchestration d'une séquence d'opérations sur plusieurs serviteurs
• Application d'états via SSH sans installer le service salt-minion
• Provisionner les systèmes sur les infrastructures cloud et les mettre sous gestion
• Et plus
SaltStack est assez vaste et nous ne pouvons pas couvrir toutes les fonctionnalités ici. En fait, il existe des livres entièrement dédiés à SaltStack et la documentation en ligne est également très complète. Consultez-le si vous souhaitez en savoir plus sur ses fonctionnalités :
➨ https://docs.saltstack.com/en/latest/
Si vous gérez un nombre important de machines, vous feriez bien d'en savoir plus sur SaltStack car vous pouvez gagner un temps considérable lors du déploiement de nouvelles machines et vous serez en mesure de maintenir une configuration cohérente sur l'ensemble de votre réseau.
Pour vous donner un avant-goût de ce à quoi cela ressemble de travailler avec des fichiers d'état, nous aborderons un exemple simple : comment activer le référentiel APT et installer un package que vous créez dans la section 10.3.3, « Créer un référentiel de packages pour APT » [page 269] et section 10.3.2, « Création de packages de configuration» [page 263]. Vous enregistrerez également une clé SSH dans le compte root afin de pouvoir vous connecter à distance en cas de problème.
Par défaut, les fichiers d'état sont stockés dans /srv/sel sur le maître ; ce sont des fichiers structurés YAML avec un .sls extension. Tout comme pour exécuter des commandes, l'application d'un état repose sur de nombreux modules d'état :
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
Votre /srv/salt/offsec.sls file appellera trois de ces modules :
offsec_repository : pkgrepo.managed :
- nom : deb http://pkgrepo.offsec.com offsec-internal main
- fichier : /etc/apt/sources.list.d/offsec.list
- key_url : salt://offsec-apt-key.asc
- require_in :
- pkg : valeurs par défaut offsec
offsec-defaults : pkg.installed
ssh_key_for_root : ssh_auth.present :
- utilisateur : root
- nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository : pkgrepo.managed :
- nom : deb http://pkgrepo.offsec.com offsec-internal main
- fichier : /etc/apt/sources.list.d/offsec.list
- key_url : salt://offsec-apt-key.asc
- require_in :
- pkg : valeurs par défaut offsec
offsec-defaults : pkg.installed
ssh_key_for_root : ssh_auth.present :
- utilisateur : root
- nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
L'exposition offsec_repository l'État s'appuie sur le pkgrepo module d'état. L'exemple utilise le gérés
fonction dans ce module d'état pour enregistrer un référentiel de packages. Avec le URL_clé attribut, vous
faites savoir à salt que la clé GPG (armure ASCII) requise pour vérifier la signature du référentiel peut être récupérée à partir de /srv/salt/offsec-apt-key.asc sur le maître du sel. Les exiger_dans L'attribut garantit que cet état est traité avant le offsec-par défaut, puisque ce dernier a besoin du référentiel correctement configuré pour pouvoir installer le package.
L'exposition offsec-par défaut state installe le package du même nom. Cela montre que le nom de la clé est souvent une valeur importante pour les états, bien qu'il puisse toujours être remplacé par un nom attribut (comme pour l'ancien état). Pour des cas simples comme celui-ci, c'est à la fois lisible et concis.
Le dernier état (ssh_key_for_root) ajoute la clé SSH donnée dans le nom attribuer à /root/.ssh/authorized_keys (l'utilisateur cible est défini dans le utilisateur attribut). Notez que nous avons raccourci la clé ici pour plus de lisibilité, mais vous devez mettre la clé complète dans l'attribut name.
Ce fichier d'état peut ensuite être appliqué à un minion donné :
serveur# sel kali-scratch state.apply offsec
kali-scratch :
----------
ID : offsec_repository Fonction : pkgrepo.managed
Nom : deb http://pkgrepo.offsec.com offsec-internal main Résultat : True
Commentaire : Repo de package configuré 'deb http://pkgrepo.offsec.com offsec-internal
➥ principale'
Commencé: 06:00:15.767794
Durée : 4707.35 ms Modifications :
----------
dépôt :
deb http://pkgrepo.offsec.com offsec-interne principal
----------
ID : offsec-defaults Fonction : pkg.installed
Résultat : vrai
Commentaire : Les packages suivants ont été installés/mis à jour : offsec-defaults Démarré : 06:00:21.325184
Durée : 19246.041 ms Modifications :
----------
offsec-defaults :
----------
Nouveau:
1.0
vieille:
----------
ID : ssh_key_for_root Fonction : ssh_auth.present
serveur# sel kali-scratch state.apply offsec
kali-scratch :
----------
ID : offsec_repository Fonction : pkgrepo.managed
Nom : deb http://pkgrepo.offsec.com offsec-internal main Résultat : True
Commentaire : Repo de package configuré 'deb http://pkgrepo.offsec.com offsec-internal
➥ principale'
Commencé: 06:00:15.767794
Durée : 4707.35 ms Modifications :
----------
dépôt :
deb http://pkgrepo.offsec.com offsec-interne principal
----------
ID : offsec-defaults Fonction : pkg.installed
Résultat : vrai
Commentaire : Les packages suivants ont été installés/mis à jour : offsec-defaults Démarré : 06:00:21.325184
Durée : 19246.041 ms Modifications :
----------
offsec-defaults :
----------
Nouveau:
1.0
vieille:
----------
ID : ssh_key_for_root Fonction : ssh_auth.present
Nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Résultat : Vrai
Commentaire : La clé d'hôte autorisée AAAAB3NzaC1yc2...89C4N pour l'utilisateur root a été ajoutée. Démarré : 06:00:40.582539
Durée : 62.103 ms Modifications :
---------- AAAAB3NzaC1yc2...89C4N:
New
Résumé pour kali-scratch
------------
Réussi : 3 (modifié=3)
Échoué: 0
------------
Nombre total d'états exécutés : 3
Temps d'exécution total : 24.015 s
Nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Résultat : Vrai
Commentaire : La clé d'hôte autorisée AAAAB3NzaC1yc2...89C4N pour l'utilisateur root a été ajoutée. Démarré : 06:00:40.582539
Durée : 62.103 ms Modifications :
---------- AAAAB3NzaC1yc2...89C4N:
New
Résumé pour kali-scratch
------------
Réussi : 3 (modifié=3)
Échoué: 0
------------
Nombre total d'états exécutés : 3
Temps d'exécution total : 24.015 s
Il peut également être associé de façon permanente au serviteur en l'enregistrant dans le /srv/sel/top.sls
fichier, qui est utilisé par le état.haut état commande pour appliquer tous les états pertinents en une seule passe :
serveur# chat /srv/sel/top.sls
base:
kali-scratch :
- hors-sec
serveur# sel kali-scratch state.highstate
kali-scratch :
----------
ID : offsec_repository Fonction : pkgrepo.managed
Nom : deb http://pkgrepo.offsec.com offsec-internal main Résultat : True
Commentaire : repo de package 'deb http://pkgrepo.offsec.com offsec-internal main' déjà
➥ configuré Commencé : 06:06:20.650053
Durée : 62.805 ms Modifications :
----------
ID : offsec-defaults Fonction : pkg.installed
Résultat : vrai
Commentaire : Le package offsec-defaults est déjà installé. Démarré : 06 : 06 : 21.436193
Durée : 385.092 ms Modifications :
----------
ID : ssh_key_for_root
serveur# chat /srv/sel/top.sls
base:
kali-scratch :
- hors-sec
serveur# sel kali-scratch state.highstate
kali-scratch :
----------
ID : offsec_repository Fonction : pkgrepo.managed
Nom : deb http://pkgrepo.offsec.com offsec-internal main Résultat : True
Commentaire : repo de package 'deb http://pkgrepo.offsec.com offsec-internal main' déjà
➥ configuré Commencé : 06:06:20.650053
Durée : 62.805 ms Modifications :
----------
ID : offsec-defaults Fonction : pkg.installed
Résultat : vrai
Commentaire : Le package offsec-defaults est déjà installé. Démarré : 06 : 06 : 21.436193
Durée : 385.092 ms Modifications :
----------
ID : ssh_key_for_root
Fonction : ssh_auth.present
Nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Résultat : Vrai
Commentaire : La clé hôte autorisée AAAAB3NzaC1yc2...89C4N est déjà présente pour
➥ utilisateur root
Commencé: 06:06:21.821811
Durée : 1.936 ms Modifications :
Résumé pour kali-scratch
------------
Réussi : 3
Échoué: 0
------------
Nombre total d'états exécutés : 3
Temps d'exécution total : 449.833 XNUMX ms
Fonction : ssh_auth.present
Nom : ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Résultat : Vrai
Commentaire : La clé hôte autorisée AAAAB3NzaC1yc2...89C4N est déjà présente pour
➥ utilisateur root
Commencé: 06:06:21.821811
Durée : 1.936 ms Modifications :
Résumé pour kali-scratch
------------
Réussi : 3
Échoué: 0
------------
Nombre total d'états exécutés : 3
Temps d'exécution total : 449.833 XNUMX ms
Documentation