NETCONFの設定CISCO XE(csr1000v)初めての経験

 

1、便利なリンク

IOS-XEとモデル駆動型ネットワークの自動化 

https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2018/pdf/LTRCRT-2700.pdf

 

シスコIOS XEの16.xプラットフォーム用の設定NETCONF / YANGと検証例

https://www.cisco.com/c/en/us/support/docs/storage-networking/management/200933-YANG-NETCONF-Configuration-Validation.html

 

プログラマビリティコンフィギュレーションガイド、Cisco IOSのXEエベレスト16.6.x

https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/166/b_166_programmability_cg/configuring_yang_datamodel.html

 

ヤン・エクスプローラ

https://github.com/CiscoDevNet/yang-explorer

 

YangModels

https://github.com/YangModels

 

図2に示すように、取付ヤン・エクスプローラ

準備:

  MAC、Linuxの(ウィンドウでサポートされていません)

  python 2.7

  ピップソフトウェアマネージャー

  Flashプラグインを持つブラウザ(推奨クロム)

// --upgradeピップをインストールPIP

// YUMのpython-virtualenvのインストール

// yumをgraphvizのインストール

、PIPソースを変更

ます。mkdir〜/ .pip

そこ〜/ .pip / pip.conf

[グローバル]

インデックス-URL = https://pypi.tuna.tsinghua.edu.cn/simple

[インストール]

信頼されたホスト= mirrors.aliyun.com 

yumをpython2-PIPのpython-virtualenvのgraphvizの-yをインストール

依存コンポーネント:

YUMのlibxml2-develのlibxsltは-develののpython-develのはzlib-develのGCCのgit -yをインストール

gitのクローン  https://github.com/CiscoDevNet/yang-explorer.git

B、インストール

CDヤン・エクスプローラ/

バッシュsetup.sh

 

省略。。。。。。。

正常にビルドYDK-モデル-CISCO-IOS-XR

収集したパッケージのインストール:YDK-モデル-CISCO-IOS-XR

正常にインストールYDK-モデル-CISCO-IOS-XR-6.2.1

依存関係をインストール..済

初期データベースのセットアップ...

警告:rootとしてデータベースのセットアップ、これは推奨されません。

別の方法としては、非ルートとして、このスクリプトを再実行することができます

root権限なしで設定データベースへ。

あなたは、DOルートを続けますか?(N- / N)にしたいAS Y-が  //データベースを初期化します

データディレクトリを作成します。..

データベースの作成..

実行する操作:

  移行前のアプリを同期する:staticfiles、メッセージ、エクスプローラ

  管理者、contenttypesの、認証、セッション:すべてのマイグレーションを適用します

移行せずにアプリケーションを同期化:

  テーブルを作成しています...

    テーブルexplorer_collectionを作成します

    テーブルexplorer_userprofileを作成します

    テーブルexplorer_deviceprofileを作成します

    繰延SQLを実行しています...

  カスタムSQLをインストールします...

マイグレーションを実行します:

  モデルを述べてレンダリング... DONE

  OK ... contenttypes.0001_initialを適用します

  OK ... auth.0001_initial適用

  OK ... admin.0001_initial適用

  OK ... contenttypes.0002_remove_content_type_nameを適用します

  auth.0002_alter_permission_name_max_length適用... OK

  auth.0003_alter_user_email_max_length適用... OK

  OK ... auth.0004_alter_user_username_optsを適用します

  OK ... auth.0005_alter_user_last_login_null適用

  OK ... auth.0006_require_contenttypes_0002を適用します

  OK ... sessions.0001_initialを適用します

デフォルトのユーザーを作成します。..

デフォルトのモデルをコピーします。..

セットアップが完了しました。..

ヤン・エクスプローラ・サーバを起動するstart.shを使用して、

インストールは完了です。

C、設定ファイルを変更し、ヤン・exporerを実行します

[ルート@デスクヤン・エクスプローラ]#のCDサーバ/静的/

[ルート@デスク静的]#viのYangExplorer.html 

VAR swfVersionStrは= "16.0.0";

            //、playerProductInstall.swfに設定し、インストールそれ以外の場合は、空の文字列を表現するために使用します。

            VAR xiSwfUrlStr = "のexpressInstall.swf"。

            VaRのFlashVarsの= {};

            =&APOS、flashvars.host; 192.168.0.87&APOS、;; //アドレスとリスンポートを変更

            flashvars.port = 'は、8088&APOS ;;

[ルート@机の静的]#のCD ..

[ルート@机サーバー]#のCD ..

[ルート@デスクヤン・エクスプローラ]#viののstart.sh

#!は/ usr / binに/のenv bashの

HOST = 'は、192.168.0.87 'は、

PORT = 'は、8088'は、

ncclientのための#設定されたタイムアウト値

輸出NCCLIENT_TIMEOUT = 90

[ルート@デスクヤン・エクスプローラ]#LSは

デフォルト・モデルのドキュメントenv.sh LICENSE README.md requirements.txtサーバsetup.sh start.shのVのYangExplorer

[ルート@デスクヤン・エクスプローラ]#./start.sh

virtualenvのをアクティブにします。..

YangExplorerサーバの起動..

http://192.168.0.87:8088/static/YangExplorer.htmlを使用してください

システムチェックを実行します...

システムチェックは何の問題(沈黙0)を特定していません。

2019年7月17日 - 午前15時22分46秒

server.settings 'は、設定&APOSを使ってDjangoのバージョン1.8.3、。

http://192.168.0.87:8088/で開発用サーバを起動します

CONTROL-Cでサーバーを終了します。

ブラウザを開きます。

http://192.168.0.87:8088/static/YangExplorer.html

image_5d2f5486_901

 

3、导入YangModels

点击Login

username:guest

password:guess

image_5d2f5487_3ec7

image_5d2f5487_6ff1

Subscript

 

4、配置XE路由器

XE3(config)#netconf-yang      //主要配置

 

image_5d2f5487_64b0

Cisco-IOS-XE-native----->native --->interface --->GigabitEthernet          name 

                                                                                                      ip---->address-choice

image_5d2f5487_2eb0

<rpc-reply message-id="urn:uuid:79b79a13-844a-4248-aac5-c47401b15745" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

  <ok/>

</rpc-reply>

检查

XE3#sh ip inter b

Interface              IP-Address      OK? Method Status                Protocol

GigabitEthernet1       192.168.0.29    YES DHCP   up                    up     

GigabitEthernet2      10.1.1.1        YES other  administratively down down   

GigabitEthernet3       unassigned      YES unset  administratively down down    

image_5d2f5487_5526

XE3#sh ip inter b

Interface              IP-Address      OK? Method Status                Protocol

GigabitEthernet1       192.168.0.29    YES DHCP   up                    up     

GigabitEthernet2       10.1.1.1        YES other  up                    up     

GigabitEthernet3       unassigned      YES unset  administratively down down 

产生python文件:

"""

    Netconf python example by yang-explorer (https://github.com/CiscoDevNet/yang-explorer)

    Installing python dependencies:

    > pip install lxml ncclient

    Running script: (save as example.py)

    > python example.py -a 192.168.0.29 -u yoyoo -p yoyoo123 --port 830         //执行python的方法

"""

import lxml.etree as ET

from argparse import ArgumentParser

from ncclient import manager

from ncclient.operations import RPCError

payload = """

<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

  <native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">

    <interface>

      <GigabitEthernet>

        <name>2</name>

        <ip>

          <address>

            <primary>

              <address>10.1.1.1</address>

              <mask>255.255.255.0</mask>

            </primary>

          </address>

        </ip>

      </GigabitEthernet>

    </interface>

  </native>

</config>

"""

if __name__ == &apos;__main__&apos;:

    parser = ArgumentParser(description=&apos;Usage:&apos;)

    # script arguments

    parser.add_argument(&apos;-a&apos;, &apos;--host&apos;, type=str, required=True,

                        help="Device IP address or Hostname")

    parser.add_argument(&apos;-u&apos;, &apos;--username&apos;, type=str, required=True,

                        help="Device Username (netconf agent username)")

    parser.add_argument(&apos;-p&apos;, &apos;--password&apos;, type=str, required=True,

                        help="Device Password (netconf agent password)")

    parser.add_argument(&apos;--port&apos;, type=int, default=830,

                        help="Netconf agent port")

    args = parser.parse_args()

    # connect to netconf agent

    with manager.connect(host=args.host,

                         port=args.port,

                         ユーザ名= args.username、

                         パスワード= args.password、

                         タイムアウト= 90、

                         hostkey_verify = Falseの、

                         device_paramsの= { 'は、名前&APOS ;:'は、CSR 'は、})Mとして得ました:

        #NETCONF操作を実行

        試してみてください。

            応答= m.edit_config(目標= 'は、実行&APOS ;,設定=ペイロード)の.xml

            データ= ET.fromstring(応答)

        eとRPCError除きます:

            データ= e._raw

        #出力を美しく

        印刷(ET.tostring(データ、pretty_print =真))

おすすめ

転載: blog.51cto.com/9657371/2421240