All Projects → nmstate → Nmstate

nmstate / Nmstate

Licence: lgpl-2.1
Nmstate is a library with an accompanying command line tool that manages host networking settings in a declarative manner.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Nmstate

Capsule
A framework for network function development. Written in Rust, inspired by NetBricks and built on DPDK.
Stars: ✭ 217 (+244.44%)
Mutual labels:  hacktoberfest, networking
Netjsonconfig
Network configuration management library based on NetJSON DeviceConfiguration
Stars: ✭ 372 (+490.48%)
Mutual labels:  hacktoberfest, networking
Wwdc
You don't have the time to watch all the WWDC session videos yourself? No problem me and many contributors extracted the gist for you 🥳
Stars: ✭ 2,561 (+3965.08%)
Mutual labels:  hacktoberfest, networking
Network
An ansible role to configure networking
Stars: ✭ 134 (+112.7%)
Mutual labels:  hacktoberfest, networking
Ucx
Unified Communication X (mailing list - https://elist.ornl.gov/mailman/listinfo/ucx-group)
Stars: ✭ 471 (+647.62%)
Mutual labels:  hacktoberfest, networking
Openwisp Radius
Administration web interface and REST API for freeradius 3 build in django & python. Supports captive portal authentication, WPA Enerprise (802.1x), freeradius rlm_rest, social login, Hotspot 2.0 / 802.11u, importing users from CSV, registration of new users and more.
Stars: ✭ 206 (+226.98%)
Mutual labels:  hacktoberfest, networking
Devops Guide
DevOps Guide - Development to Production all configurations with basic notes to debug efficiently.
Stars: ✭ 4,119 (+6438.1%)
Mutual labels:  hacktoberfest, networking
Moya
Network abstraction layer written in Swift.
Stars: ✭ 13,607 (+21498.41%)
Mutual labels:  hacktoberfest, networking
Openwisp Controller
Network and WiFi controller: provisioning, configuration management and updates, (pull via openwisp-config or push via SSH), x509 PKI management and more. Mainly OpenWRT, but designed to work also on other systems.
Stars: ✭ 377 (+498.41%)
Mutual labels:  hacktoberfest, networking
Openwisp Config
OpenWRT configuration agent for OpenWISP Controller
Stars: ✭ 375 (+495.24%)
Mutual labels:  hacktoberfest, networking
Ansible Openwisp2 Imagegenerator
Automatically build several openwisp2 firmware images for different organizations while keeping track of their differences
Stars: ✭ 122 (+93.65%)
Mutual labels:  hacktoberfest, networking
Pavlos
A light-weight container runtime for Linux with NVIDIA gpu support, allows developers to quicky setup development environments for dev and test. Pavlos can emulate any Linux rootfs image as a container.
Stars: ✭ 22 (-65.08%)
Mutual labels:  hacktoberfest, networking
Socks5
A full-fledged high-performance socks5 proxy server written in C#. Plugin support included.
Stars: ✭ 286 (+353.97%)
Mutual labels:  hacktoberfest, networking
Rustscan
🤖 The Modern Port Scanner 🤖
Stars: ✭ 5,218 (+8182.54%)
Mutual labels:  hacktoberfest, networking
Roc Toolkit
Real-time audio streaming over the network.
Stars: ✭ 673 (+968.25%)
Mutual labels:  hacktoberfest, networking
Openwisp Monitoring
Network monitoring system written in Python and Django, designed to be extensible, programmable, scalable and easy to use by end users: once the system is configured, monitoring checks, alerts and metric collection happens automatically.
Stars: ✭ 37 (-41.27%)
Mutual labels:  hacktoberfest, networking
Ascemu
Official AscEmu repo... a never ending place to work. With cutting edge technologies XD
Stars: ✭ 61 (-3.17%)
Mutual labels:  hacktoberfest
Auto
Generate releases based on semantic version labels on pull requests.
Stars: ✭ 1,120 (+1677.78%)
Mutual labels:  hacktoberfest
Kubelabs
Kubernetes - Beginners | Intermediate | Advanced
Stars: ✭ 1,115 (+1669.84%)
Mutual labels:  hacktoberfest
Pureconfig
A boilerplate-free library for loading configuration files
Stars: ✭ 1,114 (+1668.25%)
Mutual labels:  hacktoberfest

We are Nmstate!

A declarative network manager API for hosts.

CI Coverage Status PyPI version Fedora Rawhide version Code Style Language grade: Python

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

  • Latest release: Latest release Copr build status
  • Git base: Git base Copr build status
  • Latest 0.2 release: Latest 0.2 release Copr build status
  • Git nmstate-0.2: Git nmstate-0.2 Copr build status
  • Latest 0.3 release: Latest 0.3 release Copr build status
  • Git nmstate-0.3: Git nmstate-0.3 Copr build status

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 [email protected] for discussions. To subscribe you can send an email with 'subscribe' in the subject to [email protected] or visit the mailing list page.

Sprint tracking happens in (Github projects).

There is also #nmstate on Freenode 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

Limitations

  • Maximum supported number of interfaces in a single desire state is 1000.

Changelog

Please refer to CHANGELOG

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].