このページで
例:基本構成の読み込み
このコミット スクリプトの例では、Junos OS を実行するデバイスでサンプル ベース設定を設定します。
要件
この例では、Junos OSを実行しているデバイスを使用しています。
概要とコミット スクリプト
このスクリプトは、Junos OS を実行するデバイスをサンプルベース設定で設定するマクロです。手動入力を最小限に抑えながら、スクリプトは自動的に以下を設定します。
デバイス ホスト名
認証サービス
スーパーユーザーログイン
システム ログ設定
一部のSNMP設定
FTP や Telnet などのシステム サービス
静的ルートと静的ルートを再分配するポリシー
設定グループ
re0とre1管理イーサネット インターフェイス(fxp0)のアドレス
デバイスIDをループバックアドレスとしたループバックインターフェイス(lo0)
このスクリプトの例は、XSLT と SLAX の両方の構文で示されています。
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>
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;
}
}
}
}
}
}
}
}
}
}
構成
手順
手順
スクリプトをダウンロード、有効化、テストするには、以下の手順にしたがっています。
スクリプトをテキスト ファイルにコピーし、必要に応じて config-system.xsl または config-system.slax に名前を付け、デバイス上の /var/db/scripts/commit/ ディレクトリにコピーします。
以下のテスト構成スタンザを選択し、Ctrl+cを押してクリップボードにコピーします。
スクリプトの SLAX バージョンを使用している場合は、 階層レベルのファイル名を
[edit system scripts commit file]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; }host-nameおよびmgmt-addressステートメントは必須です。ステートメントはbackup-routerオプションです。ホスト名、管理イーサネット(fxp0)IPアドレス、デバイスに適したバックアップルーターIPアドレスを代わりに使用できます。設定モードで、 コマンドを
load merge terminal発行して、スタンザをデバイス設定にマージします。[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
プロンプトで、マウスと貼り付けアイコンを使用して、クリップボードの内容を貼り付けます。
Enter キーを押します。
Ctrl+dを押します。
設定をコミットします。
user@host# commit