From 295f372ebfbc52d7cab612cb6392f9fe725cd10d Mon Sep 17 00:00:00 2001 From: Mario Lenz Date: Sun, 26 Jan 2025 14:03:22 +0100 Subject: [PATCH] vmware_vmkernel: Support IPv6 --- changelogs/fragments/1740-vmware_vmkernel.yml | 3 ++ plugins/modules/vmware_vmkernel.py | 36 +++++++++++++------ 2 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 changelogs/fragments/1740-vmware_vmkernel.yml diff --git a/changelogs/fragments/1740-vmware_vmkernel.yml b/changelogs/fragments/1740-vmware_vmkernel.yml new file mode 100644 index 000000000..099c7909e --- /dev/null +++ b/changelogs/fragments/1740-vmware_vmkernel.yml @@ -0,0 +1,3 @@ +minor_changes: + - vmware_vmkernel - Support setting an IPv6 address + (https://github.com/ansible-collections/community.vmware/pull/1740). diff --git a/plugins/modules/vmware_vmkernel.py b/plugins/modules/vmware_vmkernel.py index 26dbe7b2b..68b24e0c2 100644 --- a/plugins/modules/vmware_vmkernel.py +++ b/plugins/modules/vmware_vmkernel.py @@ -65,22 +65,35 @@ ip_address: type: str description: - - Static IP address. + - Static IPv4 address. - Required if O(network.type=static). subnet_mask: type: str description: - - Static netmask required. + - Static IPv4 netmask. - Required if O(network.type=static). default_gateway: type: str - description: Default gateway (Override default gateway for this adapter). + description: Default IPv4 gateway (Override default gateway for this adapter). tcpip_stack: type: str description: - The TCP/IP stack for the VMKernel interface. choices: [ 'default', 'provisioning', 'vmotion', 'vxlan' ] default: 'default' + ipv6_address: + type: str + description: + - Static IPv6 address. + - Required if O(network.ipv6_subnet_mask) is set. + ipv6_subnet_mask: + type: str + description: + - Static IPv6 netmask. + - Required if O(network.ipv6_address) is set. + ipv6_default_gateway: + type: str + description: Default IPv6 gateway (Override default gateway for this adapter). type: dict default: { type: 'static', @@ -324,14 +337,6 @@ def __init__(self, module): msg="Failed to get details of ESXi server. Please specify esxi_hostname." ) - if self.network_type == 'static': - if self.module.params['state'] == 'absent': - pass - elif not self.ip_address: - module.fail_json(msg="ip_address is a required parameter when network type is set to 'static'") - elif not self.subnet_mask: - module.fail_json(msg="subnet_mask is a required parameter when network type is set to 'static'") - # find Port Group if self.vswitch_name: self.port_group_obj = self.get_port_group_by_name( @@ -1113,12 +1118,21 @@ def main(): ip_address=dict(type='str'), subnet_mask=dict(type='str'), default_gateway=dict(type='str'), + ipv6_address=dict(type='str'), + ipv6_subnet_mask=dict(type='str'), + ipv6_default_gateway=dict(type='str'), tcpip_stack=dict(type='str', default='default', choices=['default', 'provisioning', 'vmotion', 'vxlan']), ), default=dict( type='static', tcpip_stack='default', ), + required_if=[ + ('type', 'static' ('ip_address', 'subnet_mask')) + ], + required_together=[ + ['ipv6_address', 'ipv6_subnet_mask'] + ], ), state=dict( type='str',