community.general.nmcli 模块 – 管理网络

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:community.general.nmcli

概要

  • 管理网络设备。创建、修改和管理各种连接和设备类型,例如以太网、团队、绑定、VLAN 等。

  • 在 CentOS 8 和 Fedora >=29 等类系统上,可以通过安装以下软件包来满足要求:NetworkManager。

  • 在 CentOS 7 和 Fedora <=28 等类系统上,可以通过安装以下软件包来满足要求:NetworkManager-tui。

  • 在 Ubuntu 和 Debian 等类系统上,可以通过安装以下软件包来满足要求:network-manager

  • 在 openSUSE 上,可以通过安装以下软件包来满足要求:NetworkManager。

要求

执行此模块的主机需要满足以下要求。

  • nmcli

参数

参数

注释

addr_gen_mode6

字符串

在 community.general 4.2.0 中添加

配置用于使用 IPv6 无状态地址自动配置创建地址的方法。

defaultdefault-or-eui64 已在 community.general 6.5.0 中添加。

选择

  • "default"

  • "default-or-eui64"

  • "eui64"

  • "stable-privacy"

ageingtime

整数

这仅用于网桥 - [ageing-time <0-1000000>] 以太网 MAC 地址老化时间,以秒为单位。

默认值: 300

arp_interval

整数

这仅用于绑定 - ARP 间隔。

arp_ip_target

字符串

这仅用于绑定 - ARP IP 目标。

autoconnect

布尔值

是否应在启动时启动连接。

连接配置文件是否可以自动激活

选择

  • false

  • true ← (默认)

conn_name

字符串 / 必需

用于调用连接的名称。模式为 <type>[-<ifname>][-<num>]。

conn_reload

布尔值

在 community.general 9.5.0 中添加

如果连接被修改,是否应重新加载连接。

选择

  • false ← (默认)

  • true

dhcp_client_id

字符串

发送到 DHCP 服务器的 DHCP 客户端标识符。

dns4

列表 / 元素=字符串

最多 3 个 DNS 服务器的列表。

条目必须是 IPv4 地址,例如 192.0.2.53

dns4_ignore_auto

布尔值

在 community.general 3.2.0 中添加

忽略自动配置的 IPv4 名称服务器。

选择

  • false ← (默认)

  • true

dns4_options

列表 / 元素=字符串

在 community.general 7.2.0 中添加

DNS 选项的列表。

列表 / 元素=字符串

DNS 搜索域的列表。

dns6

列表 / 元素=字符串

最多 3 个 DNS 服务器的列表。

条目必须是 IPv6 地址,例如 2001:4860:4860::8888

dns6_ignore_auto

布尔值

在 community.general 3.2.0 中添加

忽略自动配置的 IPv6 名称服务器。

选择

  • false ← (默认)

  • true

dns6_options

列表 / 元素=字符串

在 community.general 7.2.0 中添加

DNS 选项的列表。

列表 / 元素=字符串

DNS 搜索域的列表。

downdelay

整数

这仅用于绑定 - downdelay。

egress

字符串

这仅用于 VLAN - VLAN 出口优先级映射。

flags

字符串

这仅用于 VLAN - 标志。

forwarddelay

整数

这仅用于网桥 - [forward-delay <2-30>] STP 转发延迟,以秒为单位。

默认值: 15

gsm

字典

在 community.general 3.7.0 中添加

GSM 连接的配置。

请注意,子选项属性列表可能因主机上安装的 NetworkManager/nmcli 版本而异。

可以在此处找到支持的属性的最新列表:https://networkmanager.dev/docs/api/latest/settings-gsm.html

例如,要使用 apn、pin、username 和 password:{apn: provider.apn, pin: 1234, username: apn.username, password: apn.password}

apn

字符串

GPRS 接入点名称,指定与基于 GSM 的网络建立数据会话时使用的 APN。

APN 通常决定用户如何为其网络使用付费,以及用户是否有权访问 Internet 或仅访问特定于提供商的围墙花园,因此为用户的移动宽带计划使用正确的 APN 非常重要。

根据 GSM 03.60 第 14.9 节,APN 只能由字符 a-z、0-9、. 和 - 组成。

auto-config

布尔值

true 时,诸如 gsm.apngsm.usernamegsm.password 之类的设置将默认为与调制解调器将在移动宽带提供商数据库中注册的网络匹配的值。

选择

  • false ← (默认)

  • true

device-id

字符串

此连接应用到的设备唯一标识符(由 WWAN 管理服务提供)。

如果给定,则连接将仅应用于指定的设备。

home-only

布尔值

true 时,将仅允许连接到家庭网络。

不会建立到漫游网络的连接。

选择

  • false ← (默认)

  • true

mtu

整数

如果非零,则仅传输指定大小或更小的数据包,将较大的数据包分解为多个以太网帧。

默认值: 0

network-id

字符串

强制特定网络注册的网络 ID(GSM LAI 格式,即 MCC-MNC)。

如果指定了网络 ID,NetworkManager 将尝试强制设备仅在指定的网络上注册。

这可用于确保在无法以其他方式直接控制设备的漫游时,设备不会漫游。

number

字符串

用于帮助为基于 GSM 的调制解调器建立 PPP 数据会话的旧版设置。

password

字符串

如果需要,用于向网络进行身份验证的密码。

许多提供商不需要密码,或者接受任何密码。

但是,如果需要密码,则在此处指定。

password-flags

整数

指示如何处理 gsm.password 属性的 NMSettingSecretFlags。

允许以下选择:0 NONE:系统负责提供和存储此机密(默认),1 AGENT_OWNED:用户机密代理负责提供和存储此机密;当需要时,将要求代理检索它,2 NOT_SAVED:不应保存此机密,而应在每次需要时向用户请求,4 NOT_REQUIRED:在无法自动确定是否需要机密的情况下(某些 VPN 和 PPP 提供商不需要所有机密),此标志指示不需要特定的机密。

选择

  • 0 ← (默认)

  • 1

  • 2

  • 4

pin

字符串

如果 SIM 卡已使用 PIN 码锁定,则必须先解锁,然后才能请求任何其他操作。

在此处指定 PIN 码以允许设备运行。

pin-flags

整数

指示如何处理 gsm.pin 属性的 NMSettingSecretFlags。

有关 NMSettingSecretFlags 选择,请参阅 gsm.password-flags

选择

  • 0 ← (默认)

  • 1

  • 2

  • 4

sim-id

字符串

此连接应用到的 SIM 卡唯一标识符(由 WWAN 管理服务提供)。

如果给定,则连接将应用于也由 gsm.device-id 允许的任何设备,该设备包含与给定标识符匹配的 SIM 卡。

sim-operator-id

字符串

类似于 31026021601I 的 MCC/MNC 字符串,用于标识此连接应用到的特定移动网络运营商。

如果给定,则连接将应用于也由 gsm.device-idgsm.sim-id 允许的任何设备,该设备包含由给定运营商配置的 SIM 卡。

username

字符串

如果需要,用于向网络进行身份验证的用户名。

许多提供商不需要用户名,或者接受任何用户名。

但是,如果需要用户名,则在此处指定。

gw4

字符串

此接口的 IPv4 网关。

使用格式 192.0.2.1

此参数与 never_default4 参数互斥。

gw4_ignore_auto

布尔值

在 community.general 3.2.0 中添加

忽略自动配置的 IPv4 路由。

选择

  • false ← (默认)

  • true

gw6

字符串

此接口的 IPv6 网关。

使用格式 2001:db8::1

gw6_ignore_auto

布尔值

在 community.general 3.2.0 中添加

忽略自动配置的 IPv6 路由。

选择

  • false ← (默认)

  • true

hairpin

布尔值

这仅与“bridge-slave”一起使用 - 从属的“hairpin 模式”,它允许帧通过接收帧的从属发送回。

community.general 7.0.0 中的默认更改为 false。它以前是 true

选择

  • false ← (默认)

  • true

hellotime

整数

这仅与桥接一起使用 - [hello-time <1-10>] STP hello 时间,以秒为单位。

默认值: 2

ifname

字符串

要将连接绑定到的接口。

该连接仅适用于此接口名称。

对于与接口无关的连接,可以使用特殊值 '*'

ifname 参数对于除 bond、team、bridge、vlan 和 vpn 之外的所有连接类型都是必需的。

当所有连接类型(除了删除它的 vpn)都未设置时,此参数默认为 conn_name

ignore_unsupported_suboptions

布尔值

在 community.general 3.6.0 中添加

忽略主机上安装的 NetworkManager/nmcli 版本无效或不支持的子选项。

目前仅影响 wifiwifi_sec 选项。

选择

  • false ← (默认)

  • true

ingress

字符串

这仅与 VLAN 一起使用 - VLAN 入口优先级映射。

ip4

列表 / 元素=字符串

此接口的 IPv4 地址列表。

使用格式 192.0.2.24/24192.0.2.24

如果已定义且未指定 method4,则自动将 ipv4.method 设置为 manual

ip6

列表 / 元素=字符串

此接口的 IPv6 地址列表。

使用格式 abbe::cafe/128abbe::cafe

如果已定义且未指定 method6,则自动将 ipv6.method 设置为 manual

ip_privacy6

字符串

在 community.general 4.2.0 中添加

如果启用,它会使内核除了公共 IPv6 地址之外,还生成一个临时的 IPv6 地址。

选择

  • "disabled"(禁用)

  • "prefer-public-addr"(首选公共地址)

  • "prefer-temp-addr"(首选临时地址)

  • "unknown"(未知)

ip_tunnel_dev

字符串

用于 GRE/IPIP/SIT - 此 GRE/IPIP/SIT 隧道的父设备,可以使用 ifname。

ip_tunnel_input_key

字符串

在 community.general 3.6.0 中添加

用于隧道输入数据包的密钥。

仅在 type=gre 时使用。

ip_tunnel_local

字符串

用于 GRE/IPIP/SIT - GRE/IPIP/SIT 本地 IP 地址。

ip_tunnel_output_key

字符串

在 community.general 3.6.0 中添加

用于隧道输出数据包的密钥。

仅在 type=gre 时使用。

ip_tunnel_remote

字符串

用于 GRE/IPIP/SIT - GRE/IPIP/SIT 目标 IP 地址。

mac

字符串

连接的 MAC 地址。

注意,这需要最近的内核特性,最初在 3.15 上游内核中引入。

macvlan

字典

在 community.general 6.6.0 中添加

MAC VLAN 连接的配置。

请注意,子选项属性列表可能因主机上安装的 NetworkManager/nmcli 版本而异。

可以在这里找到支持的属性的最新列表:https://networkmanager.dev/docs/api/latest/settings-macvlan.html

mode

integer / required

macvlan 模式,它指定同一底层设备上多个 macvlan 之间的通信机制。

允许以下选择:1 vepa2 bridge3 private4 passthru5 source

选择

  • 1

  • 2

  • 3

  • 4

  • 5

parent

字符串 / 必需

如果给定,指定应从中创建此 MAC-VLAN 接口的父接口名称或父连接 UUID。 如果未指定此属性,则连接必须包含带有 “mac-address” 属性的 “802-3-ethernet” 设置。

promiscuous

布尔值

是否应将接口置于混杂模式。

选择

  • false

  • true

tap

布尔值

接口是否应为 MACVTAP。

选择

  • false

  • true

master

字符串

桥接、团队、绑定、ovs-port 主连接配置文件的 Master <master(ifname,或连接 UUID 或 conn_name)。

如果定义了 slave_type,则为强制性。

maxage

整数

这仅用于桥接 - [max-age <6-42>] STP 最大消息生存时间,以秒为单位。

默认值: 20

may_fail4

布尔值

在 community.general 3.3.0 中添加

如果您需要在达到 network-online.target 之前配置 ip4,请将此选项设置为 false

method4 不是 disabled 时,此选项适用。

选择

  • false

  • true ← (默认)

method4

字符串

在 community.general 2.2.0 中添加

用于 IPv4 的配置方法。

如果设置了 ip4,则 ipv4.method 会自动设置为 manual,并且不需要此参数。

选择

  • "auto"(自动)

  • "link-local"(链路本地)

  • "manual"(手动)

  • "shared"(共享)

  • "disabled"(禁用)

method6

字符串

在 community.general 2.2.0 中添加

用于 IPv6 的配置方法

如果设置了 ip6,则 ipv6.method 会自动设置为 manual,并且不需要此参数。

disabled 在 community.general 3.3.0 中添加。

选择

  • "ignore"(忽略)

  • "auto"(自动)

  • "dhcp"

  • "link-local"(链路本地)

  • "manual"(手动)

  • "shared"(共享)

  • "disabled"(禁用)

miimon

整数

这仅用于绑定 - miimon。

当未设置此参数时,此参数默认为 100

mode

字符串

这是您希望为绑定或桥接创建的设备或网络连接的类型。

选择

  • "802.3ad"

  • "active-backup"(主动备份)

  • "balance-alb"(均衡-alb)

  • "balance-rr" ← (默认)

  • "balance-tlb"(均衡-tlb)

  • "balance-xor"(均衡-xor)

  • "broadcast"(广播)

mtu

整数

连接的 MTU,例如 9000。 这不能在创建接口时应用,而是在创建接口后完成。

可在修改 Team、VLAN、以太网时使用(未来计划实现 wifi、gsm、pppoe、infiniband)

当未设置此参数时,此参数默认为 1500

never_default4

布尔值

在 community.general 2.0.0 中添加

设置为默认路由。

此参数与 gw4 参数互斥。

选择

  • false ← (默认)

  • true

path_cost

整数

这仅用于 “bridge-slave” - [<1-65535>] - 通过此从属的 STP 端口目标成本。

默认值: 100

primary

字符串

这仅用于绑定,是主接口名称(对于 “active-backup” 模式),这通常是 “ifname”。

priority

整数

这仅用于 “bridge” - 设置 STP 优先级。

默认值: 128

route_metric4

整数

在 community.general 2.0.0 中添加

设置接口上配置的 IPv4 路由的指标级别。

route_metric6

整数

在 community.general 4.4.0 中添加

设置接口上配置的 IPv6 路由的指标级别。

routes4

列表 / 元素=字符串

在 community.general 2.0.0 中添加

IPv4 路由列表。

使用格式 192.0.3.0/24 192.0.2.1

要指定更复杂的路由,请使用 routes4_extended 选项。

routes4_extended

list / elements=dictionary

IPv4 路由列表。

cwnd

整数

拥塞窗口的钳制。

ip

字符串 / 必需

路由的 IP 或前缀。

使用格式 192.0.3.0/24

metric

整数

路由指标。

mtu

整数

如果为非零值,则仅传输指定大小或更小的数据包。

next_hop

字符串

使用格式 192.0.2.1

布尔值

即使下一跳不匹配任何接口前缀,也假装下一跳直接连接到此链路。

选择

  • false

  • true

table

整数

将此路由添加到的表。

默认值取决于 ipv4.route-table

tos

整数

服务类型。

routes6

列表 / 元素=字符串

在 community.general 4.4.0 中添加

IPv6 路由列表。

使用格式 fd12:3456:789a:1::/64 2001:dead:beef::1

要指定更复杂的路由,请使用 routes6_extended 选项。

routes6_extended

list / elements=dictionary

带有参数的 IPv6 路由列表。

cwnd

整数

拥塞窗口的钳制。

ip

字符串 / 必需

路由的 IP 或前缀。

使用格式 fd12:3456:789a:1::/64

metric

整数

路由指标。

mtu

整数

如果为非零值,则仅传输指定大小或更小的数据包。

next_hop

字符串

使用格式 2001:dead:beef::1

布尔值

即使下一跳不匹配任何接口前缀,也假装下一跳直接连接到此链路。

选择

  • false

  • true

table

整数

将此路由添加到的表。

默认值取决于 ipv6.route-table

routing_rules4

列表 / 元素=字符串

在 community.general 3.3.0 中添加

ip rule add 命令中的相同,但始终需要指定优先级。

runner

字符串

在 community.general 3.4.0 中添加

这是您希望为团队创建的设备或网络连接的类型。

选择

  • "broadcast"(广播)

  • "roundrobin" ← (默认)

  • "activebackup"(主动备份)

  • "loadbalance"(负载均衡)

  • "lacp"

runner_fast_rate

布尔值

在 community.general 6.5.0 中添加

选项指定请求我们的链路合作伙伴传输 LACPDU 数据包的速率。 如果此值为 true,则数据包将每秒发送一次。 否则,它们将每 30 秒发送一次。

仅允许用于 runner=lacp

选择

  • false

  • true

runner_hwaddr_policy

字符串

在 community.general 3.4.0 中添加

这定义了在团队生命周期内应如何设置团队设备和端口设备的硬件地址的策略。

选择

  • "same_all"(相同全部)

  • "by_active"(按活动)

  • "only_active"(仅活动)

slave_type

字符串

在 community.general 7.0.0 中添加

此从属主连接的设备类型(例如 bond)。

类型 ovs-port 在 community.general 8.6.0 中添加。

选择

  • "bond"(绑定)

  • "bridge"(桥接)

  • "team"(团队)

  • "ovs-port"

slavepriority

整数

这仅用于 “bridge-slave” - [<0-63>] - 此从属的 STP 优先级。

默认值: 32

sriov

字典

在 community.general 10.1.0 中添加

允许配置 SR-IOV 设置。

可以在这里找到支持的属性的最新列表:https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/settings-sriov.html

autoprobe-drivers

整数

是否通过兼容的驱动程序自动探测虚拟功能。

eswitch-encap-mode

整数

选择 eswitch 封装支持。

eswitch-inline-mode

整数

选择设备的 eswitch 内联模式。

eswitch-mode

整数

选择设备的 eswitch 模式。

total-vfs

整数

要创建的虚拟功能数。 请查阅您的 NIC 文档以获取支持的最大 VF 数。

vfs

字符串

形式为:INDEX [ATTR=VALUE[ ATTR=VALUE]...] 的虚拟功能描述符。

可以使用逗号作为分隔符指定多个 VF,例如 2 mac=00:11:22:33:44:55 spoof-check=true,3 vlans=100

ssid

字符串

在 community.general 3.0.0 中添加

无线路由器或接入点的名称。

state

字符串 / 必需

设备是否应该存在,如果状态与所声明的不同,则采取行动。

使用 state=present 创建连接将自动启动连接。

使用 state=upstate=down 不会修改其他参数的连接。 这些状态已在 community.general 9.5.0 中添加。

选择

  • "absent"(不存在)

  • "present"(存在)

  • "up"(启动)

  • "down"(关闭)

stp

布尔值

这仅用于桥接,并控制是否为此桥启用生成树协议 (STP)。

选择

  • false

  • true ← (默认)

transport_mode

字符串

在 community.general 5.8.0 中添加

此选项设置 Infiniband IPoIB 设备的连接类型。

选择

  • "datagram" (数据报)

  • "connected" (已连接)

type (类型)

字符串

这是您希望创建或修改的设备或网络连接的类型。

类型 dummy 在 community.general 3.5.0 中添加。

类型 gsm 在 community.general 3.7.0 中添加。

类型 infiniband 在 community.general 2.0.0 中添加。

类型 loopback 在 community.general 8.1.0 中添加。

类型 macvlan 在 community.general 6.6.0 中添加。

类型 ovs-bridge 在 community.general 8.6.0 中添加。

类型 ovs-interface 在 community.general 8.6.0 中添加。

类型 ovs-port 在 community.general 8.6.0 中添加。

类型 wireguard 在 community.general 4.3.0 中添加。

类型 vpn 在 community.general 5.1.0 中添加。

使用 bond-slavebridge-slaveteam-slave 意味着 ethernet 连接类型,并带有相应的 slave_type 选项。

如果您想控制附加到 bondbridgeteam 的非以太网连接,请考虑使用 slave_type 选项。

选择

  • "bond"(绑定)

  • "bond-slave" (链路聚合从属)

  • "bridge"(桥接)

  • "bridge-slave" (网桥从属)

  • "dummy" (虚拟)

  • "ethernet" (以太网)

  • "generic" (通用)

  • "gre" (GRE 隧道)

  • "infiniband" (无限带宽)

  • "ipip" (IPIP 隧道)

  • "macvlan" (MACVLAN)

  • "sit" (SIT 隧道)

  • "team"(团队)

  • "team-slave" (团队从属)

  • "vlan" (VLAN)

  • "vxlan" (VXLAN)

  • "wifi" (无线)

  • "gsm" (GSM)

  • "wireguard" (WireGuard)

  • "ovs-bridge" (OVS 网桥)

  • "ovs-port"

  • "ovs-interface" (OVS 接口)

  • "vpn" (VPN)

  • "loopback" (回环)

updelay

整数

此选项仅与 bond - updelay 一起使用。

vlandev

字符串

此选项仅与 VLAN 一起使用 - 此 VLAN 所在的父设备,可以使用 ifname。

vlanid

整数

此选项仅与 VLAN 一起使用 - VLAN ID,范围为 <0-4095>。

vpn

字典

在 community.general 5.1.0 中添加

VPN 连接的配置 (PPTP 和 L2TP)。

为了使用 L2TP,您需要确保主机上安装了 network-manager-l2tp - 如果主机有 UI,还需要安装 network-manager-l2tp-gnome

gateway (网关)

字符串 / 必需

连接的网关。它可以是 IP 地址 (例如 192.0.2.1) 或 FQDN 地址 (例如 vpn.example.com)。

ipsec-enabled (启用 IPSec)

布尔值

启用或禁用到 L2TP 主机的 IPSec 隧道。

vpn.service-typeorg.freedesktop.NetworkManager.l2tp 时,需要此选项。

选择

  • false

  • true

ipsec-psk (IPSec 预共享密钥)

字符串

base64 编码的预共享密钥。

您可以使用以下 Ansible jinja2 表达式进行编码: "0s{{ '[您的预共享密钥]' | ansible.builtin.b64encode }}"

仅当 vpn.ipsec-enabled=true 时才使用此选项。

password-flags

整数

NMSettingSecretFlags 指示如何处理 vpn.password 属性。

允许以下选项: 0 NONE:系统负责提供和存储此密钥(默认); 1 AGENT_OWNED:用户密钥代理负责提供和存储此密钥;需要时将要求代理检索它; 2 NOT_SAVED:不应保存此密钥,而应在每次需要时向用户请求; 4 NOT_REQUIRED:在无法自动确定是否需要密钥的情况下(某些 VPN 和 PPP 提供程序不需要所有密钥),此标志指示不需要特定密钥。

选择

  • 0 ← (默认)

  • 1

  • 2

  • 4

permissions (权限)

字符串 / 必需

将有权使用连接的用户。

service-type (服务类型)

字符串 / 必需

定义连接的服务类型。

user (用户)

字符串 / 必需

VPN 管理员提供的用户名。

vxlan_id

整数

此选项仅与 VXLAN 一起使用 - VXLAN ID。

vxlan_local

字符串

此选项仅与 VXLAN 一起使用 - VXLAN 本地 IP 地址。

vxlan_remote

字符串

此选项仅与 VXLAN 一起使用 - VXLAN 目标 IP 地址。

wifi

字典

在 community.general 3.5.0 中添加

无线连接的配置。

请注意,子选项属性列表可能因主机上安装的 NetworkManager/nmcli 版本而异。

可以在这里找到受支持属性的最新列表: https://networkmanager.dev/docs/api/latest/settings-802-11-wireless.html

例如,要创建隐藏的 AP 模式无线连接: {hidden: true, mode: ap}

ap-isolation (AP 隔离)

整数

配置 AP 隔离,这可以防止连接到此 AP 的无线设备之间进行通信。

仅当接口配置为 AP 模式时,此属性才能设置为与 -1 不同的值。

如果设置为 1,设备将无法相互通信。这提高了安全性,因为它保护设备免受网络中其他客户端的攻击。同时,它会阻止设备访问与文件共享、打印机等相同的无线网络上的资源。

如果设置为 0,设备可以相互通信。

如果设置为 -1,则使用全局默认值;如果全局默认值未指定,则假定为 0

选择

  • -1 ← (默认)

  • 0

  • 1

assigned-mac-address (分配的 MAC 地址)

字符串

克隆 MAC 地址的新字段。

它可以是 ASCII 表示形式的硬件地址,也可以是特殊值 preservepermanentrandomstable 之一。

此字段替换 D-Bus 上已弃用的 wifi.cloned-mac-address,后者只能包含显式的硬件地址。

请注意,此属性仅存在于 D-Bus API 中。 libnm 和 nmcli 继续将此属性称为 cloned-mac-address

band (频段)

字符串

网络的 802.11 频段。

可以是 a (用于 5GHz 802.11a) 或 bg (用于 2.4GHz 802.11) 之一。

这会将 Wi-Fi 网络的关联锁定到特定频段,因此,例如,如果指定了 a,即使网络的设置兼容,该设备也不会与 2.4GHz 频段中的同一网络关联。

此设置取决于特定的驱动程序功能,可能不适用于所有驱动程序。

选择

  • "a"

  • "bg"

bssid

字符串

如果指定,则指示设备仅与给定的接入点关联。

此功能高度依赖于驱动程序,并非所有设备都支持。

请注意,此属性不控制创建 Ad-Hoc 网络时使用的 BSSID,并且将来不太可能这样做。

channel (信道)

整数

用于 Wi-Fi 连接的无线信道。

该设备将仅在指定的信道上加入(或为 Ad-Hoc 网络创建)Wi-Fi 网络。

由于信道号在频段之间重叠,因此此属性还需要设置 wifi.band 属性。

默认值: 0

cloned-mac-address (克隆的 MAC 地址)

字符串

此 D-Bus 字段已被弃用,转而使用 wifi.assigned-mac-address,后者更加灵活,允许指定 random 等特殊变体。

对于 libnm 和 nmcli,此字段称为 cloned-mac-address

generate-mac-address-mask (生成 MAC 地址掩码)

字符串

使用 wifi.cloned-mac-address 设置 randomstable 时,默认情况下,MAC 地址的所有位都会被加扰,并创建一个本地管理的单播 MAC 地址。 此属性允许指定某些位是固定的。

请注意,第一个 MAC 地址的最低有效位将始终取消设置,以创建单播 MAC 地址。

如果属性为 null,则可以被默认连接设置覆盖。

如果该值仍然是 null 或空字符串,则默认是创建一个本地管理的单播 MAC 地址。

如果该值包含一个 MAC 地址,则此地址将用作掩码。掩码的设置位将填充设备的当前 MAC 地址,而未设置的位则会进行随机化。

设置 FE:FF:FF:00:00:00 意味着保留当前 MAC 地址的 OUI,并且仅使用 randomstable 算法随机化低 3 个字节。

如果该值在掩码后包含一个额外的 MAC 地址,则将使用此地址而不是当前的 MAC 地址来填充不应随机化的位。

例如,值 FE:FF:FF:00:00:00 68:F7:28:00:00:00 会将 MAC 地址的 OUI 设置为 68:F7:28,而较低的位则会随机化。

02:00:00:00:00:00 00:00:00:00:00:00 将创建一个完全打乱的全局管理、烧录的 MAC 地址。

如果该值包含多个额外的 MAC 地址,则会随机选择其中一个。例如,02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00 将创建一个完全打乱的 MAC 地址,随机进行本地或全局管理。

隐藏

布尔值

如果为 true,则表示该网络是一个不广播其 SSID 的隐藏网络。这在基础设施模式和 AP 模式下都有效。

在基础设施模式下,会使用各种变通方法来更可靠地发现隐藏网络,例如探测扫描 SSID。然而,这些变通方法暴露了隐藏 SSID 网络固有的不安全性,因此应谨慎使用隐藏 SSID 网络。

在 AP 模式下,创建的网络不会广播其 SSID。

请注意,将网络标记为隐藏可能会对您(在基础设施模式下)或客户端工作站(在 AP 模式下)造成隐私问题,因为显式的探测扫描在空中是可明显识别的。

选择

  • false ← (默认)

  • true

mac-address

字符串

如果指定,则此连接将仅应用于其永久 MAC 地址匹配的 Wi-Fi 设备。

此属性不会更改设备的 MAC 地址(例如用于 MAC 欺骗)。

mac-address-blacklist

列表 / 元素=字符串

Wi-Fi 设备的永久 MAC 地址列表,此连接永远不应应用于这些设备。

每个 MAC 地址应以标准的十六进制数字和冒号表示法给出(例如,00:11:22:33:44:55)。

mac-address-randomization

整数

以下之一:0(除非用户已设置全局默认值以进行随机化,并且请求程序支持随机化,否则永不随机化)、1(永不随机化 MAC 地址)或 2(始终随机化 MAC 地址)。

此属性已弃用,请使用 wifi.cloned-mac-address

选择

  • 0 ← (默认)

  • 1

  • 2

mode

字符串

Wi-Fi 网络模式。如果为空,则假定为 infrastructure

选择

  • "infrastructure" ←(默认)

  • "mesh"

  • "adhoc"

  • "ap"

mtu

整数

如果非零,则仅传输指定大小或更小的数据包,将较大的数据包分解为多个以太网帧。

默认值: 0

powersave

整数

以下之一:2(禁用 Wi-Fi 省电)、3(启用 Wi-Fi 省电)、1(不更改当前配置的设置)或 0(使用全局配置的值)。

所有其他值均保留。

选择

  • 0 ← (默认)

  • 1

  • 2

  • 3

rate

整数

如果非零,则指示设备仅使用指定的比特率与接入点进行通信。

单位为 Kb/s,因此例如 5500 = 5.5 Mbit/s。

此属性高度依赖于驱动程序,并非所有设备都支持设置静态比特率。

默认值: 0

tx-power

整数

如果非零,则指示设备使用指定的发射功率。

单位为 dBm。

此属性高度依赖于驱动程序,并非所有设备都支持设置静态发射功率。

默认值: 0

wake-on-wlan

整数

要启用的 NMSettingWirelessWakeOnWLan 选项。并非所有设备都支持所有选项。

可以是 NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80)、NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) 或特殊值 0x1(使用全局设置)和 0x8000(禁用 NetworkManager 中对 LAN 唤醒的管理)的任意组合。

请注意,必须指定选项值的总和才能组合多个选项。

默认值: 1

wifi_sec

字典

在 community.general 3.0.0 中添加

WiFi 连接的安全配置。

请注意,子选项属性列表可能因主机上安装的 NetworkManager/nmcli 版本而异。

可以在此处找到支持的属性的最新列表:https://networkmanager.dev/docs/api/latest/settings-802-11-wireless-security.html

例如,要使用带密码的通用 WPA-PSK 身份验证:{key-mgmt: wpa-psk, psk: my_password}

auth-alg

字符串

当使用 WEP 时(即,如果 wifi_sec.key-mgmtnoneieee8021x),请在此处指示 AP 所需的 802.11 身份验证算法。

以下之一:open 表示开放系统,shared 表示共享密钥,或 leap 表示 Cisco LEAP。

当使用 Cisco LEAP 时(即,如果 wifi_sec.key-mgmt=ieee8021xwifi_sec.auth-alg=leap),则必须指定 wifi_sec.leap-usernamewifi_sec.leap-password 属性。

选择

  • "open"

  • "shared"(共享)

  • "leap"

fils

整数

指示是否必须为连接启用快速初始链接设置 (802.11ai)。

以下之一:0(使用全局默认值)、1(禁用 FILS)、2(如果请求程序和接入点都支持,则启用 FILS)或 3(启用 FILS,如果不支持则失败)。

当设置为 0 且未设置全局默认值时,将可选启用 FILS。

选择

  • 0 ← (默认)

  • 1

  • 2

  • 3

group

列表 / 元素=字符串

组/广播加密算法列表,可防止连接到未使用列表中一种算法的 Wi-Fi 网络。

为获得最大兼容性,请将此属性留空。

选择

  • "wep40"

  • "wep104"

  • "tkip"

  • "ccmp"

key-mgmt

字符串

用于连接的密钥管理。

以下之一:none(WEP 或无密码保护)、ieee8021x(动态 WEP)、owe(机会无线加密)、wpa-psk (WPA2 + WPA3 个人)、sae(仅 WPA3 个人)、wpa-eap (WPA2 + WPA3 企业) 或 wpa-eap-suite-b-192(仅 WPA3 企业)。

对于使用安全性的任何 Wi-Fi 连接,都必须设置此属性。

选择

  • "none"

  • "ieee8021x"

  • "owe"

  • "wpa-psk"

  • "sae"

  • "wpa-eap"

  • "wpa-eap-suite-b-192"

leap-password

字符串

旧版 LEAP 连接的登录密码(即,如果 wifi_sec.key-mgmt=ieee8021xwifi_sec.auth-alg=leap)。

leap-password-flags

list / elements=integer

指示如何处理 wifi_sec.leap-password 属性的标志。

leap-username

字符串

旧版 LEAP 连接的登录用户名(即,如果 wifi_sec.key-mgmt=ieee8021xwifi_sec.auth-alg=leap)。

pairwise

列表 / 元素=字符串

成对加密算法列表,可防止连接到未使用列表中一种算法的 Wi-Fi 网络。

为获得最大兼容性,请将此属性留空。

选择

  • "tkip"

  • "ccmp"

pmf

整数

指示是否必须为连接启用受保护的管理帧 (802.11w)。

可以是 0 (使用全局默认值)、1 (禁用 PMF)、2 (如果请求方和接入点都支持,则启用 PMF)或 3 (启用 PMF,如果不支持则失败)。

当设置为 0 且未设置全局默认值时,PMF 将可选择性启用。

选择

  • 0 ← (默认)

  • 1

  • 2

  • 3

proto

列表 / 元素=字符串

指定允许使用的 WPA 协议版本的字符串列表。

每个元素可以是 wpa (允许 WPA)或 rsn (允许 WPA2/RSN)。

如果未指定,则允许 WPA 和 RSN 连接。

选择

  • "wpa"

  • "rsn"

psk

字符串

WPA 网络的预共享密钥。

对于 WPA-PSK,它要么是 8 到 63 个字符的 ASCII 密码(按照 802.11i 标准的规定,散列后得出实际密钥),要么是 64 个十六进制字符形式的密钥。

WPA3-Personal 网络对 SAE 身份验证使用任意长度的密码。

psk-flags

list / elements=integer

指示如何处理 wifi_sec.psk 属性的标志。

wep-key-flags

list / elements=integer

指示如何处理 wifi_sec.wep-key0wifi_sec.wep-key1wifi_sec.wep-key2wifi_sec.wep-key3 属性的标志。

wep-key-type

整数

控制 WEP 密钥的解释方式。

允许的值为 1,在这种情况下,密钥要么是 10 个或 26 个字符的十六进制字符串,要么是 5 个或 13 个字符的 ASCII 密码;或者 2,在这种情况下,密码以字符串形式提供,并将使用实际上的 MD5 方法进行散列,以得出实际的 WEP 密钥。

选择

  • 1

  • 2

wep-key0

字符串

索引 0 的 WEP 密钥。这是大多数网络中使用的 WEP 密钥。

有关如何解释此密钥的描述,请参阅 wifi_sec.wep-key-type 属性。

wep-key1

字符串

索引 1 的 WEP 密钥。大多数网络不使用此 WEP 索引。

有关如何解释此密钥的描述,请参阅 wifi_sec.wep-key-type 属性。

wep-key2

字符串

索引 2 的 WEP 密钥。大多数网络不使用此 WEP 索引。

有关如何解释此密钥的描述,请参阅 wifi_sec.wep-key-type 属性。

wep-key3

字符串

索引 3 的 WEP 密钥。大多数网络不使用此 WEP 索引。

有关如何解释此密钥的描述,请参阅 wifi_sec.wep-key-type 属性。

wep-tx-keyidx

整数

当使用静态 WEP 时(即,如果 wifi_sec.key-mgmt=none)且 AP 使用非默认的 WEP 密钥索引时,请将该 WEP 密钥索引放在此处。

有效值为 0 (默认密钥)到 3

请注意,某些消费级接入点(如 Linksys WRT54G)将密钥编号为 14

选择

  • 0 ← (默认)

  • 1

  • 2

  • 3

wps-method

整数

指示如果使用 WPS,则使用哪种 WPS 模式的标志。

更改默认设置意义不大,因为 NetworkManager 会自动确定是否可以从接入点功能启动 WPS 注册。

可以通过将此属性设置为值 1 来禁用 WPS。

默认值: 0

wireguard

字典

在 community.general 4.3.0 中添加

Wireguard 连接的配置。

请注意,子选项属性列表可能因主机上安装的 NetworkManager/nmcli 版本而异。

可以在此处找到受支持属性的最新列表:https://networkmanager.dev/docs/api/latest/settings-wireguard.html

例如,要配置侦听端口:{listen-port: 12345}

fwmark

整数

传出数据包的 32 位 fwmark。

fwmark 的使用是可选的,默认情况下处于关闭状态。将其设置为 0 将禁用它。

请注意,启用 wireguard.ip4-auto-default-routewireguard.ip6-auto-default-route 意味着自动选择 fwmark。

ip4-auto-default-route

布尔值

是否启用 IPv4 默认路由的特殊处理。

如果启用,来自 wireguard.peer-routes 的 IPv4 默认路由将放置到专用路由表中,并添加两条策略路由规则。

fwmark 数字也用作默认路由的路由表,如果 fwmark 为零,则会自动选择未使用的 fwmark/表。这对应于 wg-quick 使用 Table=auto 的操作,以及 WireGuard 所谓的“改进的基于规则的路由”。

选择

  • false

  • true

ip6-auto-default-route

布尔值

类似于 wireguard.ip4-auto-default-route,但用于 IPv6 默认路由。

选择

  • false

  • true

listen-port

整数

WireGuard 连接侦听端口。如果未指定,则端口将在接口启动时随机选择。

mtu

整数

如果非零,则仅传输指定大小或更小的数据包,将较大的数据包拆分为多个片段。

如果为零,则使用默认 MTU。请注意,与 wg-quick 的 MTU 设置相反,这不考虑激活时的当前路由。

peer-routes

布尔值

是否自动为对等点的 AllowedIPs 范围添加路由。

如果为 true (默认值),则 NetworkManager 将根据 ipv4.route-tableipv6.route-table 在路由表中自动添加路由。通常,您希望启用此自动化。

如果为 false,则不会自动添加此类路由。在这种情况下,用户可能希望分别在 ipv4.routesipv6.routes 中配置静态路由。

请注意,如果对等点的 AllowedIPs 为 0.0.0.0/0::/0 并且配置文件的 ipv4.never-defaultipv6.never-default 设置已启用,则不会自动添加此对等点的路由。

选择

  • false

  • true

private-key

字符串

Base64 编码的 256 位私钥。

private-key-flags

整数

NMSettingSecretFlags 指示如何处理 wireguard.private-key 属性。

选择

  • 0

  • 1

  • 2

xmit_hash_policy

字符串

在 community.general 5.6.0 中添加

这仅用于 bond - xmit_hash_policy 类型。

zone

字符串

在 community.general 2.0.0 中添加

连接的信任级别。

当在当前激活的连接上更新此属性时,更改会立即生效。

属性

属性

支持

描述

check_mode

支持: 完全

可以在 check_mode 下运行,并返回更改状态预测,而无需修改目标。

diff_mode

支持: 完全

在 diff 模式下,将返回有关已更改的内容(或可能需要在 check_mode 中更改的内容)的详细信息。

示例

# These examples are using the following inventory:
#
# ## Directory layout:
#
# |_/inventory/cloud-hosts
# |           /group_vars/openstack-stage.yml
# |           /host_vars/controller-01.openstack.host.com
# |           /host_vars/controller-02.openstack.host.com
# |_/playbook/library/nmcli.py
# |          /playbook-add.yml
# |          /playbook-del.yml
# ```
#
# ## inventory examples
# ### groups_vars
# ```yml
# ---
# #devops_os_define_network
# storage_gw: "192.0.2.254"
# external_gw: "198.51.100.254"
# tenant_gw: "203.0.113.254"
#
# #Team vars
# nmcli_team:
#   - conn_name: tenant
#     ip4: '{{ tenant_ip }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: external
#     ip4: '{{ external_ip }}'
#     gw4: '{{ external_gw }}'
#   - conn_name: storage
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
# nmcli_team_slave:
#   - conn_name: em1
#     ifname: em1
#     master: tenant
#   - conn_name: em2
#     ifname: em2
#     master: tenant
#   - conn_name: p2p1
#     ifname: p2p1
#     master: storage
#   - conn_name: p2p2
#     ifname: p2p2
#     master: external
#
# #bond vars
# nmcli_bond:
#   - conn_name: tenant
#     ip4: '{{ tenant_ip }}'
#     gw4: ''
#     mode: balance-rr
#   - conn_name: external
#     ip4: '{{ external_ip }}'
#     gw4: ''
#     mode: balance-rr
#   - conn_name: storage
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
#     mode: balance-rr
# nmcli_bond_slave:
#   - conn_name: em1
#     ifname: em1
#     master: tenant
#   - conn_name: em2
#     ifname: em2
#     master: tenant
#   - conn_name: p2p1
#     ifname: p2p1
#     master: storage
#   - conn_name: p2p2
#     ifname: p2p2
#     master: external
#
# #ethernet vars
# nmcli_ethernet:
#   - conn_name: em1
#     ifname: em1
#     ip4:
#       - '{{ tenant_ip }}'
#       - '{{ second_tenant_ip }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: em2
#     ifname: em2
#     ip4: '{{ tenant_ip1 }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: p2p1
#     ifname: p2p1
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
#   - conn_name: p2p2
#     ifname: p2p2
#     ip4: '{{ external_ip }}'
#     gw4: '{{ external_gw }}'
# ```
#
# ### host_vars
# ```yml
# ---
# storage_ip: "192.0.2.91/23"
# external_ip: "198.51.100.23/21"
# tenant_ip: "203.0.113.77/23"
# second_tenant_ip: "204.0.113.77/23"
# ```



## playbook-add.yml example

---
- hosts: openstack-stage
  remote_user: root
  tasks:

  - name: Install needed network manager libs
    ansible.builtin.package:
      name:
        - NetworkManager-libnm
        - nm-connection-editor
        - libsemanage-python
        - policycoreutils-python
      state: present

##### Working with all cloud nodes - Teaming
  - name: Try nmcli add team - conn_name only & ip4 gw4
    community.general.nmcli:
      type: team
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      state: present
    with_items:
      - '{{ nmcli_team }}'

  - name: Try nmcli add teams-slave
    community.general.nmcli:
      type: team-slave
      conn_name: '{{ item.conn_name }}'
      ifname: '{{ item.ifname }}'
      master: '{{ item.master }}'
      state: present
    with_items:
      - '{{ nmcli_team_slave }}'

###### Working with all cloud nodes - Bonding
  - name: Try nmcli add bond - conn_name only & ip4 gw4 mode
    community.general.nmcli:
      type: bond
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      mode: '{{ item.mode }}'
      state: present
    with_items:
      - '{{ nmcli_bond }}'

  - name: Try nmcli add bond-slave
    community.general.nmcli:
      type: bond-slave
      conn_name: '{{ item.conn_name }}'
      ifname: '{{ item.ifname }}'
      master: '{{ item.master }}'
      state: present
    with_items:
      - '{{ nmcli_bond_slave }}'

##### Working with all cloud nodes - Ethernet
  - name: Try nmcli add Ethernet - conn_name only & ip4 gw4
    community.general.nmcli:
      type: ethernet
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      state: present
    with_items:
      - '{{ nmcli_ethernet }}'

## playbook-del.yml example
- hosts: openstack-stage
  remote_user: root
  tasks:

  - name: Try nmcli del team - multiple
    community.general.nmcli:
      conn_name: '{{ item.conn_name }}'
      state: absent
    with_items:
      - conn_name: em1
      - conn_name: em2
      - conn_name: p1p1
      - conn_name: p1p2
      - conn_name: p2p1
      - conn_name: p2p2
      - conn_name: tenant
      - conn_name: storage
      - conn_name: external
      - conn_name: team-em1
      - conn_name: team-em2
      - conn_name: team-p1p1
      - conn_name: team-p1p2
      - conn_name: team-p2p1
      - conn_name: team-p2p2

  - name: Add an Ethernet connection with static IP configuration
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      state: present

  - name: Add an Team connection with static IP configuration
    community.general.nmcli:
      conn_name: my-team1
      ifname: my-team1
      type: team
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      state: present
      autoconnect: true

  - name: Optionally, at the same time specify IPv6 addresses for the device
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      ip6: 2001:db8::cafe
      gw6: 2001:db8::1
      state: present

  - name: Add two IPv4 DNS server addresses
    community.general.nmcli:
      conn_name: my-eth1
      type: ethernet
      dns4:
      - 192.0.2.53
      - 198.51.100.53
      state: present

  - name: Make a profile usable for all compatible Ethernet interfaces
    community.general.nmcli:
      ctype: ethernet
      name: my-eth1
      ifname: '*'
      state: present

  - name: Change the property of a setting e.g. MTU
    community.general.nmcli:
      conn_name: my-eth1
      mtu: 9000
      type: ethernet
      state: present

  - name: Change the property of a setting e.g. MTU and reload connection
    community.general.nmcli:
      conn_name: my-eth1
      mtu: 1500
      type: ethernet
      state: present
      conn_reload: true

  - name: Disable connection
    community.general.nmcli:
      conn_name: my-eth1
      state: down

  - name: Reload and enable connection
    community.general.nmcli:
      conn_name: my-eth1
      state: up
      reload: true

  - name: Add second ip4 address
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip4:
        - 192.0.2.100/24
        - 192.0.3.100/24
      state: present

  - name: Add second ip6 address
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip6:
        - 2001:db8::cafe
        - 2002:db8::cafe
      state: present

  - name: Add VxLan
    community.general.nmcli:
      type: vxlan
      conn_name: vxlan_test1
      vxlan_id: 16
      vxlan_local: 192.168.1.2
      vxlan_remote: 192.168.1.5

  - name: Add gre
    community.general.nmcli:
      type: gre
      conn_name: gre_test1
      ip_tunnel_dev: eth0
      ip_tunnel_local: 192.168.1.2
      ip_tunnel_remote: 192.168.1.5

  - name: Add ipip
    community.general.nmcli:
      type: ipip
      conn_name: ipip_test1
      ip_tunnel_dev: eth0
      ip_tunnel_local: 192.168.1.2
      ip_tunnel_remote: 192.168.1.5

  - name: Add sit
    community.general.nmcli:
      type: sit
      conn_name: sit_test1
      ip_tunnel_dev: eth0
      ip_tunnel_local: 192.168.1.2
      ip_tunnel_remote: 192.168.1.5

  - name: Add zone
    community.general.nmcli:
      type: ethernet
      conn_name: my-eth1
      zone: external
      state: present

# nmcli exits with status 0 if it succeeds and exits with a status greater
# than zero when there is a failure. The following list of status codes may be
# returned:
#
#     - 0 Success - indicates the operation succeeded
#     - 1 Unknown or unspecified error
#     - 2 Invalid user input, wrong nmcli invocation
#     - 3 Timeout expired (see --wait option)
#     - 4 Connection activation failed
#     - 5 Connection deactivation failed
#     - 6 Disconnecting device failed
#     - 7 Connection deletion failed
#     - 8 NetworkManager is not running
#     - 9 nmcli and NetworkManager versions mismatch
#     - 10 Connection, device, or access point does not exist.

- name: Create the wifi connection
  community.general.nmcli:
    type: wifi
    conn_name: Brittany
    ifname: wlp4s0
    ssid: Brittany
    wifi_sec:
      key-mgmt: wpa-psk
      psk: my_password
    autoconnect: true
    state: present

- name: Create a hidden AP mode wifi connection
  community.general.nmcli:
    type: wifi
    conn_name: ChocoMaster
    ifname: wlo1
    ssid: ChocoMaster
    wifi:
      hidden: true
      mode: ap
    autoconnect: true
    state: present

- name: Create a gsm connection
  community.general.nmcli:
    type: gsm
    conn_name: my-gsm-provider
    ifname: cdc-wdm0
    gsm:
        apn: my.provider.apn
        username: my-provider-username
        password: my-provider-password
        pin: my-sim-pin
    autoconnect: true
    state: present

- name: Create a macvlan connection
  community.general.nmcli:
    type: macvlan
    conn_name: my-macvlan-connection
    ifname: mymacvlan0
    macvlan:
        mode: 2
        parent: eth1
    autoconnect: true
    state: present

- name: Create a wireguard connection
  community.general.nmcli:
    type: wireguard
    conn_name: my-wg-provider
    ifname: mywg0
    wireguard:
        listen-port: 51820
        private-key: my-private-key
    autoconnect: true
    state: present

- name: >-
    Create a VPN L2TP connection for ansible_user to connect on vpn.example.com
    authenticating with user 'brittany' and pre-shared key as 'Brittany123'
  community.general.nmcli:
    type: vpn
    conn_name: my-vpn-connection
    vpn:
        permissions: "{{ ansible_user }}"
        service-type: org.freedesktop.NetworkManager.l2tp
        gateway: vpn.example.com
        password-flags: 2
        user: brittany
        ipsec-enabled: true
        ipsec-psk: "0s{{ 'Brittany123' | ansible.builtin.b64encode }}"
    autoconnect: false
    state: present

## Creating bond attached to bridge example
- name: Create bond attached to bridge
  community.general.nmcli:
    type: bond
    conn_name: bond0
    slave_type: bridge
    master: br0
    state: present

- name: Create master bridge
  community.general.nmcli:
    type: bridge
    conn_name: br0
    method4: disabled
    method6: disabled
    state: present

## Creating vlan connection attached to bridge
- name: Create master bridge
  community.general.nmcli:
    type: bridge
    conn_name: br0
    state: present

- name: Create VLAN 5
  community.general.nmcli:
    type: vlan
    conn_name: eth0.5
    slave_type: bridge
    master: br0
    vlandev: eth0
    vlanid: 5
    state: present

## Defining ip rules while setting a static IP
## table 'production' is set with id 200 in this example.
- name: Set Static ips for interface with ip rules and routes
  community.general.nmcli:
    type: ethernet
    conn_name: 'eth0'
    ip4: '192.168.1.50'
    gw4: '192.168.1.1'
    state: present
    routes4_extended:
      - ip: "0.0.0.0/0"
        next_hop: "192.168.1.1"
        table: "production"
    routing_rules4:
      - "priority 0 from 192.168.1.50 table 200"

## Creating an OVS bridge and attaching a port
- name: Create OVS Bridge
  community.general.nmcli:
    conn_name: ovs-br-conn
    ifname: ovs-br
    type: ovs-bridge
    state: present

- name: Create OVS Port for OVS Bridge Interface
  community.general.nmcli:
    conn_name: ovs-br-interface-port-conn
    ifname: ovs-br-interface-port
    master: ovs-br
    type: ovs-port
    state: present

## Adding an ethernet interface to an OVS bridge port
- name: Add Ethernet Interface to OVS Port
  community.general.nmcli:
    conn_name: eno1
    ifname: eno1
    master: ovs-br-interface-port
    slave_type: ovs-port
    type: ethernet
    state: present

作者

  • Chris Long (@alcamie101)