キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
233
閲覧回数
0
いいね!
0
コメント
Akira Iwamoto
Cisco Employee
Cisco Employee

 

 

はじめに

NSOではサービスパッケージの作成時に、テンプレートを使用することが出来ます。これはサービステンプレートとも呼ばれ、入力されたパラメータを展開した状態のデバイスConfig等を得るために使用されています。

 

NSO 5.6 では、部分毎をグループ化することが出来るようになりました。これによって、テンプレートファイルを効率よく書くことができ、また可読性もあがります。 

テンプレート例

以下の例では、GbEth マクロが定義されています。パラメータとして、name, desc, mask を受け取ることができ、name と mask にはデフォルト値が設定されています。また、マクロ内では、$name, $desc, $mask を使用してその値を使用しています。

 

作成されたマクロを使用するには、expand タグを使用します。このマクロは desc のみが必須パラメータとなっており、以下の例では name, mask パラメータが渡されていないため、それぞれデフォルト値が使用されます。

 

<config-template xmlns="http://tail-f.com/ns/config/1.0"
  servicepoint="l3vpn-template">
  <?macro GbEth name='{interface-number}' desc mask='255.255.255.252'?>
  <GigabitEthernet tags="nocreate">
    <name>$name</name>
    <description tags="merge">$desc</description>
    <ip tags="merge">
      <address>
        <primary>
          <address>{ip-address}</address>
          <mask>$mask</mask>
        </primary>
      </address>
    </ip>
  </GigabitEthernet>
  <?endmacro?>

  <devices xmlns="http://tail-f.com/ns/ncs">
    <?foreach {endpoint/ce}?>
    <device tags="nocreate">
      <name>{device}</name>
      <config tags="merge">
        <!-- CE template for Cisco IOS routers -->
        <interface xmlns="urn:ios">
          <?foreach {link}?>
            <?expand GbEth desc='Link to PE'?>
          <?end?>
          <?foreach {local}?>
            <?expand GbEth desc = 'Local network' mask='255.255.255.0'?>
          <?end?>
        </interface>

  

入れ子になったマクロ

マクロの定義は、以下のように入れ子にすることが可能です。GbEthWithVrf マクロでは、上で作成した GbEth マクロが使用されています。

 

  <?macro GbEthWithVrf name='{interface-number}'
      mask=255.255.255.252 desc forwarding?>
    <?expand GbEth name=$name desc='$desc' mask=$mask?>
    <GigabitEthernet tags="nocreate">
      <name>$name</name>
      <vrf tags="merge">
        <forwarding>$forwarding</forwarding>
      </vrf>
    </GigabitEthernet>
  <?endmacro?>

...

<interface xmlns="urn:ios" tags="nocreate">
<?foreach {link}?>
<?expand GbEthWithVrf desc = 'Link to CE router'
forwarding = '{string(/name)}'?>
<?end?>
</interface>

    

参考情報

サービステンプレートで使用可能なマクロについては、以下のドキュメントもご確認ください。

https://developer.cisco.com/docs/nso/guides/#!templates/service-templates

Macros in Service Templates

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします