List of Air Marshal rule configurations.
The network ID.
The state of the resource.
A template task showing all available parameters with their defaults or example values.
- name: Meraki Wireless Air Marshal Rules task cisco.meraki_rm.meraki_wireless_air_marshal_rules: network_id: "192.168.1.0/24" config: - bssids: - {} channels: - 1 default_policy: "default_policy_value" match: {} rule_id: "rule_id_value" ssid: "ssid_value" type: "type_value" state: merged
- name: Meraki Wireless Air Marshal Rules task cisco.meraki_rm.meraki_wireless_air_marshal_rules: network_id: "192.168.1.0/24" config: # optional - bssids: # optional - {} channels: # optional - 1 default_policy: "default_policy_value" # optional match: {} # optional rule_id: "rule_id_value" # optional ssid: "ssid_value" # optional type: "type_value" # optional state: merged # optional
- name: Meraki Wireless Air Marshal Rules task cisco.meraki_rm.meraki_wireless_air_marshal_rules: network_id: "192.168.1.0/24" # (str, required) The network ID. config: # (list, optional) List of Air Marshal rule configurations. - bssids: # (list, optional) BSSIDs broadcasting the SSID. - {} channels: # (list, optional) Channels where SSID was observed. - 1 default_policy: "default_policy_value" # (str, optional) Default policy for rogue networks. match: {} # (dict, optional) Rule specification/match criteria. rule_id: "rule_id_value" # (str, optional) Server-assigned rule ID. Discover via C(state=gathered). ssid: "ssid_value" # (str, optional) SSID name for the rule. type: "type_value" # (str, optional) Rule type (allow, block, or alert). state: merged # (str, optional) The state of the resource.
state=gathered to discover rule_id values, then reference them in subsequent tasks.- name: Define expected configuration ansible.builtin.set_fact: expected_config: type: access default_policy: example ssid: example
- name: Create wireless_air_marshal_rules with merged state cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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 }}"
- name: Define replacement configuration ansible.builtin.set_fact: expected_config: type: access default_policy: example ssid: example
- name: Replace wireless_air_marshal_rules configuration cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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 }}"
- name: Define resource to delete ansible.builtin.set_fact: expected_config: type: access
- name: Delete wireless_air_marshal_rules configuration cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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
--- # Manage Meraki wireless Air Marshal (rogue AP detection) — create or update - name: Define expected configuration ansible.builtin.set_fact: expected_config: type: access default_policy: example ssid: example - name: Create wireless_air_marshal_rules with merged state cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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 wireless Air Marshal (rogue AP detection) — full resource replacement - name: Define replacement configuration ansible.builtin.set_fact: expected_config: type: access default_policy: example ssid: example - name: Replace wireless_air_marshal_rules configuration cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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 wireless Air Marshal (rogue AP detection) — remove configuration - name: Define resource to delete ansible.builtin.set_fact: expected_config: type: access - name: Delete wireless_air_marshal_rules configuration cisco.meraki_rm.meraki_wireless_air_marshal_rules: 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