A declarative network management API for hosts.
Copr build status, all repos are built for Fedora Linux and RHEL/CentOS Stream/EPEL 8+:
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.
Nmstate provides:
- Rust crate -- nmstate
 - Command line tools -- 
cargo install nmstatectl - Python library -- 
libnmstate - Go binding
 - C binding
 
More document could be found at nmstate.io
The codes of nmstate are licensed under Apache 2.0
except the test codes in tests folder are licensed under
LGPL 2.1+
Desired/Current state example (YAML):
---
dns:
  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: falseNmstate GitHub Issues pages for discussion.
Matrix room: #nmstate:fedora.im
Yay! We are happy to accept new contributors to the Nmstate project. Please follow these instructions to contribute.
For Fedora 29+, sudo dnf install nmstate.
For other distribution, please see the install guide.
- Rust crate
 - libnmstate API
 - Code examples
 - State examples
 - nmstatectl user guide
 - nmstatectl man page: 
man nmstatectl 
Please refer to CHANGELOG