1、便利なリンク
IOS-XEとモデル駆動型ネットワークの自動化
https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2018/pdf/LTRCRT-2700.pdf
シスコIOS XEの16.xプラットフォーム用の設定NETCONF / YANGと検証例
プログラマビリティコンフィギュレーションガイド、Cisco IOSのXEエベレスト16.6.x
ヤン・エクスプローラ
https://github.com/CiscoDevNet/yang-explorer
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
3、导入YangModels
点击Login
username:guest
password:guess
Subscript
4、配置XE路由器
XE3(config)#netconf-yang //主要配置
Cisco-IOS-XE-native----->native --->interface --->GigabitEthernet name
ip---->address-choice
<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
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__ == '__main__':
parser = ArgumentParser(description='Usage:')
# script arguments
parser.add_argument('-a', '--host', type=str, required=True,
help="Device IP address or Hostname")
parser.add_argument('-u', '--username', type=str, required=True,
help="Device Username (netconf agent username)")
parser.add_argument('-p', '--password', type=str, required=True,
help="Device Password (netconf agent password)")
parser.add_argument('--port', 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 =真))