Declarative network manager API
Project description
We are Nmstate!
A declarative network manager API for hosts.
Copr build status, all repos are built for Fedora Linux and RHEL/CentOS Stream/EPEL 8+:
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.
State example:
Desired/Current state example (YAML):
interfaces:
- name: eth1
type: ethernet
state: up
ipv4:
enabled: true
address:
- ip: 192.0.2.10
prefix-length: 24
dhcp: false
ipv6:
enabled: true
address:
- ip: 2001:db8:1::a
prefix-length: 64
autoconf: false
dhcp: false
dns-resolver:
config:
search:
- example.com
- example.org
server:
- 2001:4860:4860::8888
- 8.8.8.8
routes:
config:
- destination: 0.0.0.0/0
next-hop-address: 192.0.2.1
next-hop-interface: eth1
- destination: ::/0
next-hop-address: 2001:db8:1::1
next-hop-interface: eth1
Basic Operations
Show eth0 current state (python/shell):
import libnmstate
state = libnmstate.show()
eth0_state = next(ifstate for ifstate in state['interfaces'] if ifstate['name'] == 'eth0')
# Here is the MAC address
eth0_mac = eth0_state['mac-address']
nmstatectl show eth0
Change to desired state (python/shell):
import libnmstate
# Specify a Linux bridge (created if it does not exist).
state = {'interfaces': [{'name': 'br0', 'type': 'linux-bridge', 'state': 'up'}]}
libnmstate.apply(state)
# use yaml or json formats
nmstatectl set desired-state.yml
nmstatectl set desired-state.json
Edit the current state(python/shell):
import libnmstate
state = libnmstate.show()
eth0_state = next(ifstate for ifstate in state['interfaces'] if ifstate['name'] == 'eth0')
# take eth0 down
eth0_state['state'] = 'down'
libnmstate.apply(state)
# open current state in a text editor, change and save to apply
nmstatectl edit eth3
Contact
Nmstate uses the nmstate-devel@lists.fedorahosted.org for discussions. To subscribe you can send an email with 'subscribe' in the subject to nmstate-devel-join@lists.fedorahosted.org or visit the mailing list page.
Sprint tracking happens in (Github projects).
There is also #nmstate
on
Libera IRC.
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 others distribution, please see the install guide.
Documentation
- libnmstate API
- Code examples
- State examples
- nmstatectl user guide
- nmstatectl man page:
man nmstatectl
Limitations
- Maximum supported number of interfaces in a single desire state is 1000.
Changelog
Please refer to CHANGELOG
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nmstate-2.0.0.tar.gz
.
File metadata
- Download URL: nmstate-2.0.0.tar.gz
- Upload date:
- Size: 239.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e369b983664227e2d51de8f984fd90d828b87f9fae65046289b27c76b0745a4b |
|
MD5 | 6fba30878ccae24eb2eed0da223ee174 |
|
BLAKE2b-256 | 8f57dfc9404f4af4ee232071ef84a97185475b38d1f736d4820a3d2150403ebe |
File details
Details for the file nmstate-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: nmstate-2.0.0-py3-none-any.whl
- Upload date:
- Size: 176.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38fc1735e4d3d90582e8324a874bbf895cd8a7168e97e5828e6793a846bbe09b |
|
MD5 | 2f837e4a900fa7d2333108f85e562291 |
|
BLAKE2b-256 | 8bb90f2b66e135b71a0580f50f433b62488352e8738baf6d9ee3dd68dffafcee |