YANG Explorer에서 YANG 모델에 익숙해지기

YANG Explorer라는 오픈 소스 애플리케이션을 시도한 기록. YANG 브라우저, RPC(Remote Procedure Call)의 생성, 실행 등 Netconf/YANG 주위의 확인이나 테스트, 조금 사람에게 보여주는 데모에 사용할 수 있을지도. 소스와 매뉴얼은 아래에 있습니다.
htps : // 기주 b. 코 m / shi s 쓰레기 v t / 얀 g 에 xp ㄉ r

주요 기능


  • YANG 모델 파일의 로컬에서 YANG Explorer로 업로드
  • YANG 모델 지원 장치 (Netconf 서버, 즉 라우터 또는 스위치 등)에서 YANG Explorer로 다운로드
  • YANG 모델 파일을 컴파일하고 보기 쉽게 표시 (Pyang 같은 데이터 모델 트리)
  • 장치 (Netconf 서버)에 대해 RPC 실행 (Read/Write)
  • RPC 생성, 저장
  • Python 스크립트 생성, 저장
  • YANG 모델 종속 그래프 생성
  • Restconf는 실험 단계

  • 설치



    Readme 그대로이므로 간단. 내 경우에는 실험실에 남아있는 오래된 우분투에 넣으면 원활하게 들어갔다.
    pip install --upgrade pip
    sudo apt-get install python-virtualenv
    sudo apt-get install graphviz
    sudo apt-get install libxml2-dev libxslt1-dev python-dev zlib1g-dev
    git clone https://github.com/CiscoDevNet/yang-explorer.git
    cd yang-explorer
    bash setup.sh
    

    YangExplorer.html에 주소와 포트 번호를 추가하는 것을 잊지 않도록 (설치를 localhost 이외의 경우).
    cd <install-root>/yang-explorer/server/static
    vi YangExplorer.html 
    +     flashvars.host = '<ip-address>';
    +     flashvars.port = '8088';
    

    (참고) 내 환경.
    kikuta@ubuntu1:~$ cat /etc/os-release | grep VERSION
    VERSION="14.04.5 LTS, Trusty Tahr"
    VERSION_ID="14.04"
    

    start.sh를 실행하고 터미널을 올려두면 OK.
    kikuta@ubuntu1:/home/kikuta/yang-explorer# ls
    default-models  env.sh   README.md         server    start.sh  YangExplorer
    docs            LICENSE  requirements.txt  setup.sh  v
    kikuta@ubuntu1:/home/kikuta/yang-explorer# ./start.sh
    
    Activating virtualenv ..
    Starting YangExplorer server ..
    Use http://10.71.154.119:8088/static/YangExplorer.html
    
    Performing system checks...
    
    System check identified no issues (0 silenced).
    March 27, 2017 - 02:21:55
    Django version 1.8.3, using settings 'server.settings'
    Starting development server at http://10.71.154.119:8088/
    Quit the server with CONTROL-C.
    

    브라우저에서 http://host:8088/에 액세스하면 다음이 표시됩니다.



    Create device profile, 또는 Admin으로부터 접속 대상의 디바이스 정보를 등록해 두면 프로파일로부터 선택할 수 있게 된다.


    YANG 모델 다운로드



    설치시에는,ietf-interface 밖에 들어 있지 않기 때문에, 등록한 CSR1000V로부터 취득(파일을 로컬로부터 업로드해도 좋다). 가운데 탭에서 "Manage Models"를 선택하고 장치 탭에서 구성된 프로파일을 선택하면 다음과 같이 장치의 YANG 모듈을 확인할 수 있습니다.


    단번에 하려고 하면 Fail했기 때문에, 필요분을 조금씩.


    선택한 모듈에 의존하는 관련 모듈도 자동으로 보완된다. 그리고는 필요에 따라서 체크해, Subscribe 버튼을 포치. 왼쪽 창에서 YANG 모듈을 클릭 클릭 할 수 있습니다. 오른쪽 끝 창에서 각각의 의미를 확인.



    참고: pyang



    여기 에서 떨어진 YANG 모듈을 Pyang으로 트리 표시한 곳. 이것은 이것으로 충분히 이해하기 쉽다.
    sudo pip install pyang
    
    ~ $pyang -f tree ietf-interfaces\@2014-05-08.yang 
    module: ietf-interfaces
        +--rw interfaces
        |  +--rw interface* [name]
        |     +--rw name                        string
        |     +--rw description?                string
        |     +--rw type                        identityref
        |     +--rw enabled?                    boolean
        |     +--rw link-up-down-trap-enable?   enumeration {if-mib}?
        +--ro interfaces-state
           +--ro interface* [name]
              +--ro name               string
              +--ro type               identityref
              +--ro admin-status       enumeration {if-mib}?
              +--ro oper-status        enumeration
              +--ro last-change?       yang:date-and-time
              +--ro if-index           int32 {if-mib}?
              +--ro phys-address?      yang:phys-address
              +--ro higher-layer-if*   interface-state-ref
              +--ro lower-layer-if*    interface-state-ref
              +--ro speed?             yang:gauge64
              +--ro statistics
                 +--ro discontinuity-time    yang:date-and-time
                 +--ro in-octets?            yang:counter64
                 +--ro in-unicast-pkts?      yang:counter64
                 +--ro in-broadcast-pkts?    yang:counter64
                 +--ro in-multicast-pkts?    yang:counter64
                 +--ro in-discards?          yang:counter32
                 +--ro in-errors?            yang:counter32
                 +--ro in-unknown-protos?    yang:counter32
                 +--ro out-octets?           yang:counter64
                 +--ro out-unicast-pkts?     yang:counter64
                 +--ro out-broadcast-pkts?   yang:counter64
                 +--ro out-multicast-pkts?   yang:counter64
                 +--ro out-discards?         yang:counter32
                 +--ro out-errors?           yang:counter32
    

    로드(Read)



    우선 결정의 capability 취득.


    라우팅 인스턴스를 얻는 RPC 생성 ...


    Run에서 가져옵니다. 중간 하단의 윈도우에 리턴이 갱신.


    RPC가 아니라 Python 스크립트도 생성해주는 것 같다 (Python2.7이지만).


    설정(Write)



    빈 인터페이스를 설정하고 시작시켜 보자.

    CSR1000V
    CSR-2#sh run int gi 2
    Building configuration...
    
    Current configuration : 107 bytes
    !
    interface GigabitEthernet2
     no ip address
     shutdown
     negotiation auto
     no mop enabled
     no mop sysid
    end
    

    왼쪽 창의 매개 변수를 입력하여 하단의 Config를 확인하십시오. 중간 창의 RPC 버튼을 클릭하면 다음과 같이 RPC를 생성. 그리고 Run.


    RPC 리플라이는 OK가 리턴.


    CSR1000V에도 설정이 이루어지고 있는지 확인.

    CSR1000V
    CSR-2#sh run int gi 2
    Building configuration...
    
    Current configuration : 150 bytes
    !
    interface GigabitEthernet2
     description Set-by-YangExplr
     ip address 192.168.2.1 255.255.255.0
     negotiation auto
     no mop enabled
     no mop sysid
    end
    

    YANG 모델 종속 그래프



    Manage Device에서 적당히 Sync한 YANG 모듈이지만, 가운데 하단의 우단의 Graph 버튼을 클릭하면, YANG 모듈의 의존관계를 나타내는 그래프가 표시된다.


    세세하게 YANG 모듈을 읽기 전에, 쭉 전체를 이해하는데 편리하다고 합니다.

    좋은 웹페이지 즐겨찾기