100%

meraki_organization_vpn

module
Manage Meraki organization third-party VPN peers
Added in version 0.1.0

Synopsis

  • Manage Meraki organization third-party VPN peers (singleton).
  • GET/PUT /organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers
  • Supports merged, replaced, and gathered states.

Author

Cisco Meraki

Parameters

config (list/dict)

Third-party VPN peers configuration (singleton).

peers (list/dict)

List of third-party VPN peers.

ike_version (str)

IKE protocol version (1 or 2).

local_id (str)

Local identification string.

name (str)

Peer identifier.

network_tags (list/str)

Tags for network organization.

private_subnets (list/str)

Remote subnets accessible through the VPN.

public_hostname (str)

Hostname of the peer.

public_ip (str)

Public IP address of the peer.

remote_id (str)

Remote identification string.

secret (str)

Shared secret for IPsec authentication.

organization_id (str) required

The organization ID.

state (str)
mergedreplacedgathered

The state of the resource.

Sample Task

A template task showing all available parameters with their defaults or example values.

- name: Meraki Organization Vpn task
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "organization_id_value"
    config:
      - peers:
          - ike_version: "1.0.0"
            local_id: "local_id_value"
            name: "example_name"
            network_tags:
              - "network_tags_item"
            private_subnets:
              - "private_subnets_item"
            public_hostname: "example_name"
            public_ip: "192.168.1.1"
            remote_id: "remote_id_value"
            secret: "{{ vault_password }}"
    state: merged
- name: Meraki Organization Vpn task
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "organization_id_value"
    config:  # optional
      - peers:  # optional
          - ike_version: "1.0.0"  # optional
            local_id: "local_id_value"  # optional
            name: "example_name"  # optional
            network_tags:  # optional
              - "network_tags_item"
            private_subnets:  # optional
              - "private_subnets_item"
            public_hostname: "example_name"  # optional
            public_ip: "192.168.1.1"  # optional
            remote_id: "remote_id_value"  # optional
            secret: "{{ vault_password }}"  # optional
    state: merged  # optional
- name: Meraki Organization Vpn task
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "organization_id_value"  # (str, required) The organization ID.
    config:  # (list, optional) Third-party VPN peers configuration (singleton).
      - peers:  # (list, optional) List of third-party VPN peers.
          - ike_version: "1.0.0"  # (str, optional) IKE protocol version (1 or 2).
            local_id: "local_id_value"  # (str, optional) Local identification string.
            name: "example_name"  # (str, optional) Peer identifier.
            network_tags:  # (list, optional) Tags for network organization.
              - "network_tags_item"
            private_subnets:  # (list, optional) Remote subnets accessible through the VPN.
              - "private_subnets_item"
            public_hostname: "example_name"  # (str, optional) Hostname of the peer.
            public_ip: "192.168.1.1"  # (str, optional) Public IP address of the peer.
            remote_id: "remote_id_value"  # (str, optional) Remote identification string.
            secret: "{{ vault_password }}"  # (str, optional) Shared secret for IPsec authentication.
    state: merged  # (str, optional) The state of the resource.

Examples

Define Expected Configuration
- name: Define expected configuration
  ansible.builtin.set_fact:
    expected_config:
Create Organization_vpn With Merged State
- name: Create organization_vpn with merged state
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: merged
    config:
      - "{{ expected_config }}"
  register: merge_result
Assert Resource Was Created
- name: Assert resource was created
  ansible.builtin.assert:
    that:
      - merge_result is changed
      - merge_result.config | length == 1
Compare Expected Paths To Result (subset Check)
- name: Compare expected paths to result (subset check)
  ansible.builtin.set_fact:
    path_check: "{{ expected_paths | cisco.meraki_rm.path_contained_in(result_paths) }}"
  vars:
    expected_paths: "{{ expected_config | ansible.utils.to_paths }}"
    result_paths: "{{ merge_result.config[0] | ansible.utils.to_paths }}"
Assert All Expected Fields Are Present And Match
- name: Assert all expected fields are present and match
  ansible.builtin.assert:
    that: path_check.contained | bool
    success_msg: "{{ success_msg }}"
    fail_msg: "{{ fail_msg }}"
  vars:
    success_msg: "All expected fields match. Extras: {{ path_check.extras }}"
    fail_msg: "Missing or mismatch: {{ path_check.missing }}. Extras: {{ path_check.extras }}"
Task Output:
# Manage Meraki organization third-party VPN peers — full resource replacement
Define Replacement Configuration
- name: Define replacement configuration
  ansible.builtin.set_fact:
    expected_config:
Replace Organization_vpn Configuration
- name: Replace organization_vpn configuration
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: replaced
    config:
      - "{{ expected_config }}"
  register: replace_result
Assert Resource Was Replaced
- name: Assert resource was replaced
  ansible.builtin.assert:
    that:
      - replace_result is changed
      - replace_result.config | length == 1
Compare Expected Paths To Result (subset Check)
- name: Compare expected paths to result (subset check)
  ansible.builtin.set_fact:
    path_check: "{{ expected_paths | cisco.meraki_rm.path_contained_in(result_paths) }}"
  vars:
    expected_paths: "{{ expected_config | ansible.utils.to_paths }}"
    result_paths: "{{ replace_result.config[0] | ansible.utils.to_paths }}"
Assert All Expected Fields Are Present And Match
- name: Assert all expected fields are present and match
  ansible.builtin.assert:
    that: path_check.contained | bool
    success_msg: "{{ success_msg }}"
    fail_msg: "{{ fail_msg }}"
  vars:
    success_msg: "All expected fields match. Extras: {{ path_check.extras }}"
    fail_msg: "Missing or mismatch: {{ path_check.missing }}. Extras: {{ path_check.extras }}"
Task Output:
# Manage Meraki organization third-party VPN peers — gather current configuration
Gather Current Organization_vpn Configuration
- name: Gather current organization_vpn configuration
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: gathered
  register: gathered
Assert Gathered Config Is Not Empty
- name: Assert gathered config is not empty
  ansible.builtin.assert:
    that:
      - gathered.config is defined
      - gathered.config | length > 0
    fail_msg: "Gathered config is empty — expected at least one resource"
Display Gathered Configuration
- name: Display gathered configuration
  ansible.builtin.debug:
    var: gathered.config
---
# Manage Meraki organization third-party VPN peers — create or update

- name: Define expected configuration
  ansible.builtin.set_fact:
    expected_config:

- name: Create organization_vpn with merged state
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: merged
    config:
      - "{{ expected_config }}"
  register: merge_result

- name: Assert resource was created
  ansible.builtin.assert:
    that:
      - merge_result is changed
      - merge_result.config | length == 1

- name: Compare expected paths to result (subset check)
  ansible.builtin.set_fact:
    path_check: "{{ expected_paths | cisco.meraki_rm.path_contained_in(result_paths) }}"
  vars:
    expected_paths: "{{ expected_config | ansible.utils.to_paths }}"
    result_paths: "{{ merge_result.config[0] | ansible.utils.to_paths }}"

- name: Assert all expected fields are present and match
  ansible.builtin.assert:
    that: path_check.contained | bool
    success_msg: "{{ success_msg }}"
    fail_msg: "{{ fail_msg }}"
  vars:
    success_msg: "All expected fields match. Extras: {{ path_check.extras }}"
    fail_msg: "Missing or mismatch: {{ path_check.missing }}. Extras: {{ path_check.extras }}"

# Manage Meraki organization third-party VPN peers — full resource replacement

- name: Define replacement configuration
  ansible.builtin.set_fact:
    expected_config:

- name: Replace organization_vpn configuration
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: replaced
    config:
      - "{{ expected_config }}"
  register: replace_result

- name: Assert resource was replaced
  ansible.builtin.assert:
    that:
      - replace_result is changed
      - replace_result.config | length == 1

- name: Compare expected paths to result (subset check)
  ansible.builtin.set_fact:
    path_check: "{{ expected_paths | cisco.meraki_rm.path_contained_in(result_paths) }}"
  vars:
    expected_paths: "{{ expected_config | ansible.utils.to_paths }}"
    result_paths: "{{ replace_result.config[0] | ansible.utils.to_paths }}"

- name: Assert all expected fields are present and match
  ansible.builtin.assert:
    that: path_check.contained | bool
    success_msg: "{{ success_msg }}"
    fail_msg: "{{ fail_msg }}"
  vars:
    success_msg: "All expected fields match. Extras: {{ path_check.extras }}"
    fail_msg: "Missing or mismatch: {{ path_check.missing }}. Extras: {{ path_check.extras }}"

# Manage Meraki organization third-party VPN peers — gather current configuration

- name: Gather current organization_vpn configuration
  cisco.meraki_rm.meraki_organization_vpn:
    organization_id: "123456"
    state: gathered
  register: gathered

- name: Assert gathered config is not empty
  ansible.builtin.assert:
    that:
      - gathered.config is defined
      - gathered.config | length > 0
    fail_msg: "Gathered config is empty — expected at least one resource"

- name: Display gathered configuration
  ansible.builtin.debug:
    var: gathered.config

Return Values

config
list — returned: always
The resulting resource configuration.