100%

meraki_mqtt_brokers

module
Manage Meraki MQTT brokers
Added in version 0.1.0

Synopsis

  • Manage Meraki MQTT brokers for a network.
  • Supports merged, replaced, deleted, and gathered states.

Author

Cisco Meraki

Parameters

config (list/dict)

List of MQTT broker configurations.

authentication (dict)

Authentication settings.

host (str)

Host name or IP address of the MQTT broker.

mqtt_broker_id (str)

Server-assigned ID, resolved automatically by matching on name.

Provide only to disambiguate when duplicate names exist.

name (str)

Name of the MQTT broker.

port (int)

Port for the MQTT broker.

security (dict)

Security settings.

network_id (str) required

The network ID.

state (str)
mergedreplacedoverriddendeletedgathered

The state of the resource.

Sample Task

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

- name: Meraki Mqtt Brokers task
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "192.168.1.0/24"
    config:
      - authentication: {}
        host: "hostname.example.com"
        mqtt_broker_id: "mqtt_broker_id_value"
        name: "example_name"
        port: 0
        security: {}
    state: merged
- name: Meraki Mqtt Brokers task
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "192.168.1.0/24"
    config:  # optional
      - authentication: {}  # optional
        host: "hostname.example.com"  # optional
        mqtt_broker_id: "mqtt_broker_id_value"  # optional
        name: "example_name"  # optional
        port: 0  # optional
        security: {}  # optional
    state: merged  # optional
- name: Meraki Mqtt Brokers task
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "192.168.1.0/24"  # (str, required) The network ID.
    config:  # (list, optional) List of MQTT broker configurations.
      - authentication: {}  # (dict, optional) Authentication settings.
        host: "hostname.example.com"  # (str, optional) Host name or IP address of the MQTT broker.
        mqtt_broker_id: "mqtt_broker_id_value"  # (str, optional) Server-assigned ID, resolved automatically by matching on...
        name: "example_name"  # (str, optional) Name of the MQTT broker.
        port: 0  # (int, optional) Port for the MQTT broker.
        security: {}  # (dict, optional) Security settings.
    state: merged  # (str, optional) The state of the resource.

Notes

  • Canonical key: name — identifies the resource in playbooks.
  • System key: mqtt_broker_id — server-assigned, resolved automatically from gathered state.
  • Users do not need to provide mqtt_broker_id unless disambiguating duplicate names.

Examples

Define Expected Configuration
- name: Define expected configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883
Create Mqtt_brokers With Merged State
- name: Create mqtt_brokers with merged state
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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 MQTT brokers — full resource replacement
Define Replacement Configuration
- name: Define replacement configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883
Replace Mqtt_brokers Configuration
- name: Replace mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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 MQTT brokers — override all instances # Ensures ONLY these resources exist; any not listed are deleted.
Define Desired-state Configuration
- name: Define desired-state configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883
Override All Mqtt_brokers — Desired State Only
- name: Override all mqtt_brokers — desired state only
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    state: overridden
    config:
      - "{{ expected_config }}"
  register: override_result
Assert Resources Were Overridden
- name: Assert resources were overridden
  ansible.builtin.assert:
    that:
      - override_result is changed
      - override_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: "{{ override_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 MQTT brokers — gather current configuration
Gather Current Mqtt_brokers Configuration
- name: Gather current mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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
Task Output:
# Manage Meraki MQTT brokers — remove configuration
Define Resource To Delete
- name: Define resource to delete
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
Delete Mqtt_brokers Configuration
- name: Delete mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    state: deleted
    config:
      - "{{ expected_config }}"
  register: delete_result
Assert Resource Was Deleted
- name: Assert resource was deleted
  ansible.builtin.assert:
    that:
      - delete_result is changed
      - delete_result is not failed
---
# Manage Meraki MQTT brokers — create or update

- name: Define expected configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883

- name: Create mqtt_brokers with merged state
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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 MQTT brokers — full resource replacement

- name: Define replacement configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883

- name: Replace mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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 MQTT brokers — override all instances
# Ensures ONLY these resources exist; any not listed are deleted.

- name: Define desired-state configuration
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config
      host: mqtt.example.com
      port: 1883

- name: Override all mqtt_brokers — desired state only
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    state: overridden
    config:
      - "{{ expected_config }}"
  register: override_result

- name: Assert resources were overridden
  ansible.builtin.assert:
    that:
      - override_result is changed
      - override_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: "{{ override_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 MQTT brokers — gather current configuration

- name: Gather current mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    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

# Manage Meraki MQTT brokers — remove configuration

- name: Define resource to delete
  ansible.builtin.set_fact:
    expected_config:
      name: Test-Config

- name: Delete mqtt_brokers configuration
  cisco.meraki_rm.meraki_mqtt_brokers:
    network_id: "N_123456789012345678"
    state: deleted
    config:
      - "{{ expected_config }}"
  register: delete_result

- name: Assert resource was deleted
  ansible.builtin.assert:
    that:
      - delete_result is changed
      - delete_result is not failed

Return Values

config
list — returned: always
The resulting resource configuration.