SUR CETTE PAGE
Exemple : Configurer l’automatisation d’un modèle de service
Cet exemple montre comment utiliser l’automatisation de modèle de service pour provisionner des services sur des plates-formes similaires exécutant Junos OS.
Exigences
Deux équipements MX Series exécutant Junos OS version 12.3 ou ultérieure.
Aperçu
Cet exemple utilise l’automatisation de modèle de service pour provisionner des services sur un routeur MX Series. Pour utiliser le script d’automatisation service-builder.slax du modèle de service, vous devez d’abord copier le script dans le répertoire /var/db/scripts/op ou /config/scripts/op et activer le script sur l’appareil.
Le processus suivant décrit comment utiliser l’automatisation des modèles de service pour provisionner des services :
Créez une définition de modèle de service.
Exécutez le script service-builder.slax et définissez les paramètres d’instance spécifiques au service.
Générez l’interface de service.
Activez l’interface de service sur chaque appareil sur lequel le service est requis.
Provisionnez les systèmes en appelant l’interface de service à l’aide de NETCONF et en fournissant les valeurs des paramètres de service.
Cet exemple permet de créer une interface de service VPN sur un équipement MX Series exécutant Junos OS version 12.3 et de provisionner le service sur un deuxième équipement MX Series exécutant Junos OS version 12.3. Vous configurez les définitions de modèle de service sous le niveau hiérarchique[edit groups]
. Dans cet exemple, le nom du service est , et le nom du groupe de modèles est vpn-service
vpn-service-template-group
. La load merge terminal
commande configuration mode charge les hiérarchies de configuration du modèle de service dans la configuration candidate, qui est ensuite validée.
Une fois que vous avez créé le modèle de service initial, vous exécutez le script service-builder.slax. Le script invite à entrer le nom du service et le nom du groupe de modèles, puis lit la configuration du modèle de service à partir de la configuration validée.
L’interface de script service-builder.slax se compose de deux menus : Main Menu
et Hierarchies Menu
. Dans le Main Menu
, vous pouvez passer en revue les variables définies dans la configuration du modèle de service, ou vous pouvez créer ou activer l’API de service. L’option Build Service API
de menu affiche le Hierarchies Menu
, qui vous guide tout au long du paramétrage des variables. Par défaut, toutes les variables sont paramétrées ou vous pouvez choisir de paramétrer les variables sélectionnées. Si vous devez quitter le script service-builder.slax lors de la création de l’API de service, vous devez terminer la configuration de tous les paramètres de la hiérarchie actuelle afin d’enregistrer cette configuration de hiérarchie lorsque vous quittez à l’aide de l’option Quit
. Ensuite, vous pouvez terminer la configuration des hiérarchies incomplètes ultérieurement. Cet exemple permet de paramétrer deux variables : le nom de l’interface et la description de l’interface. Une fois les paramètres spécifiés, le script Service Builder génère le script de service.
L’option Enable Service API
de menu active le script de service sur l’appareil local. Pour activer le script de service sur le deuxième périphérique MX Series, le script de service généré est copié dans le répertoire / var/db/scripts/op du second périphérique et le script est activé dans la configuration. Si l’instruction load-scripts-from-flash
est configurée, le script doit être copié dans le répertoire correspondant sur la clé USB.
NETCONF est utilisé pour provisionner le service sur le périphérique MX Series distant. L’action d’appel de procédure à distance (RPC) NETCONF varie selon qu’il s’agit d’un nouveau service ou d’un service existant. Les actions prises en charge sont , update
, create
et delete
. Cet exemple crée un service. Si le service donné est déjà provisionné sur l’appareil et que vous mettez à jour ou supprimez les paramètres du service, vous pouvez modifier le RPC pour effectuer ces actions.
Configuration
- Stockage et activation du script Service Builder
- Configuration de la définition du modèle de service
- Configuration et génération de l’interface de service
- Vérification de l’interface de service
- Activation de l’interface de service
- Provisionnement du service à l’aide de NETCONF
- Mise à jour ou suppression de services à l’aide de NETCONF
Stockage et activation du script Service Builder
Procédure étape par étape
L’installation de Junos OS inclut le script service-builder.slax , stocké dans le répertoire / usr/libexec/scripts/op/ du périphérique. Pour utiliser le script service-builder.slax , vous devez d’abord le copier dans le répertoire op scripts et l’activer dans la configuration. Seuls les utilisateurs de la classe de connexion du superutilisateur Junos OS peuvent accéder aux fichiers de ces répertoires et les modifier.
Copiez le script service-builder.slax dans le répertoire /var/db/scripts/op sur le disque dur ou dans le répertoire /config/scripts/op sur la clé USB.
user@host> file copy /usr/libexec/scripts/op/service-builder.slax /var/db/scripts/op
Vérifiez que le script se trouve dans le bon répertoire à l’aide de la
file list
commande mode opérationnel.user@host> file list /var/db/scripts/op /var/db/scripts/op: service-builder.slax*
Activez le script dans la configuration.
[edit] user@host# set system scripts op file service-builder.slax
Si vous stockez des scripts et que vous les chargez à partir de la mémoire flash, configurez l’instruction, si elle n’est
load-scripts-from-flash
pas déjà configurée.[edit] user@host# set system scripts load-scripts-from-flash
Validez la configuration.
[edit] user@host# commit
Configuration de la définition du modèle de service
Procédure étape par étape
Pour créer un modèle de service sur un équipement exécutant Junos OS :
Sélectionnez un nom de service.
Cet exemple utilise
vpn-service
.En mode configuration, créez un nouveau groupe qui contiendra les hiérarchies du service à provisionner.
[edit] user@host# set groups vpn-service-template-group
Configurez les hiérarchies du service.
Dans cet exemple, les hiérarchies de configuration préconstruites sont chargées dans la configuration candidate à l’aide de la
load merge terminal
commande.[edit] user@host# load merge terminal groups { vpn-service-template-group { interfaces { ge-2/2/6 { description "connected to customer3-site-1"; unit 0 { family bridge { interface-mode access; vlan-id 300; } } } } protocols { rstp { interface ge-2/3/0; } mvrp { interface ge-2/3/0; } } bridge-domains { bd { vlan-id-list 100; } } } } [Ctrl+D]
Vérifiez que la syntaxe de configuration est correcte.
[edit] user@host# commit check configuration check succeeds
Validez la configuration.
[edit] user@host# commit
Configuration et génération de l’interface de service
Procédure étape par étape
Pour configurer et générer l’interface de service :
En mode opérationnel, exécutez le script service-builder.slax qui démarre une session Service Builder interactive.
user@host> op service-builder Welcome to Service Builder Script: (v1.0) - Enter the service name :
Entrez le nom du service qui a été défini dans Configuration de la définition du modèle de service.
Enter the service name : vpn-service
Entrez le nom du groupe sous lequel les hiérarchies de services sont configurées.
Cet exemple utilise le nom
vpn-service-template-group
de groupe . Le script lit la configuration spécifiée dans lavpn-service-template-group
hiérarchie, puis affiche le menu principal.Enter the group name : vpn-service-template-group .. reading [edit group vpn-service-template-group] .. [Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:>
(Facultatif) Pour passer en revue les variables de modèle de service que vous pouvez paramétrer, sélectionnez l’option
Show Variables
.Le script traduit la définition du modèle dans la configuration candidate en une liste de paramètres généraux regroupés par niveau hiérarchique.
[Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:> 1 List of variables under each hierarchy to parameterize: - 1. [ edit groups vpn-service-template-group interfaces ] 1.1. interface/name 1.2. interface/description 1.3. interface/unit/name 1.4. interface/unit/family/bridge/interface-mode 1.5. interface/unit/family/bridge/vlan-id - 2. [ edit groups vpn-service-template-group protocols ] 2.1. rstp/interface/name 2.2. mvrp/interface/name - 3. [ edit groups vpn-service-template-group bridge-domains ] 3.1. domain/name 3.2. domain/vlan-id-list -
Pour créer l’API de service, sélectionnez l’option
Build Service API
.[Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:> 2
À partir de , entrez les sélections de menu pour les hiérarchies qui ont des variables que vous souhaitez paramétrer,
Hierarchies Menu
ou appuyez sur Entrée pour sélectionner toutes les hiérarchies.[Op Script Builder - Hierarchies Menu] ----------------------------------- 1. interfaces 2. protocols 3. bridge-domains Q. Quit ----------------------------------- Please enter multiple selections separated by a comma (,) only. ----------------------------------- Enter Selection:> [default:all] 1
Dans la liste des variables, entrez les sélections de menu pour les variables que vous souhaitez paramétrer pour l’interface de service, ou appuyez sur Entrée pour paramétrer toutes les variables de cette hiérarchie.
List of variables to parameterize: ... [ edit groups vpn-service-template-group interfaces ] ----------------------------------- 1. interfaces/interface/name 2. interfaces/interface/description 3. interfaces/interface/unit/name 4. interfaces/interface/unit/family/bridge/interface-mode 5. interfaces/interface/unit/family/bridge/vlan-id Q. Quit Please enter multiple selections separated by a comma (,) only. ----------------------------------- Enter Selection:> [default:all] 1,2
Configurez les paramètres sélectionnés.
Le système vous invite à entrer les informations requises. Cet exemple configure le paramètre nom de l’interface en tant que et le paramètre de description de l’interface en tant
ifdesc
queifname
.Enter parameter name for: 1.interfaces/interface/name **************************** [ edit groups vpn-service-template-group interfaces ] Name for this parameter? ifname Do you want to revise 'ifname'? (yes/no)[no]: no Enter parameter name for: 2.interfaces/interface/description **************************** [ edit groups vpn-service-template-group interfaces ] Name for this parameter? ifdesc Do you want to revise 'ifdesc'? (yes/no)[no]: no
Configurez les paramètres sélectionnés à chaque niveau hiérarchique.
Le script effectue une itération sur chaque hiérarchie sélectionnée et sur les paramètres spécifiés. Si vous devez quitter le script service-builder.slax lors de la création de l’API de service, vous devez terminer la configuration de tous les paramètres de la hiérarchie actuelle afin d’enregistrer cette configuration de hiérarchie lorsque vous quittez à l’aide de l’option
Quit
.Générez l’interface de service, qui crée le script de service.
Une fois tous les paramètres configurés, le script vous invite automatiquement à générer l’interface de service. Appuyez sur Entrée ou tapez yes pour générer l’interface de service.
Do you want to commit the previously selected options to create vpn-service script? (yes/no)[yes]: yes Created service script: /var/db/scripts/op/vpn-service.slax
Vérification de l’interface de service
But
Vérifiez la création du script de service. Si l’instruction load-scripts-from-flash
est configurée, le fichier généré est stocké dans la mémoire flash. Sinon, le fichier généré est stocké sur le disque dur.
Action
Exécutez la commande du file list
mode opérationnel. Dans cet exemple, le script vpn-service.slax doit être présent dans le répertoire /var/db/scripts/op. Le script service-builder.slax génère également le script utility.slax dans le répertoire /var/db/scripts/op et le fichier vpn-service-builder-info.xml dans le répertoire /var/db/scripts/lib. Ces fichiers sont utilisés par le script service-builder.slax et ne doivent pas être supprimés.
user@host> file list /var/db/scripts/op /var/db/scripts/op: service-builder.slax utility.slax vpn-service.slax user@host> file list /var/db/scripts/lib /var/db/scripts/lib: vpn-service-builder-info.xml
Activation de l’interface de service
Procédure étape par étape
Pour activer l’interface de service sur un équipement distant :
Copiez le script de service généré sur l’appareil sur lequel vous provisionnez le nouveau service.
Si l’instruction n’est
load-scripts-from-flash
pas configurée, copiez le script de service dans le répertoire / var/db/scripts/op du second périphérique. Dans le cas contraire, le script doit être copié dans le répertoire correspondant sur la clé USB.Activez le script op dans la configuration.
[edit] user@host2# set system scripts op file vpn-service.slax
Validez la configuration.
[edit] user@host2# commit commit complete
En mode opérationnel, vérifiez que le script est activé et que les paramètres du service s’affichent en tant qu’arguments pour le script.
user@host2> op vpn-service ? Possible completions: <[Enter]> Execute this command <name> Argument name action Please enter either create/delete/update detail Display detailed output ifdesc Text description of interface ifname Name of interface service-id Service Name | Pipe through a command
Provisionnement du service à l’aide de NETCONF
Procédure étape par étape
Pour provisionner le service :
S’il n’est pas déjà configuré, configurez le service NETCONF sur SSH sur tous les périphériques sur lesquels vous provisionnez le nouveau service.
[edit] user@host2# set system services netconf ssh user@host2# commit
À partir d’un serveur de gestion de la configuration, établissez une session NETCONF avec l’appareil sur lequel vous provisionnez le service.
%ssh -p 830 -s user@host2 netconf user@host2's password: <!-- user user, class super-user --> <hello> <capabilities> <capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability> <capability> urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </capability> <capability>http://xml.juniper.net/netconf/junos/1.0</capability> <capability>http://xml.juniper.net/dmi/system/1.0</capability> </capabilities> <session-id>28898</session-id> </hello> ]]>]]>
Si vous provisionnez un nouveau service sur l’appareil, entrez un appel de procédure à distance (RPC) qui appelle le script d’opération de service à l’aide de l’action
create
et incluez les valeurs de tous les paramètres qui nécessitent une configuration.La valeur du
service-id
paramètre doit être identique au nom du service.<rpc> <op-script> <script>vpn-service</script> <action>create</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/5,ge-2/0/6</ifname> <ifdesc>connected to customer1-site-1,connected to customer3-site-2</ifdesc> </op-script> </rpc>
Mise à jour ou suppression de services à l’aide de NETCONF
Procédure étape par étape
Pour mettre à jour ou supprimer un service existant :
S’il n’est pas déjà configuré, configurez le service NETCONF via SSH sur tous les périphériques sur lesquels vous mettez à jour ou supprimez le service.
[edit] user@host2# set system services netconf ssh user@host2# commit
À partir d’un serveur de gestion de la configuration, établissez une session NETCONF avec l’appareil sur lequel vous provisionnez le service.
%ssh -p 830 -s user@host2 netconf user@host2's password: <!-- user user, class super-user --> <hello> <capabilities> <capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability> <capability> urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </capability> <capability>http://xml.juniper.net/netconf/junos/1.0</capability> <capability>http://xml.juniper.net/dmi/system/1.0</capability> </capabilities> <session-id>28898</session-id> </hello> ]]>]]>
Si le service donné est déjà approvisionné sur l’appareil et que vous le mettez à jour, entrez un RPC qui appelle le script d’opération de service à l’aide de l’action
update
et incluez des valeurs pour tous les paramètres qui nécessitent une mise à jour.<rpc> <op-script> <script>vpn-service</script> <action>update</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/5</ifname> <ifdesc>connected to customer1-site-2</ifdesc> </op-script> </rpc>
Si le service donné est déjà approvisionné sur l’appareil et que vous supprimez tout ou partie des paramètres de service, entrez un RPC qui appelle le script d’opération de service à l’aide de l’action
delete
et incluez tous les paramètres qui doivent être supprimés.<rpc> <op-script> <script>vpn-service</script> <action>update</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/6</ifname> </op-script> </rpc>
Vérification
Vérifiez que la configuration est mise à jour.
Vérification de la validation
But
Vérifiez que la validation a réussi.
Action
Exécutez la show system commit
commande mode opérationnel pour afficher les validations récentes. L’entrée de validation la plus récente indique qu’une validation a été effectuée via le serveur NETCONF par user
.
user@host2> show system commit 0 2012-05-21 12:15:08 PDT by user via junoscript 1 2012-05-18 09:47:40 PDT by user via other ...
Vérification de la configuration du service
But
Vérifiez que la configuration du service est présente dans la configuration active.
Action
Exécutez la commande mode opérationnel pour afficher les show configuration | compare rollback num
modifications de configuration.
user@host2> show configuration | compare rollback 1 [edit interfaces] + ge-2/0/5 { + description "connected to customer1-site-1"; + } + ge-2/0/6 { + description "connected to customer3-site-2"; + }
Sens
Une comparaison de la configuration actuelle avec la configuration précédente montre que les interfaces et les descriptions d’interface ont été ajoutées à la configuration.
Dépannage
- Dépannage d’un commit ayant échoué
- Dépannage d’une tentative infructueuse de suppression de paramètres de service
Dépannage d’un commit ayant échoué
Problème
Le message suivant s’affiche lors de la création, de la mise à jour ou de la suppression d’un service sur un périphérique par le biais d’une session NETCONF :
<output> configuration database modified </output>
La configuration contient précédemment des modifications non validées et le script de service ne peut pas valider les modifications de configuration du service.
Solution
Validez les modifications précédentes ou restaurez la configuration selon le cas, puis soumettez à nouveau les modifications apportées à la configuration du service.
Dépannage d’une tentative infructueuse de suppression de paramètres de service
Problème
Le message suivant s’affiche lors de la suppression d’un paramètre de service sur un périphérique via NETCONF :
<xnm:error xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"> <source-daemon> op-script </source-daemon> <message> xsl:attribute: Cannot add attributes to an element if children have been already added to the element. </message> </xnm:error>
Solution
Le RPC peut inclure à la fois le paramètre et un élément enfant. Supprimez l’élément enfant du RPC.