||7 months ago|
|lxc_net||7 months ago|
|topologies||3 years ago|
|.gitignore||3 years ago|
|LICENSE||3 years ago|
|README.md||3 years ago|
|__init__.py||3 years ago|
|requirements.txt||3 years ago|
|spawn_network.py||3 years ago|
A network of LXC containers, managed through libvirt
This script will most probably break on any other system than Linux, and will definitely break on anything non-UNIX.
It relies on
sudo (to gain the required privileges
to use overlayfs).
It is recommended to set up
lxc-network within a virtualenv:
virtualenv -p python3 venv source venv/bin/activate pip install -r requirements.txt
Furthermore, you are expected to set up a system root tree within the directory
of your choice, and put its path in
lxc_net/settings.py. This can be done eg.
in ArchLinux with
pacstrap [your_root_directory] base
or the equivalent
debootstrap command on Debian.
This system is expected to use
systemd, and to have enabled
systemd-networkd to setup its IP addresses.
You can spawn a network using
topology_description.yml is a valid topology description file (see
When the network is spawned, you will get a (very basic) prompt. The available commands are:
help: display a list of available commands;
exit: cleanup the network and quit the program;
dom down: keep the networks up, but cleanup the containers. Useful to reset the containers or update binaries and settings.
dom up: spawn the containers, if they were cleaned up beforehand.
dom restart: equivalent to
dom down ; dom up.
Topology description file
A topology is described in a YAML file looking like this:
--- links: - domains: ['a', 'b'] enable_v4: false - domains: ['b', 'c'] domains: b: enable_v4: false
links element is mandatory, each link containing a mandatory
attribute, the list of domains (containers) connected to it. A domain is
described by an arbitrary name. Domains will be spawned (and indexed) in
The valid options for links are:
enable_v4: boolean, specifies whether the NICs connected to this link have an IPv4 address.
domains root element is optional, and may be used to specify
The valid options for domains are:
enable_v4: boolean, specifies whether the domain has IPv4 addresses on its NICs.