SUR CETTE PAGE
Exemple : charger une configuration de base
Cet exemple de script de commit configure une configuration de base exemple sur un périphérique exécutant Junos OS.
Exigences
Cet exemple utilise un périphérique exécutant Junos OS.
Présentation et script de validation
Ce script est une macro qui configure un équipement exécutant Junos OS avec un exemple de configuration de base. Avec une saisie manuelle minimale de l’utilisateur, le script configure automatiquement :
Un nom d’hôte d’appareil
Services d’authentification
Une connexion de superutilisateur
Paramètres du journal système
Quelques paramètres SNMP
Services système, tels que FTP et Telnet
Routes statiques et stratégie de redistribution des routes statiques
re0
Groupes de configuration etre1
Une adresse pour l’interface Ethernet de gestion (fxp0)
L’interface de bouclage (lo0) avec l’ID de périphérique comme adresse de bouclage
L’exemple de script est présenté en syntaxe XSLT et SLAX :
Syntaxe XSLT
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:variable name="macro-name" select="'config-system.xsl'"/> <xsl:template match="configuration"> <xsl:variable name="rid" select="routing-options/router-id"/> <xsl:for-each select="apply-macro[name = 'config-system']"> <xsl:variable name="hostname" select="data[name = 'host-name']/value"/> <xsl:variable name="fxp0-addr" select="data[name = 'mgmt-address']/value"/> <xsl:variable name="backup-router" select="data[name = 'backup-router']/value"/> <xsl:variable name="bkup-rtr"> <xsl:choose> <xsl:when test="$backup-router"> <xsl:value-of select="$backup-router"/> </xsl:when> <xsl:otherwise> <xsl:variable name="fxp01" select="substring-before($fxp0-addr, '.')"/> <xsl:variable name="fxp02" select="substring-before(substring-after($fxp0-addr, '.'), '.')"/> <xsl:variable name="fxp03" select="substring-before(substring-after(substring-after( $fxp0-addr, '.'), '.'), '.')"/> <xsl:variable name="plen" select="substring-after($fxp0-addr, '/')"/> <xsl:choose> <xsl:when test="$plen = 22"> <xsl:value-of select="concat($fxp01, '.', $fxp02, '.', $fxp03 div 4 * 4 + 3, '.254')"/> </xsl:when> <xsl:when test="$plen = 24"> <xsl:value-of select="concat($fxp01, '.', $fxp02, '.', $fxp03, '.254')"/> </xsl:when> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="not($rid) or not($hostname) or not($fxp0-addr)"> <xnm:error> <message> Must set router ID, host-name and mgmt-address to use this script. </message> </xnm:error> </xsl:when> <xsl:otherwise> <transient-change> <system> <!-- Set the following --> <domain-name>your-domain.net</domain-name> <domain-search>domain.net</domain-search> <backup-router> <address><xsl:value-of select="$bkup-rtr"/></address> </backup-router> <time-zone>America/Los_Angeles</time-zone> <authentication-order>radius</authentication-order> <authentication-order>password</authentication-order> <root-authentication> <encrypted-password> $ABC123 </encrypted-password> </root-authentication> <name-server> <name>192.168.5.68</name> </name-server> <name-server> <name>172.17.28.100</name> </name-server> <radius-server> <name>192.168.170.241</name> <secret> $ABC123 </secret> </radius-server> <radius-server> <name>192.168.4.240</name> <secret> $ABC123 </secret> </radius-server> <login> <class> <permissions>all</permissions> </class> <user> <name>johnny</name> <uid>928</uid> <class>superuser</class> <authentication> <encrypted-password> $ABC123 </encrypted-password> </authentication> </user> </login> <services> <finger/> <ftp/> <ssh/> <telnet/> <xnm-clear-text/> </services> <syslog> <user> <name>*</name> <contents> <name>any</name> <emergency/> </contents> </user> <host> <name>host1</name> <contents> <name>any</name> <notice/> </contents> <contents> <name>interactive-commands</name> <any/> </contents> </host> <file> <name>messages</name> <contents> <name>any</name> <notice/> </contents> <contents> <name>any</name> <warning/> </contents> <contents> <name>authorization</name> <info/> </contents> <archive> <world-readable/> </archive> </file> <file> <name>security</name> <contents> <name>interactive-commands</name> <any/> </contents> <archive> <world-readable/> </archive> </file> </syslog> <processes> <routing> <undocumented><enable/></undocumented> </routing> <snmp> <undocumented><enable/></undocumented> </snmp> <ntp> <undocumented><enable/></undocumented> </ntp> <inet-process> <undocumented><enable/></undocumented> </inet-process> <mib-process> <undocumented><enable/></undocumented> </mib-process> <undocumented><management><enable/> </undocumented></management> <watchdog> <enable/> </watchdog> </processes> <ntp> <boot-server>domain.net</boot-server> <server> <name>domainr.net</name> </server> </ntp> </system> <snmp> <location>Software lab</location> <contact>Michael Landon</contact> <interface>fxp0.0</interface> <community> <name>public</name> <authorization>read-only</authorization> <clients> <name>0.0.0.0/0</name> <restrict/> </clients> <clients> <name>192.168.1.252/32</name> </clients> <clients> <name>10.197.169.222/32</name> </clients> <clients> <name>10.197.169.188/32</name> </clients> <clients> <name>10.197.169.193/32</name> </clients> <clients> <name>192.168.65.46/32</name> </clients> <clients> <name>10.209.152.0/23</name> </clients> </community> <community> <name>private</name> <authorization>read-write</authorization> <clients> <name>0.0.0.0/0</name> <restrict/> </clients> <clients> <name>10.197.169.188/32</name> </clients> </community> </snmp> <routing-options> <static> <junos:comment>/* safety precaution */</junos:comment> <route> <name>0.0.0.0/0</name> <discard/> <retain/> <no-readvertise/> </route> <junos:comment>/* corporate net */</junos:comment> <route> <name>172.16.0.0/12</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* lab nets */</junos:comment> <route> <name>192.168.0.0/16</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* reflector */</junos:comment> <route> <name>10.17.136.192/32</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* another lab1*/</junos:comment> <route> <name>10.10.0.0/16</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* ssh servers */</junos:comment> <route> <name>10.17.136.0/24</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* Workstations */</junos:comment> <route> <name>10.150.0.0/16</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* Hosts */</junos:comment> <route> <name>10.157.64.0/19</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> <junos:comment>/* Build Servers */</junos:comment> <route> <name>10.10.0.0/16</name> <next-hop><xsl:value-of select="$bkup-rtr"/></next-hop> <retain/> <no-readvertise/> </route> </static> </routing-options> <policy-options> <policy-statement> <name>redist</name> <from> <protocol>static</protocol> </from> <then> <accept/> </then> </policy-statement> </policy-options> <apply-groups>re0</apply-groups> <apply-groups>re1</apply-groups> <groups> <name>re0</name> <system> <host-name> <xsl:value-of select="$hostname"/></host-name> </system> <interfaces> <interface> <name>fxp0</name> <unit> <name>0</name> <family> <inet> <address> <name> <xsl:value-of select="$fxp0-addr"/> </name> </address> </inet> </family> </unit> </interface> </interfaces> </groups> <groups> <name>re1</name> </groups> <interfaces> <interface> <name>lo0</name> <unit> <name>0</name> <family> <inet> <address> <name><xsl:value-of select="$rid"/></name> </address> </inet> </family> </unit> </interface> </interfaces> </transient-change> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Syntaxe SLAX
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; var $macro-name = 'config-system.xsl'; match configuration { var $rid = routing-options/router-id; for-each (apply-macro[name = 'config-system']) { var $hostname = data[name = 'host-name']/value; var $fxp0-addr = data[name = 'mgmt-address']/value; var $backup-router = data[name = 'backup-router']/value; var $bkup-rtr = { if ($backup-router) { expr $backup-router; } else { var $fxp01 = substring-before($fxp0-addr,'.'); var $fxp02 = substring-before(substring-after($fxp0-addr, '.'), '.'); var $fxp03 = substring-before(substring-after(substring-after( $fxp0- addr, '.'), '.'), '.'); var $plen = substring-after($fxp0-addr, '/'); if ($plen = 22) { expr $fxp01 _ '.' _ $fxp02 _ '.' _ $fxp03 div 4 * 4 + 3 _ '.254'; } else if ($plen = 24) { expr $fxp01 _ '.' _ $fxp02 _ '.' _ $fxp03 _ '.254'; } } } if (not($rid) or not($hostname) or not($fxp0-addr)) { <xnm:error> { <message> "Must set router ID, host-name, and mgmt-address to use this script."; } } else { <transient-change> { <system> { /* Set the following */ <domain-name> "your-domain.net"; <domain-search> "domain.net"; <backup-router> { <address> $bkup-rtr; } <time-zone> "America/Los_Angeles"; <authentication-order> "radius"; <authentication-order> "password"; <root-authentication> { <encrypted-password> "$ABC123"; } <name-server> { <name> "192.168.5.68"; } <name-server> { <name> "172.17.28.100"; } <radius-server> { <name> "192.168.170.241"; <secret> "$ABC123"; } <radius-server> { <name> "192.168.4.240"; <secret> "$ABC123"; } <login> { <class> { <permissions> "all"; } <user> { <name> "johnny"; <uid> "928"; <class> "superuser"; <authentication> { <encrypted-password>"$ABC123"; } } } <services> { <finger>; <ftp>; <ssh>; <telnet>; <xnm-clear-text>; } <syslog> { <user> { <name> "*"; <contents> { <name> "any"; <emergency>; } } <host> { <name> "host1"; <contents> { <name> "any"; <notice>; } <contents> { <name> "interactive-commands"; <any>; } } <file> { <name> "messages"; <contents> { <name> "any"; <notice>; } <contents> { <name> "any"; <warning>; } <contents> { <name> "authorization"; <info>; } <archive> { <world-readable>; } } <file> { <name> "security"; <contents> { <name> "interactive-commands"; <any>; } <archive> { <world-readable>; } } } <processes> { <routing> { <undocumented><enable>; } <snmp> { <undocumented><enable>; } <ntp> { <undocumented><enable>; } <inet-process> { <undocumented> <enable>; } <mib-process> { <undocumented> <enable>; } <undocumented><management> { <enable>; } <watchdog> { <enable>; } <ntp> { <boot-server> "domain.net"; <server> { <name> "domainr.net"; } } } <snmp> { <location> "Software lab"; <contact> "Michael Landon"; <interface> "fxp0.0"; <community> { <name> "public"; <authorization> "read-only"; <clients> { <name> "0.0.0.0/0"; <restrict>; } <clients> { <name> "192.168.1.252/32"; } <clients> { <name> "10.197.169.222/32"; } <clients> { <name> "10.197.169.188/32"; } <clients> { <name> "10.197.169.193/32"; } <clients> { <name> "192.168.65.46/32"; } <clients> { <name> "10.209.152.0/23"; } } <community> { <name> "private"; <authorization> "read-write"; <clients> { <name> "0.0.0.0/0"; <restrict>; } <clients> { <name> "10.197.169.188/32"; } } } <routing-options> { <static> { <junos:comment> "/* safety precaution */"; <route> { <name> "0.0.0.0/0"; <discard>; <retain>; <no-readvertise>; } <junos:comment> "/* corporate net */"; <route> { <name> "172.16.0.0/12"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* lab nets */"; <route> { <name> "192.168.0.0/16"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* reflector */"; <route> { <name> "10.17.136.192/32"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* another lab1*/"; <route> { <name> "10.10.0.0/16"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* ssh servers */"; <route> { <name> "10.17.136.0/24"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* Workstations */"; <route> { <name> "10.150.0.0/16"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* Hosts */"; <route> { <name> "10.157.64.0/19"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } <junos:comment> "/* Build Servers */"; <route> { <name> "10.10.0.0/16"; <next-hop> $bkup-rtr; <retain>; <no-readvertise>; } } } <policy-options> { <policy-statement> { <name> "redist"; <from> { <protocol> "static"; } <then> { <accept>; } } } <apply-groups> "re0"; <apply-groups> "re1"; <groups> { <name> "re0"; <system> { <host-name> $hostname; } <interfaces> { <interface> { <name> "fxp0"; <unit> { <name> "0"; <family> { <inet> { <address> { <name> $fxp0-addr; } } } } } } } <groups> { <name> "re1"; } <interfaces> { <interface> { <name> "lo0"; <unit> { <name> "0"; <family> { <inet> { <address> { <name> $rid; } } } } } } } } } }
Configuration
Procédure
Procédure étape par étape
Pour télécharger, activer et tester le script :
Copiez le script dans un fichier texte, nommez le fichier config-system.xsl ou config-system.slax selon le cas, puis copiez-le dans le répertoire /var/db/scripts/commit/ sur le périphérique.
Sélectionnez les strophes de configuration de test suivantes, puis appuyez sur Ctrl+c pour les copier dans le Presse-papiers.
Si vous utilisez la version SLAX du script, remplacez le nom de fichier au niveau de la
[edit system scripts commit file]
hiérarchie par config-system.slax.system { scripts { commit { allow-transients; file config-system.xsl; } } } apply-macro config-system { host-name test; mgmt-address 10.0.0.1/32; backup-router 10.0.0.2; }
Les
host-name
déclarations etmgmt-address
sont obligatoires. L’instructionbackup-router
est facultative. Vous pouvez remplacer un nom d’hôte, une adresse IP Ethernet de gestion (fxp0) et une adresse IP de routeur de secours appropriées à votre appareil.En mode configuration, exécutez la
load merge terminal
commande pour fusionner les strophes dans la configuration de votre appareil.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
À l’invite, collez le contenu du presse-papiers à l’aide de la souris et de l’icône Coller.
Appuyez sur Entrée.
Appuyez sur Ctrl+d.
Validez la configuration.
user@host# commit
Vérification
Vérification de la configuration
But
Vérifiez que le script se comporte comme prévu.
Action
Après avoir validé la configuration, exécutez la commande configuration mode pour afficher la show | display commit-scripts
configuration de base de l’appareil.
user@host# show | display commit-scripts ...