Declarative Network API
What is it?
Nmstate is a library with an accompanying command line tool that manages host networking settings in a declarative manner. The networking state is described by a pre-defined schema. Reporting of current state and changes to it (desired state) both conform to the schema.
Nmstate is aimed to satisfy enterprise needs to manage host networking through a northbound declarative API and multi provider support on the southbound. NetworkManager acts as the main (and currently the only) provider supported.
Features
- Ethernet
- Bond
- Vlan
- Vxlan
- Linux Bridge
- OpenvSwitch Bridge
- Dummy
- Veth
- Static IP Addresses
- IP Route
- DNS Client Configuration
- LLDP
- Open vSwitch Patch Port
- Open vSwitch database plugin
- Generate Network Configuration
- MultiPath TCP
- Conditional compiling
- Refer SR-IOV VF via PF name and VF ID
- Refer Interface using MAC Address
- IPsec
- DNS
Example output
$ sudo nmstatectl show
---
dns-resolver:
config:
server:
- 192.0.2.1
search:
- example.org
routes:
config:
- destination: 0.0.0.0/0
next-hop-interface: eth1
next-hop-address: 192.0.2.1
interfaces:
- name: eth1
type: ethernet
description: Main-NIC
state: up
ipv4:
enabled: true
dhcp: false
address:
- ip: 192.0.2.9
prefix-length: 24
ipv6:
enabled: false
Documentation
- Nmstate Quick Start Guide
- Nmstate Developer Guide
- Design
- YAML API documentation
- Rust API document
- Python API documentation
- Nmstate 1.x: Plugin Design
- Nmstate 1.x: Varlink support for libnmstate
Related projects
Contacts
-
You can find us on Matrix room:
#nmstate:fedora.im
The maintainers are Gris, edwardh and ffmancera, please feel free to ask whatever you need! -
Nmstate uses the github issue for discussion or bug report.