# meraki_vlan – Manage VLANs in the Meraki cloud

New in version 2.7.

- Synopsis
- Parameters
- Notes
- Examples
- Return Values
- Status

## Synopsis

- Create, edit, query, or delete VLANs in a Meraki environment.

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
appliance_ip string |  | IP address of appliance. Address must be within subnet specified in `subnet` parameter.
auth_key string / required |  | Authentication key provided by the dashboard. Required if environmental variable `MERAKI_KEY` is not set.
dns_nameservers string |  | Semi-colon delimited list of DNS IP addresses. Specify one of the following options for preprogrammed DNS entries opendns, google_dns, upstream_dns
fixed_ip_assignments list |  | Static IP address assignments to be distributed via DHCP by MAC address.
host string | Default: "api.meraki.com" | Hostname for Meraki dashboard. Can be used to access regional Meraki environments, such as China.
internal_error_retry_time integer | Default: 60 | Number of seconds to retry if server returns an internal server error.
name string |  | Name of VLAN. aliases: vlan_name
net_id string |  | ID of network which VLAN is in or should be in.
net_name string |  | Name of network which VLAN is in or should be in. aliases: network
org_id string |  | ID of organization.
org_name string |  | Name of organization. aliases: organization

output_format
string

Choices:
- snakecase ←
- camelcase

Instructs module whether response keys should be snake case (ex. `net_id`) or camel case (ex. `netId`).

output_level
string

Choices:
- debug
- normal ←

Set amount of debug output during module execution.

rate_limit_retry_time integer | Default: 165 | Number of seconds to retry if rate limiter is triggered.
reserved_ip_range list |  | IP address ranges which should be reserve and not distributed via DHCP.

state
string

Choices:
- absent
- present
- query ←

Specifies whether object should be queried, created/modified, or removed.

subnet string |  | CIDR notation of network subnet.
timeout integer | Default: 30 | Time to timeout for HTTP requests.

use_https
boolean

Choices:
- no
- yes ←

If `no`, it will use HTTP. Otherwise it will use HTTPS.
Only useful for internal Meraki developers.

use_proxy
boolean

Choices:
- no
- yes

If `no`, it will not use a proxy, even if one is defined in an environment variable on the target hosts.

validate_certs
boolean

Choices:
- no
- yes ←

Whether to validate HTTP certificates.

vlan_id integer |  | ID number of VLAN. ID should be between 1-4096.
vpn_nat_subnet string |  | The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN.

## Notes

Note

- Meraki’s API will return an error if VLANs aren’t enabled on a network. VLANs are returned properly if VLANs are enabled on a network.
- Some of the options are likely only used for developers within Meraki.
- Meraki’s API defaults to networks having VLAN support disabled and there is no way to enable VLANs support in the API. VLAN support must be enabled manually.
- More information about the Meraki API can be found at https://dashboard.meraki.com/api_docs.
- Some of the options are likely only used for developers within Meraki.
- As of Ansible 2.9, Meraki modules output keys as snake case. To use camel case, set the `ANSIBLE_MERAKI_FORMAT` environment variable to `camelcase`.
- Ansible’s Meraki modules will stop supporting camel case output in Ansible 2.13. Please update your playbooks.

## Examples

    - name: Query all VLANs in a network.
      meraki_vlan:
        auth_key: abc12345
        org_name: YourOrg
        net_name: YourNet
        state: query
      delegate_to: localhost

    - name: Query information about a single VLAN by ID.
      meraki_vlan:
        auth_key: abc12345
        org_name: YourOrg
        net_name: YourNet
        vlan_id: 2
        state: query
      delegate_to: localhost

    - name: Create a VLAN.
      meraki_vlan:
        auth_key: abc12345
        org_name: YourOrg
        net_name: YourNet
        state: present
        vlan_id: 2
        name: TestVLAN
        subnet: 192.0.1.0/24
        appliance_ip: 192.0.1.1
      delegate_to: localhost

    - name: Update a VLAN.
      meraki_vlan:
        auth_key: abc12345
        org_name: YourOrg
        net_name: YourNet
        state: present
        vlan_id: 2
        name: TestVLAN
        subnet: 192.0.1.0/24
        appliance_ip: 192.168.250.2
        fixed_ip_assignments:
          - mac: "13:37:de:ad:be:ef"
            ip: 192.168.250.10
            name: fixed_ip
        reserved_ip_range:
          - start: 192.168.250.10
            end: 192.168.250.20
            comment: reserved_range
        dns_nameservers: opendns
      delegate_to: localhost

    - name: Delete a VLAN.
      meraki_vlan:
        auth_key: abc12345
        org_name: YourOrg
        net_name: YourNet
        state: absent
        vlan_id: 2
      delegate_to: localhost

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
response complex | success | Information about the organization which was created or modified
| appliance_ip string | success | IP address of Meraki appliance in the VLAN Sample: 192.0.1.1
| dhcp_boot_filename string | success | Filename for boot file. Sample: boot.txt
| dhcp_boot_next_server string | success | DHCP boot option to direct boot clients to the server to load the boot file from. Sample: 192.0.1.2
| dhcp_boot_options_enabled boolean | success | Whether DHCP boot options are enabled.
| dhcp_handling string | success | Status of DHCP server on VLAN. Sample: Run a DHCP server
| dhcp_lease_time string | success | DHCP lease time when server is active. Sample: 1 day
| dhcp_options complex | success | DHCP options.
|  | code integer | success | Code for DHCP option. Integer between 2 and 254. Sample: 43
|  | type string | success | Type for DHCP option. Choices are `text`, `ip`, `hex`, `integer`. Sample: text
|  | value string | success | Value for the DHCP option. Sample: 192.0.1.2
| dnsnamservers string | success | IP address or Meraki defined DNS servers which VLAN should use by default Sample: upstream_dns
| fixed_ip_assignments complex | success | List of MAC addresses which have IP addresses assigned.
|  | macaddress complex | success | MAC address which has IP address assigned to it. Key value is the actual MAC address.
|  |  | ip string | success | IP address which is assigned to the MAC address. Sample: 192.0.1.4
|  |  | name string | success | Descriptive name for binding. Sample: fixed_ip
| id integer | success | VLAN ID number. Sample: 2
| name string | success | Descriptive name of VLAN. Sample: TestVLAN
| networkId string | success | ID number of Meraki network which VLAN is associated to. Sample: N_12345
| reserved_ip_ranges complex | success | List of IP address ranges which are reserved for static assignment.
|  | comment string | success | Description for IP address reservation. Sample: reserved_range
|  | end string | success | Last IP address in reservation range. Sample: 192.0.1.10
|  | start string | success | First IP address in reservation range. Sample: 192.0.1.5
| subnet string | success | CIDR notation IP subnet of VLAN. Sample: 192.0.1.0/24

## Status

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

### Authors

- Kevin Breit (@kbreit)

Hint

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