명령어/Linux

[RHEL] nmstatectl 네트워크를 YAML 선언으로 관리하기

jykim23 2026. 8. 6. 21:55
반응형

부제: 현재 상태를 YAML로 뽑고, YAML대로 되돌리는 선언형 도구

nmstatectl show            # 현재 네트워크 상태 전체를 YAML로 출력
nmstatectl show eth0       # 특정 인터페이스만
nmstatectl version         # 버전
nmstatectl apply state.yml # YAML 파일대로 네트워크 적용
routes:
  running:
  - destination: 0.0.0.0/0
    next-hop-interface: eth0
    next-hop-address: 10.0.0.1
interfaces:
- name: eth0
  type: veth
dns-resolver:
  running:
    server:
    - 61.41.153.2

네트워크를 선언형(declarative)으로 다루는 도구다. nmcli가 "이 명령을 실행하라"는 절차형이라면, nmstatectl은 "네트워크가 이런 모습이어야 한다"는 목표 상태를 YAML로 기술한다. show로 현재 상태를 그대로 YAML로 떠서 형상 관리에 넣고, apply로 그 YAML을 다시 적용한다. 적용이 실패하면 자동으로 이전 상태로 롤백되는 안전장치가 있어, 원격 서버 네트워크를 바꿀 때 접속이 끊길 위험을 줄인다. Ansible의 nmstate 모듈이 이 엔진을 쓴다.

이렇게도 쓴다

현재 상태를 파일로 저장해 버전 관리한다. (nmstatectl + git)

nmstatectl show > net-baseline.yml

 

적용 전에 문법과 정합성을 검증한다.

nmstatectl validate state.yml

 

실제 적용 없이 어떤 변경이 일어날지 확인만 한다.

nmstatectl gc state.yml

 

방금 적용한 변경을 명시적으로 되돌린다.

nmstatectl rollback

 

원하는 상태로 가기 위한 되돌리기(revert) 상태를 미리 생성한다.

nmstatectl gr state.yml

 

특정 인터페이스 상태만 뽑아 diff에 쓰기 좋게 만든다. (nmstatectl + diff)

nmstatectl show eth0 > now.yml && diff net-baseline.yml now.yml
반응형