#networking #linux #command-line-tool

app nmstatectl

Command line tool for networking management in a declarative manner

19 stable releases

2.2.27 Mar 20, 2024
2.2.25 Feb 22, 2024
2.2.21 Dec 14, 2023
2.2.20 Nov 30, 2023
2.2.1 Nov 17, 2022

#1405 in Network programming

Download history 7/week @ 2024-01-02 9/week @ 2024-01-16 1/week @ 2024-02-06 111/week @ 2024-02-13 121/week @ 2024-02-20 40/week @ 2024-02-27 4/week @ 2024-03-05 168/week @ 2024-03-12 143/week @ 2024-03-19 22/week @ 2024-03-26 97/week @ 2024-04-02

262 downloads per month

Apache-2.0

1.5MB
46K SLoC

Nmstate: A Declarative Network API

A declarative network management API for hosts.

CI crates.io docs.rs Fedora Rawhide version

Copr build status, all repos are built for Fedora Linux and RHEL/CentOS Stream/EPEL 8+:

  • Latest release: Latest release Copr build status
  • Git base: Git base Copr build status

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+

State example:

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: false

Contact

Nmstate GitHub Issues pages for discussion.

Matrix room: #nmstate:fedora.im

Contributing

Yay! We are happy to accept new contributors to the Nmstate project. Please follow these instructions to contribute.

Installation

For Fedora 29+, sudo dnf install nmstate.

For other distribution, please see the install guide.

Documentation

Changelog

Please refer to CHANGELOG

Dependencies

~9–24MB
~338K SLoC