mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Update nmcli.py to support OVS commands (#8154)
* Update nmcli.py to support OVS commands Adding Openvswitch command support and documentation to the nmcli module * Fixed versioning and documentation, added changelog fragment * Update changelogs/fragments/8154-add-ovs-commands-to-nmcli-module.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/nmcli.py Co-authored-by: Felix Fontein <felix@fontein.de> --------- Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
b674f94f64
commit
39ef949f27
2 changed files with 44 additions and 5 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- nmcli - adds OpenvSwitch support with new ``type`` values ``ovs-port``, ``ovs-interface``, and ``ovs-bridge``, and new ``slave_type`` value ``ovs-port`` (https://github.com/ansible-collections/community.general/pull/8154).
|
|
@ -64,13 +64,16 @@ options:
|
||||||
- Type V(infiniband) is added in community.general 2.0.0.
|
- Type V(infiniband) is added in community.general 2.0.0.
|
||||||
- Type V(loopback) is added in community.general 8.1.0.
|
- Type V(loopback) is added in community.general 8.1.0.
|
||||||
- Type V(macvlan) is added in community.general 6.6.0.
|
- Type V(macvlan) is added in community.general 6.6.0.
|
||||||
|
- Type V(ovs-bridge) is added in community.general 8.6.0.
|
||||||
|
- Type V(ovs-interface) is added in community.general 8.6.0.
|
||||||
|
- Type V(ovs-port) is added in community.general 8.6.0.
|
||||||
- Type V(wireguard) is added in community.general 4.3.0.
|
- Type V(wireguard) is added in community.general 4.3.0.
|
||||||
- Type V(vpn) is added in community.general 5.1.0.
|
- Type V(vpn) is added in community.general 5.1.0.
|
||||||
- Using V(bond-slave), V(bridge-slave), or V(team-slave) implies V(ethernet) connection type with corresponding O(slave_type) option.
|
- Using V(bond-slave), V(bridge-slave), or V(team-slave) implies V(ethernet) connection type with corresponding O(slave_type) option.
|
||||||
- If you want to control non-ethernet connection attached to V(bond), V(bridge), or V(team) consider using O(slave_type) option.
|
- If you want to control non-ethernet connection attached to V(bond), V(bridge), or V(team) consider using O(slave_type) option.
|
||||||
type: str
|
type: str
|
||||||
choices: [ bond, bond-slave, bridge, bridge-slave, dummy, ethernet, generic, gre, infiniband, ipip, macvlan, sit, team, team-slave, vlan, vxlan,
|
choices: [ bond, bond-slave, bridge, bridge-slave, dummy, ethernet, generic, gre, infiniband, ipip, macvlan, sit, team, team-slave, vlan, vxlan,
|
||||||
wifi, gsm, wireguard, vpn, loopback ]
|
wifi, gsm, wireguard, ovs-bridge, ovs-port, ovs-interface, vpn, loopback ]
|
||||||
mode:
|
mode:
|
||||||
description:
|
description:
|
||||||
- This is the type of device or network connection that you wish to create for a bond or bridge.
|
- This is the type of device or network connection that you wish to create for a bond or bridge.
|
||||||
|
@ -86,12 +89,13 @@ options:
|
||||||
slave_type:
|
slave_type:
|
||||||
description:
|
description:
|
||||||
- Type of the device of this slave's master connection (for example V(bond)).
|
- Type of the device of this slave's master connection (for example V(bond)).
|
||||||
|
- Type V(ovs-port) is added in community.general 8.6.0.
|
||||||
type: str
|
type: str
|
||||||
choices: [ 'bond', 'bridge', 'team' ]
|
choices: [ 'bond', 'bridge', 'team', 'ovs-port' ]
|
||||||
version_added: 7.0.0
|
version_added: 7.0.0
|
||||||
master:
|
master:
|
||||||
description:
|
description:
|
||||||
- Master <master (ifname, or connection UUID or conn_name) of bridge, team, bond master connection profile.
|
- Master <master (ifname, or connection UUID or conn_name) of bridge, team, bond, ovs-port master connection profile.
|
||||||
- Mandatory if O(slave_type) is defined.
|
- Mandatory if O(slave_type) is defined.
|
||||||
type: str
|
type: str
|
||||||
ip4:
|
ip4:
|
||||||
|
@ -1505,6 +1509,32 @@ EXAMPLES = r'''
|
||||||
table: "production"
|
table: "production"
|
||||||
routing_rules4:
|
routing_rules4:
|
||||||
- "priority 0 from 192.168.1.50 table 200"
|
- "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
|
||||||
'''
|
'''
|
||||||
|
|
||||||
RETURN = r"""#
|
RETURN = r"""#
|
||||||
|
@ -1678,7 +1708,8 @@ class Nmcli(object):
|
||||||
}
|
}
|
||||||
|
|
||||||
# IP address options.
|
# IP address options.
|
||||||
if self.ip_conn_type and not self.master:
|
# The ovs-interface type can be both ip_conn_type and have a master
|
||||||
|
if (self.ip_conn_type and not self.master) or self.type == "ovs-interface":
|
||||||
options.update({
|
options.update({
|
||||||
'ipv4.addresses': self.enforce_ipv4_cidr_notation(self.ip4),
|
'ipv4.addresses': self.enforce_ipv4_cidr_notation(self.ip4),
|
||||||
'ipv4.dhcp-client-id': self.dhcp_client_id,
|
'ipv4.dhcp-client-id': self.dhcp_client_id,
|
||||||
|
@ -1939,6 +1970,7 @@ class Nmcli(object):
|
||||||
'wireguard',
|
'wireguard',
|
||||||
'vpn',
|
'vpn',
|
||||||
'loopback',
|
'loopback',
|
||||||
|
'ovs-interface',
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -2005,6 +2037,8 @@ class Nmcli(object):
|
||||||
'team-slave',
|
'team-slave',
|
||||||
'wifi',
|
'wifi',
|
||||||
'infiniband',
|
'infiniband',
|
||||||
|
'ovs-port',
|
||||||
|
'ovs-interface',
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -2400,7 +2434,7 @@ def main():
|
||||||
state=dict(type='str', required=True, choices=['absent', 'present']),
|
state=dict(type='str', required=True, choices=['absent', 'present']),
|
||||||
conn_name=dict(type='str', required=True),
|
conn_name=dict(type='str', required=True),
|
||||||
master=dict(type='str'),
|
master=dict(type='str'),
|
||||||
slave_type=dict(type='str', choices=['bond', 'bridge', 'team']),
|
slave_type=dict(type='str', choices=['bond', 'bridge', 'team', 'ovs-port']),
|
||||||
ifname=dict(type='str'),
|
ifname=dict(type='str'),
|
||||||
type=dict(type='str',
|
type=dict(type='str',
|
||||||
choices=[
|
choices=[
|
||||||
|
@ -2425,6 +2459,9 @@ def main():
|
||||||
'wireguard',
|
'wireguard',
|
||||||
'vpn',
|
'vpn',
|
||||||
'loopback',
|
'loopback',
|
||||||
|
'ovs-interface',
|
||||||
|
'ovs-bridge',
|
||||||
|
'ovs-port',
|
||||||
]),
|
]),
|
||||||
ip4=dict(type='list', elements='str'),
|
ip4=dict(type='list', elements='str'),
|
||||||
gw4=dict(type='str'),
|
gw4=dict(type='str'),
|
||||||
|
|
Loading…
Reference in a new issue