Red Hat Training

A Red Hat training course is available for RHEL 8

第 8 章 Nmstate 简介

nmstate 是一个声明性网络管理器 API。nmstate 软件包提供 libnmstate Python 库以及一个命令行实用程序 nmstatectl,用于在 RHEL 上管理 NetworkManager。使用 Nmstate 时,您可以使用 YAML 或 JSON 格式说明描述预期的网络状态。

使用 Nmstate 有很多好处。例如,它:

  • 提供了一个稳定的、可扩展的接口来管理 RHEL 网络功能
  • 支持主机和集群级别的原子和事务操作
  • 支持部分编辑大多数属性,并保留没有在指令中指定的现有设置
  • 提供插件支持,以便管理员能够使用自己的插件

8.1. 在 Python 应用程序中使用 libnmstate 库

libnmstate Python 库可让开发人员在自己的应用程序中使用 Nmstate

要使用该程序库,请将其导入您的源代码中:

import libnmstate

请注意,您必须安装 nmstate 软件包才能使用这个库。

例 8.1. 使用 libnmstate 库查询网络状态

以下 Python 代码导入 libnmstate 库并显示可用网络接口及其状态:

import json
import libnmstate
from libnmstate.schema import Interface

net_state = libnmstate.show()
for iface_state in net_state[Interface.KEY]:
    print(iface_state[Interface.NAME] + ": "
          + iface_state[Interface.STATE])

8.2. 使用 nmstatectl 更新当前的网络配置

您可以使用 nmstatectl 实用程序将一个或多个接口的当前网络配置存储在文件中。然后您可以使用此文件来:

  • 修改配置并将其应用到同一系统中。
  • 将文件复制到不同的主机,并使用相同或修改的设置配置主机。

此流程描述了如何将 enp1s0 接口的设置导出到文件、修改配置以及将设置应用到主机。

先决条件

  • 已安装 nmstate 软件包。

流程

  1. enp1s0 接口的设置导出到 ~/network-config.yml 文件:

    # nmstatectl show enp1s0 > ~/network-config.yml

    此命令以 YAML 格式保存 enp1s0 配置。要以 JSON 格式存储输出,将 --json 选项传递给命令。

    如果您没有指定接口名称, nmstatectl 会导出所有接口的配置。

  2. 使用文本编辑器修改 ~/network-config.yml 文件以更新配置。
  3. 应用 ~/network-config.yml 文件中的设置:

    # nmstatectl set ~/network-config.yml

    如果您以 JSON 格式导出设置,将 --json 选项传递给命令。

8.3. 其它资源

  • 有关库和到上游文档链接的详情,如 API 文档,请参阅 /usr/share/doc/nmstate/README.md 文件。
  • 有关 YAML 格式的不同配置示例,请参阅 /usr/share/doc/nmstate/examples/ 目录。