35832347e1
Add support for routing tables and rules, as well as a property to specify a routing table for each route to the impl_ifcfg implementation. This change adds a new top-level object in the network_config with type "route_table" to specify which route table IDs and names should be added to the /etc/iproute2/rt_table file. This change adds a "table" property to routes for each interface type, that allows the selection of which routing table to apply the route to. This change also adds a "rules" property to each interface type, which can be used to specify a list of rules. Each rule contains a rule string and an optional comment, both of which will be added to the /etc/sysconfig/network-scripts/rule-<iface> file. This change includes tests and changes to the schema for validation. Note that this change was based on the abandoned patch https://review.openstack.org/#/c/575712 and was recreated when that patch diverged too far from master branch. Change-Id: I6906d3b6923845af177faba6579fa255a2195bec Closes-bug: #1783297 |
||
---|---|---|
doc/source | ||
etc/os-net-config/samples | ||
os_net_config | ||
releasenotes | ||
zuul.d | ||
.coveragerc | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.stestr.conf | ||
CONTRIBUTING.rst | ||
HACKING.rst | ||
LICENSE | ||
README.rst | ||
babel.cfg | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
README.rst
Team and repository tags
os-net-config
host network configuration tool
An implementation of the 'network configuration' spec @ https://review.openstack.org/#/c/97859/. The intention is for this code to be moved under the tripleo project in due course.
- Free software: Apache License (2.0)
- Source: http://git.openstack.org/cgit/openstack/os-net-config
- Bugs: http://bugs.launchpad.net/os-net-config
Release Notes
Features
The core aim of this project is to allow fine grained (but extendable) configuration of the networking parameters for a network host. The project consists of:
- A CLI (os-net-config) which provides configuration via a YAML or JSON file formats. By default os-net-config uses a YAML config file located at /etc/os-net-config/config.yaml. This can be customized via the --config-file CLI option.
- A python library which provides configuration via an object model.
YAML Config Examples
- Configure an OVS bridge with a single attached interface (port)
network_config:
-
type: ovs_bridge
name: br-ctlplane
use_dhcp: true
ovs_extra:
- br-set-external-id br-ctlplane bridge-id br-ctlplane
members:
-
type: interface
name: em1
- Configure an OVS bridge on top of an OVS bond
network_config:
-
type: ovs_bridge
name: br-ctlplane
use_dhcp: true
members:
-
type: ovs_bond
name: bond1
members:
-
type: interface
name: em1
-
type: interface
name: em2
- Configure a tagged VLAN interface on top of an OVS bridge
network_config:
-
type: ovs_bridge
name: br-ctlplane
use_dhcp: true
members:
-
type: interface
name: em1
-
type: vlan
vlan_id: 16
addresses:
-
ip_netmask: 192.0.2.1/24
Provider Configuration
Providers are use to apply (implement) the desired configuration on the host system. By default 3 providers are implemented:
- Ifcfg: persistent network config format stored in /etc/sysconfig/network-scripts
- ENI: persistent network config format stored in /etc/network/interfaces
- iproute2: non-persistent provider which implements the config using iproute2, vconfig, etc... (implementation in progress)
When using bin/os-net-config the provider is automatically selected based on the host systems perferred persistent network type (ifcfg or ENI). This can be customized via the --provider CLI option.