NETSIM을 이용한 NSO 가이드
NSO 설치 모드 종류
시스템 설치 (system-install):
- 중앙 집중식의 "Always-On" 프로덕션 환경에 적합.
- 운영체제와 함께 시작하고 종료되는 시스템 데몬으로 설정.
- 데몬(daemon) : 서버 프로세스로 시스템이 살아 있는 동안 항상 실행되는 백그라운드 프로세스 상태로 존재
- 기본 자격 증명 및 애플리케이션 설치 위치가 일반적인 Linux 애플리케이션 규칙을 따른다.
로컬 설치 (local-install):
- 개발 및 평가 목적으로 사용
- 문서, 예제 등 모든 애플리케이션 구성 요소를 압축 해제
- NSO 인스턴스 생성 및 시작 가능
- 하나의 워크스테이션에서 여러 개의 독립적인 NSO 인스턴스( = 가상환경)를 동시에 실행하지 않고 사용할 수 있다.
- 편의성을 위해 기본 자격 증명을 포함하며, 접근하기 쉬운 폴더에 설치.
NSO 로컬 설치 과정
NSO 설치 디렉토리 확인
- 로컬 설치 시 사용자 홈 디렉토리에 nso-<NSO_VERSION>폴더가 생성
환경 변수 설정
- env | grep -i ncs 명령으로 NSO 관련 환경 변수 검색
- 환경 변수를 사용하면 여러 NSO 버전 전환 가능
- 명령어
env | grep -i ncs ls -l ls -l $NCS_DIR
ncsrc 파일 소싱
- 파일 소싱을 통해 NSO 명령어 사용가능 환경으로 변경
- 명령어
source $NCS_DIR/ncsrc
- vi, nano 편집기를 이용해 .bashrc 파일에 위의 명령어를 추가하면 자동으로 반영
Netsim(네트워크 시뮬레이터)을 이용한 가상 네트워크 환경 구축
- ncs-netsim 도구를 사용해 NSO가 관리할 가상 네트워크 장비를 생성
- 예시: 명령어를 통해 Cisco IOS, IOS-XR, NX-OS, ASA 장비를 시뮬레이션 네트워크 구축
ncs-netsim --dir ~/src/nso-instance/netsim create-network $NCS_DIR/packages/neds/cisco-ios-cli-3.0 2 dist-rtr ncs-netsim --dir ~/src/nso-instance/netsim add-to-network $NCS_DIR/packages/neds/cisco-ios-cli-3.0 1 edge-sw ncs-netsim --dir ~/src/nso-instance/netsim add-to-network $NCS_DIR/packages/neds/cisco-ios-cli-3.0 1 internet-rtr ncs-netsim --dir ~/src/nso-instance/netsim add-to-network $NCS_DIR/packages/neds/cisco-iosxr-cli-3.5 2 core-rtr ncs-netsim --dir ~/src/nso-instance/netsim add-to-network $NCS_DIR/packages/neds/cisco-nx-cli-3.0 2 dist-sw ncs-netsim --dir ~/src/nso-instance/netsim add-to-network $NCS_DIR/packages/neds/cisco-asa-cli-6.6 1 edge-firewall
ncs-setup을 이용한 NSO 인스턴스 생성
- ncs-setup 스크립트를 사용하여 NSO 인스턴스를 생성
- 주요 옵션:
- --dest <디렉토리> : NSO 인스턴스를 설치할 디렉토리를 지정.(디렉토리가 없을시 시스템이 생성)
- --netsim-dir <Netsim 디렉토리> : 기존에 생성한 Netsim 환경 디렉토리를 지정
ncs-setup --dest ~/src/nso-instance --netsim-dir ~/src/nso-instance/netsim
생성된 NSO 인스턴스 디렉토리 확인
- ncs-setup 실행 후 디렉토리 (~/src/ncs-instance)에 NSO 인스턴스 관련 파일 및 폴더가 생성
- ncs.conf : NSO 인스턴스 설정 파일
- packages/: 설정 시 지정된 NED 심볼릭 링크.
- ncs-setup 실행 후 디렉토리 (~/src/ncs-instance)에 NSO 인스턴스 관련 파일 및 폴더가 생성
Netsim 및 NSO 인스턴스 시작
- NSO 인스턴스 디렉토리로 이동 후 ncs-netsim start
(
가상 네트워크 시뮬레이터 시작.) - ncs 명령어를 통한 NSO 인스턴스 시작.
cd ~/src/nso-instance/ ncs-netsim start ncs ncs --status | grep status
- NSO 인스턴스 디렉토리로 이동 후 ncs-netsim start
NSO 인스턴스 초기 설정 (netsim 환경)
- netsim 환경은 초기설정 당시 net-setup을 통해 가상 장비를 이미 로드하기 때문에 바로 개발이 가능
- NSO CLI 접속
ncs_cli -C -u admin
- 장비 목록 확인 및 연결 상태 확인
show devices list devices connect
- 현재 네트워크 상태 확습* 주의사항 (아래 코드 입력시 현재 가지고 있는 장비 설정을 빈 설정으로 덮어 씌우는 행위) *
devices sync-from
devices sync-to
장치 구성 업데이트
- NSO 접속 코드
ncs_cli -C -u adminconfig
- 단일 장치 업데이트 및 현재 경로 확인
devices device dist-sw0 pwd
- VLAN 및 인터페이스 추가
vlan 42 name TheAnswer exit interface Vlan 42 description "Answer to the Ultimate Question of Life, the Universe, and Everything" ip address 10.42.42.42/24 exit
- 커밋 대기 중인 현재 구성 확인
show configuration | nomore
- 장비 구성 xml 파일로 가져오기
show configuration | display xml | nomore
- 실제 NSO 전송 내용 확인 및 실행
commit dry-run outformat nativecommit
장치 구성 롤백
- NSO는 모든 변경 사항에 대한 롤백 파일을 저장
- 변경 사항 ID 번호를 참조하여 특정 변경 사항을 로드
- 가장 최근 내용 롤백
rollback configuration
- 실제로 commit을 수행하지 않고, 만약 commit을 했을 때의 모습으로 보여줌
drt-run : 시뮬레이션commit dry-run outformat native
- 롤백 완료
commit
- 가장 최근 내용 롤백
기기 템플릿
네트워크 장치에서 DNS 서버를 구성하는 데 사용되는 템플릿
- 템플릿 구조
devices template <템플릿_이름> { ned-id <NED_ID>; config { // 장치별 설정 내용 } }
- NX-OS 장치
- 템플릿 예시
devices : NSO 설정 정의 수행
ned-id : 시스템 지정
ip name-server : DNS 네임 서버 설정devices template SET-DNS-SERVER ned-id cisco-nx-cli-3.0 config ip name-server 208.67.222.222 ip name-server 208.67.220.220
- 템플릿 device에 적용
devices device dist-sw0 apply-template template-name SET-DNS-SERVER
- 템플릿 취소
revert no-confirm
- 템플릿 예시
- IOS 및 ASA 장치 템플릿
- IOSASA
top devices template SET-DNS-SERVER ned-id cisco-ios-cli-3.0 config ip name-server 208.67.222.222 ip name-server 208.67.220.220
IOS-XRtop devices template SET-DNS-SERVER ned-id cisco-asa-cli-6.6 config dns domain-lookup mgmt dns server-group DefaultDNS name-server 208.67.220.220 name-server 208.67.222.222
변경사항 저장top devices template SET-DNS-SERVER ned-id cisco-iosxr-cli-3.5 config domain name-server 208.67.222.222 domain name-server 208.67.220.22
commit
- device group을 통해 모든 변경 사항 전체 네트워크 적용
devices device-group ALL apply-template template-name SET-DNS-SERVER
- IOS
네트워크 구성 준수
템플릿을 이용해 현재 네트워크 구성이 실제 네트워크 기능과 일치한지 확인
- 확인할 구성 템플릿 제작
IOS 용Nexustop devices template COMPLIANCE-CHECK ned-id cisco-ios-cli-3.0 config ip name-server 208.67.222.222 ip name-server 208.67.220.220 service timestamps log datetime localtime show-timezone year logging host 10.225.1.11 ntp server 10.225.1.11
ASAtop devices template COMPLIANCE-CHECK ned-id cisco-nx-cli-3.0 config ip name-server 208.67.222.222 ip name-server 208.67.220.220 logging server 10.225.1.11 logging level 5 ntp server 10.225.1.11
top devices template COMPLIANCE-CHECK ned-id cisco-asa-cli-6.6 config dns domain-lookup mgmt dns server-group DefaultDNS name-server 208.67.222.222 name-server 208.67.220.220 exit logging timestamp logging host mgmt 10.225.1.11 ntp server 10.225.1.11
- NSO 규정 준수 보고서 사용
state/compliance-reports : 보고서 저장 위치참고 : Discrepancies는 모든 기기에서 발견되는 문제compliance reports report COMPLIANCE-CHECK compare-template COMPLIANCE-CHECK ALL commit and-quit
NSO 서비스 패키지 생성
서비스 패키지는 NSO가 애플리케이션에 로드하여 새로운 기능으로 확장하는 구조화된 파일과 폴더의 모음을 뜻한다.
- loopback-service 이름의 서비스 패키지 생성
ncs-make-packages : 서비스 패키지의 뼈대를 auto로 제작ncs-make-package --service-skeleton template loopback-service
- 폴더 구조 확인
tree loopback-service/
- NSO CLI를 통한 장비 설정 확인 및 드라이 런
ncs_cli -C -u admin config devices device dist-rtr0 config interface Loopback 100 ip address 10.10.30.0 255.255.255.0 show configuration | nomore commit dry-run outformat xml exit no-confirm exit
- 템플릿 파일 수정
<config> 태그 내의 인터페이스 설정 XML 조각을 추출해 loopback-service-template.xml 파일에 IP 주소 부분을 dummy 변수로 치환하여 저장printf '<config-template xmlns="http://tail-f.com/ns/config/1.0" servicepoint="loopback-service"> <devices xmlns="http://tail-f.com/ns/ncs"> <device> <name>{/device}</name> <config> <interface xmlns="urn:ios"> <Loopback> <name>100</name> <ip> <address> <primary> <address>{/dummy}</address> <mask>255.255.255.0</mask> </primary> </address> </ip> </Loopback> </interface> </config> </device> </devices> </config-template> ' > ~/src/nso-instance/packages/loopback-service/templates/loopback-service-template.xml
- NSO 패키지 다시 reload
cd ~/src/nso-instance/packages/loopback-service/src/ make ncs_cli -C -u admin packages reload exit
NSO 서비스 인스턴스 생성 및 재배포
- 서비스 인스턴스 생성
loopback-service : 서비스 인스턴스 생성config loopback-service test device dist-rtr0 dummy 192.168.1.1 top commit dry-run outformat native show configuration | nomore commit and-quit
- 서비스 재배포
loopback이 삭제 되었을 경우
NSO에 현자 장비구성을 다시 학습 이후 재배포devices sync-from config loopback-service test re-deploy dry-run loopback-service test re-deploy end