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

整数

这仅与 bond 一起使用 - ARP 间隔。

arp_ip_target

字符串

这仅与 bond 一起使用 - 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

整数

这仅与 bond 一起使用 - downdelay。

egress

字符串

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

flags

字符串

这仅与 VLAN 一起使用 - flags。

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、用户名和密码:{apn: provider.apn, pin: 1234, username: apn.username, password: apn.password}

apn

字符串

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

APN 通常决定用户如何为其网络使用付费,以及用户是否可以访问互联网或只是提供商特定的封闭网络,因此使用用户移动宽带计划的正确 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

整数

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

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

选项

  • 0 ← (默认值)

  • 1

  • 2

  • 4

pin

字符串

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

在此处指定 PIN 以允许操作设备。

pin-flags

整数

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

请参阅 gsm.password-flags 获取 NMSettingSecretFlags 选择。

选项

  • 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

整数

这仅用于 bridge - [hello-time <1-10>] STP hello 时间(秒)。

默认值: 2

ifname

字符串

要将连接绑定到的接口。

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

特殊值 '*' 可用于与接口无关的连接。

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

对于除 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

整数 / 必需

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 主连接配置文件的主

如果定义了 slave_type,则为必填项。

maxage

整数

仅在 bridge 中使用 - [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

整数

仅在 bond 中使用 - miimon。

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

mode

字符串

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

选项

  • "802.3ad"

  • "active-backup"

  • "balance-alb"

  • "balance-rr" ← (默认)

  • "balance-tlb"

  • "balance-xor"

  • "broadcast"

mtu

整数

连接 MTU,例如 9000。创建接口时无法应用此参数,而是在创建接口后进行。

可在修改团队、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

字符串

仅在 bond 中使用,并且是主接口名称(对于“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

列表 / 元素=字典

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

列表 / 元素=字典

带参数的 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

整数

要创建的虚拟函数数量。请参阅您的网卡文档以了解支持的 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

字符串

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

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

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

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

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

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

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

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

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

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

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

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

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

选项

  • "bond"

  • "bond-slave"

  • "bridge"

  • "bridge-slave"

  • "dummy"

  • "ethernet"

  • "generic"

  • "gre"

  • "infiniband"

  • "ipip"

  • "macvlan"

  • "sit"

  • "team"

  • "team-slave"

  • "vlan"

  • "vxlan"

  • "wifi"

  • "gsm"

  • "wireguard"

  • "ovs-bridge"

  • "ovs-port"

  • "ovs-interface"

  • "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

布尔值

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

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

选项

  • false

  • true

ipsec-psk

字符串

以 base64 编码的预共享密钥。

您可以使用此 Ansible jinja2 表达式进行编码:"0s{{ '[YOUR PRE-SHARED KEY]' | 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 中添加

WiFi 连接的配置。

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

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

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

ap-isolation

整数

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

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

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

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

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

选项

  • -1 ← (默认)

  • 0

  • 1

assigned-mac-address

字符串

克隆 MAC 地址的新字段。

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

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

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

band

字符串

网络的 802.11 频率频段。

5GHz 802.11a 的a或 2.4GHz 802.11 的bg

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

此设置取决于具体的驱动程序功能,可能并非所有驱动程序都支持。

选项

  • "a"

  • "bg"

bssid

字符串

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

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

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

channel

整数

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

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

由于不同频段的信道编号重叠,此属性还需要设置wifi.band属性。

默认值: 0

cloned-mac-address

字符串

此D-Bus字段已弃用,推荐使用更灵活的wifi.assigned-mac-address,它允许指定特殊变体,例如random

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

generate-mac-address-mask

字符串

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地址,随机地本地或全局管理。

hidden

布尔值

如果为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(除非用户设置了全局默认值以进行随机化且supplicant支持随机化,否则不进行随机化),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中的Wake-on-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,或对于Cisco LEAP为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(如果supplicant和接入点支持,则启用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

列表 / 元素=整数

指示如何处理 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-个人网络使用任何长度的密码进行 SAE 身份验证。

psk-flags

列表 / 元素=整数

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

wep-key-flags

列表 / 元素=整数

指示如何处理 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 模式(如有)。

更改默认设置意义不大,因为 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

私钥

字符串

256 位私钥,采用 Base64 编码。

私钥标志

整数

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

选项

  • 0

  • 1

  • 2

xmit_hash_policy

字符串

在 community.general 5.6.0 版本中添加。

此属性仅在 bond - xmit_hash_policy 类型下使用。

区域

字符串

在 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)