Questo contenuto non è disponibile nella lingua selezionata.
Chapter 40. Introduction to Nmstate
Nmstate is a declarative network manager API. When you use Nmstate, you describe the expected networking state by using YAML or JSON-formatted instructions.
Nmstate has many benefits. For example, it:
- Provides a stable and extensible interface to manage RHEL network capabilities
- Supports atomic and transactional operations at the host and cluster level
- Supports partial editing of most properties and preserves existing settings that are not specified in the instructions
- Provides plug-in support to enable administrators to use their own plug-ins
Nmstate consists of the following packages:
Packages | Contents |
---|---|
|
The |
|
The |
| The Nmstate C library |
| The Nmstate C library headers |
40.1. Using the libnmstate library in a Python application Copia collegamentoCollegamento copiato negli appunti!
The libnmstate
Python library enables developers to use Nmstate in their own application
To use the library, import it in your source code:
import libnmstate
import libnmstate
Note that you must install the nmstate
and python3-libnmstate
packages to use this library.
Example 40.1. Querying the network state by using the libnmstate library
The following Python code imports the libnmstate
library and displays the available network interfaces and their state:
40.2. Updating the current network configuration by using nmstatectl Copia collegamentoCollegamento copiato negli appunti!
You can use the nmstatectl
utility to store the current network configuration of one or all interfaces in a file. You can then use this file to:
- Modify the configuration and apply it to the same system.
- Copy the file to a different host and configure the host with the same or modified settings.
For example, you can export the settings of the enp1s0
interface to a file, modify the configuration, and apply the settings to the host.
Prerequisites
-
The
nmstate
package is installed.
Procedure
Export the settings of the
enp1s0
interface to the~/network-config.yml
file:nmstatectl show enp1s0 > ~/network-config.yml
# nmstatectl show enp1s0 > ~/network-config.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This command stores the configuration of
enp1s0
in YAML format. To store the output in JSON format, pass the--json
option to the command.If you do not specify an interface name,
nmstatectl
exports the configuration of all interfaces.-
Modify the
~/network-config.yml
file using a text editor to update the configuration. Apply the settings from the
~/network-config.yml
file:nmstatectl apply ~/network-config.yml
# nmstatectl apply ~/network-config.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you exported the settings in JSON format, pass the
--json
option to the command.
40.3. Network states for the network RHEL system role Copia collegamentoCollegamento copiato negli appunti!
The network
RHEL system role supports state configurations in playbooks to configure the devices. For this, use the network_state
variable followed by the state configurations.
Benefits of using the network_state
variable in a playbook:
- Using the declarative method with the state configurations, you can configure interfaces, and the NetworkManager creates a profile for these interfaces in the background.
-
With the
network_state
variable, you can specify the options that you require to change, and all the other options will remain the same as they are. However, with thenetwork_connections
variable, you must specify all settings to change the network connection profile.
You can set only Nmstate YAML instructions in network_state
. These instructions differ from the variables you can set in network_connections
.
For example, to create an Ethernet connection with dynamic IP address settings, use the following vars
block in your playbook:
Playbook with state configurations | Regular playbook |
|
|
For example, to only change the connection status of dynamic IP address settings that you created as above, use the following vars
block in your playbook:
Playbook with state configurations | Regular playbook |
|
|