- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# vmware_dvs_portgroup – Create or remove a Distributed vSwitch portgroup

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Status

## Synopsis

- Create or remove a Distributed vSwitch portgroup.

## Requirements

The below requirements are needed on the host that executes this module.

- python >= 2.6
- PyVmomi

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
hostname string |  | The hostname or IP address of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable `VMWARE_HOST` will be used instead. Environment variable support added in Ansible 2.6.
network_policy dictionary added in 2.5 | Default: {"forged_transmits": false, "mac_changes": false, "promiscuous": false} | Dictionary which configures the different security values for portgroup. Valid attributes are: - `promiscuous` (bool): indicates whether promiscuous mode is allowed. (default: false) - `forged_transmits` (bool): indicates whether forged transmits are allowed. (default: false) - `mac_changes` (bool): indicates whether mac changes are allowed. (default: false)
num_ports integer / required |  | The number of ports the portgroup should contain.
password string |  | The password of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable `VMWARE_PASSWORD` will be used instead. Environment variable support added in Ansible 2.6. aliases: pass, pwd
port integer added in 2.5 | Default: 443 | The port number of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable `VMWARE_PORT` will be used instead. Environment variable support added in Ansible 2.6.
port_policy dictionary added in 2.5 | Default: {"block_override": true, "ipfix_override": false, "live_port_move": false, "network_rp_override": false, "port_config_reset_at_disconnect": true, "security_override": false, "shaping_override": false, "traffic_filter_override": false, "uplink_teaming_override": false, "vendor_config_override": false, "vlan_override": false} | Dictionary which configures the advanced policy settings for the portgroup. Valid attributes are: - `block_override` (bool): indicates if the block policy can be changed per port. (default: true) - `ipfix_override` (bool): indicates if the ipfix policy can be changed per port. (default: false) - `live_port_move` (bool): indicates if a live port can be moved in or out of the portgroup. (default: false) - `network_rp_override` (bool): indicates if the network resource pool can be changed per port. (default: false) - `port_config_reset_at_disconnect` (bool): indicates if the configuration of a port is reset automatically after disconnect. (default: true) - `security_override` (bool): indicates if the security policy can be changed per port. (default: false) - `shaping_override` (bool): indicates if the shaping policy can be changed per port. (default: false) - `traffic_filter_override` (bool): indicates if the traffic filter can be changed per port. (default: false) - `uplink_teaming_override` (bool): indicates if the uplink teaming policy can be changed per port. (default: false) - `vendor_config_override` (bool): indicates if the vendor config can be changed per port. (default: false) - `vlan_override` (bool): indicates if the vlan can be changed per port. (default: false)
portgroup_name string / required |  | The name of the portgroup that is to be created or deleted.
portgroup_type string / required | Choices: earlyBinding lateBinding ephemeral | See VMware KB 1022312 regarding portgroup types.
proxy_host string added in 2.9 |  | Address of a proxy that will receive all HTTPS requests and relay them. The format is a hostname or a IP. If the value is not specified in the task, the value of environment variable `VMWARE_PROXY_HOST` will be used instead. This feature depends on a version of pyvmomi greater than v6.7.1.2018.12
proxy_port integer added in 2.9 |  | Port of the HTTP proxy that will receive all HTTPS requests and relay them. If the value is not specified in the task, the value of environment variable `VMWARE_PROXY_PORT` will be used instead.
state string / required added in 2.5 | Choices: present absent | Determines if the portgroup should be present or not.
switch_name string / required |  | The name of the distributed vSwitch the port group should be created on.
teaming_policy dictionary added in 2.5 | Default: {"inbound_policy": false, "load_balance_policy": "loadbalance_srcid", "notify_switches": true, "rolling_order": false} | Dictionary which configures the different teaming values for portgroup. Valid attributes are: - `load_balance_policy` (string): Network adapter teaming policy. (default: loadbalance_srcid) - choices: [ loadbalance_ip, loadbalance_srcmac, loadbalance_srcid, loadbalance_loadbased, failover_explicit] - "loadbalance_loadbased" is available from version 2.6 and onwards - `inbound_policy` (bool): Indicate whether or not the teaming policy is applied to inbound frames as well. (default: False) - `notify_switches` (bool): Indicate whether or not to notify the physical switch if a link fails. (default: True) - `rolling_order` (bool): Indicate whether or not to use a rolling policy when restoring links. (default: False)
username string |  | The username of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable `VMWARE_USER` will be used instead. Environment variable support added in Ansible 2.6. aliases: admin, user
validate_certs boolean | Choices: no yes ← | Allows connection when SSL certificates are not valid. Set to `false` when certificates are not trusted. If the value is not specified in the task, the value of environment variable `VMWARE_VALIDATE_CERTS` will be used instead. Environment variable support added in Ansible 2.6. If set to `yes`, please make sure Python >= 2.7.9 is installed on the given machine.
vlan_id string / required |  | The VLAN ID that should be configured with the portgroup, use 0 for no VLAN. If `vlan_trunk` is configured to be true, this can be a combination of multiple ranges and numbers, example: 1-200, 205, 400-4094. The valid `vlan_id` range is from 0 to 4094. Overlapping ranges are allowed.
vlan_trunk boolean added in 2.5 | Choices: no ← yes | Indicates whether this is a VLAN trunk or not.

## Notes

Note

- Tested on vSphere 5.5
- Tested on vSphere 6.5

## Examples

    - name: Create vlan portgroup
      vmware_dvs_portgroup:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        portgroup_name: vlan-123-portrgoup
        switch_name: dvSwitch
        vlan_id: 123
        num_ports: 120
        portgroup_type: earlyBinding
        state: present
      delegate_to: localhost

    - name: Create vlan trunk portgroup
      vmware_dvs_portgroup:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        portgroup_name: vlan-trunk-portrgoup
        switch_name: dvSwitch
        vlan_id: 1-1000, 1005, 1100-1200
        vlan_trunk: True
        num_ports: 120
        portgroup_type: earlyBinding
        state: present
      delegate_to: localhost

    - name: Create no-vlan portgroup
      vmware_dvs_portgroup:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        portgroup_name: no-vlan-portrgoup
        switch_name: dvSwitch
        vlan_id: 0
        num_ports: 120
        portgroup_type: earlyBinding
        state: present
      delegate_to: localhost

    - name: Create vlan portgroup with all security and port policies
      vmware_dvs_portgroup:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        portgroup_name: vlan-123-portrgoup
        switch_name: dvSwitch
        vlan_id: 123
        num_ports: 120
        portgroup_type: earlyBinding
        state: present
        network_policy:
          promiscuous: yes
          forged_transmits: yes
          mac_changes: yes
        port_policy:
          block_override: yes
          ipfix_override: yes
          live_port_move: yes
          network_rp_override: yes
          port_config_reset_at_disconnect: yes
          security_override: yes
          shaping_override: yes
          traffic_filter_override: yes
          uplink_teaming_override: yes
          vendor_config_override: yes
          vlan_override: yes
      delegate_to: localhost

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Joseph Callen (@jcpowermac)
- Philippe Dellaert (@pdellaert) <philippe@dellaert.org>

Hint

If you notice any issues in this documentation, you can edit this document to improve it.