Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Exemple : utilisation de Salt pour configurer les équipements exécutant Junos OS

Juniper Networks prend en charge l’utilisation de Salt pour gérer les équipements exécutant Junos OS. Cet exemple utilise Salt pour configurer plusieurs équipements exécutant Junos OS.

Exigences

Cet exemple utilise les composants matériels et logiciels suivants :

  • Trois routeurs MX Series exécutant Junos OS avec NETCONF activé

  • Salt master avec les exigences suivantes :

    • Salt version 3001 ou ultérieure

    • Ping et opérations sur les équipements exécutant Junos OS

Aperçu

Cet exemple définit un état Salt qui configure les sessions d’appairage BGP sur les équipements cibles exécutant Junos OS. Le tableau 1 présente les noms d’hôte d’équipement, les ID proxy et les fichiers spécifiques à l’équipement.

Tableau 1 : Informations sur l’équipement

Hostname

Proxy ID

Fichier de configuration du proxy

(/srv/pilier)

Fichier de données BGP

(/srv/pillar/bgp)

r1

r1

r1-proxy.sls

r1.sls

R2

R2

r2-proxy.sls

r2.sls

r3

r3

r3-proxy.sls

r3.sls

L’exemple utilise les composants suivants :

  • Modèle de configuration Jinja2 : définit la configuration BGP comme un modèle Jinja à l’aide du set format de commande. Le modèle utilise l’extension de fichier .set pour indiquer le format.

  • Fichiers de piliers : définissent les données de configuration spécifiques à l’équipement requises par le modèle Jinja2. Les données de chaque équipement sont stockées dans un fichier distinct dans le répertoire /srv/pillar/bgp du module Salt master.

  • Fichier top pillar : mappe chaque fichier pilier au minion proxy approprié.

  • Fichier d’état : définit l’état à appliquer aux équipements cibles. Dans ce cas, le fichier d’état utilise la junos.install_config fonction pour appliquer la configuration BGP à un équipement.

  • État top fichier : mappe le fichier d’état aux équipements sur lesquels l’état doit être appliqué.

Dans cet exemple, vous créez un modèle Jinja2 pour générer la configuration BGP chargée et validée sur l’équipement. Le modèle remplace les données de configuration spécifiques à l’équipement par des variables afin de pouvoir les réutiliser selon les besoins. Le fichier de modèle est placé dans le répertoire /srv/salt/configs du salt master.

Vous créez ensuite des fichiers de piliers distincts pour chaque équipement et définissez les données de configuration propres à chaque équipement dans le fichier. Chaque fichier de piliers définit une BGP_data clé qui contient tous les paramètres variables référencés dans le modèle de configuration. Le fichier top pilier mappe chaque fichier pilier à son minion proxy respectif. Le stockage des données dans des piliers garantit que chaque minion proxy ne peut accéder qu’aux données de cet équipement.

Le fichier d’état junos_bgp_config.sls définit un état qui utilise la junos.install_config fonction pour appliquer la configuration BGP dans le modèle. Lorsqu’elle est invoquée, la fonction verrouille la base de données de configuration, charge la configuration spécifique à l’équipement cible, valide la configuration, puis débloque la base de données. La fonction inclut les diffs_file paramètres permettant de stocker les différences de configuration dans un fichier sur le serveur minion proxy. Le nom de fichier utilise le id grain pour générer des noms de fichier spécifiques à l’équipement pour les fichiers en sortie.

Le fichier state top applique l’état junos_bgp_config à n’importe quel minion avec une BGP_data clé de pilier avec toute valeur. Lorsque vous exécutez un état élevé ou que vous appliquez cet état à un équipement, Salt utilise le modèle et les données de pilier pour générer la configuration spécifique à la cible, puis appelle la junos.install_config fonction pour charger et valider la configuration sur l’équipement. Si la configuration est déjà appliquée, la junos.install_config fonction ne réapplique pas la configuration.

Après avoir configuré les équipements, vous appliquez l’état junos_bgp_verify_peers . Cet état exécute le get-bgp-neighbor-information RPC sur chaque équipement jusqu’à ce qu’il renvoie une peer-state valeur pour Established chaque pair défini dans les données de base ou délais d’utilisation de cet équipement. Cet état suppose que BGP s’exécute sur l’équipement.

Configuration

Pour configurer les équipements à l’aide de Salt, exécutez les tâches incluses dans cette section.

Définir les données de base

Procédure étape par étape

Pour définir les données de base utilisées avec le modèle Jinja2 pour générer la configuration BGP :

  1. Sur salt master, créez un fichier distinct nommé /srv/pillar/bgp/hostname.sls pour chaque équipement géré.

  2. Définissez les données pour l’hôte r1 dans le fichier r1.sls .

  3. Définissez les données pour l’hôte r2 dans le fichier r2.sls .

  4. Définissez les données pour l’hôte r3 dans le fichier r3.sls .

  5. Dans le fichier de base supérieur, mappez le fichier de piliers avec les données BGP sous l’ID de l’équipement approprié pour permettre à l’équipement d’accéder aux données.

  6. Actualisez les données des piliers.

Définir le modèle Jinja2

Procédure étape par étape

Pour créer le modèle Jinja2 utilisé pour générer la configuration BGP :

  1. Créez un fichier nommé /srv/salt/configs/junos-config-bgp-template.set sur salt master.

  2. Ajoutez le modèle de configuration BGP au fichier et enregistrez-le.

Définir les états

Définir le fichier d’état de configuration

Pour définir le fichier d’état qui applique la configuration :

  1. Créez un fichier nommé /srv/salt/junos_bgp_config.sls sur salt master.

  2. Définissez un état qui utilise la junos.install_config fonction pour appliquer la configuration BGP dans le modèle.

    Note:

    Si votre modèle comprend uniquement des variables internes salt comme les données de piliers, les données de grain et les fonctions, la junos.install_config fonction peut devoir être définie template_vars: True pour rendre le modèle.

  3. Dans le fichier supérieur, définissez les cibles auxquelles s’applique l’état junos_bgp_config . Les cibles incluent tous les équipements dont le BGP_data pilier est défini.

Définir le fichier d’état de vérification BGP

Pour définir l’état qui vérifie que les pairs BPG ont :peer-state Established

  1. Créez un fichier nommé /srv/salt/junos_bgp_verify_peers.sls sur salt master.

  2. Définissez un état qui utilise la junos.rpc fonction pour exécuter le get-bgp-neighbor-information RPC, puis vérifie la réponse RPC pour une peer-state réponse de Established.

Résultats

Lorsque vous exécutez un état élevé, les états du top.sls fichier sont appliqués aux équipements cibles appropriés.

Vérification

Vérification de la configuration BGP

But

Vérifiez que la session BGP est établie pour chaque adresse de voisinage.

Action

Appliquez l’état junos_bgp_verify_peers aux équipements cibles et examinez le résultat.

Sens

Le fichier d’état nécessite que ce peer-state soit égal à Established pour chaque pair. La sortie indique que cette condition est remplie pour tous les pairs sur chaque équipement. Vous pouvez également utiliser la junos.cli fonction pour exécuter la show bgp summary commande sur les équipements et examiner la sortie pour vérifier que la session BGP est établie pour chaque adresse de voisinage.

Dépannage

Dépannage des erreurs de charge de configuration

Problème

Le maître Salt génère une ConfigLoadError erreur indiquant qu’il n’a pas chargé la configuration sur l’équipement en raison d’une erreur de syntaxe.

Solution

Salt rend la configuration de Junos OS à l’aide du modèle Jinja2 et des données de base définies pour cet équipement. Salt génère une erreur de syntaxe lorsque le modèle Jinja2 produit une configuration non valide. Pour corriger cette erreur, mettez à jour le modèle Jinja2 pour corriger l’élément identifié par la bad_element clé du message d’erreur.