List of admin configurations.
The organization ID.
The state of the resource.
A template task showing all available parameters with their defaults or example values.
- name: Meraki Organization Admins task cisco.meraki_rm.meraki_organization_admins: organization_id: "organization_id_value" config: - account_status: "account_status_value" admin_id: "admin_id_value" authentication_method: Email email: "email_value" has_api_key: true last_active: "last_active_value" name: "example_name" networks: - access: "access_value" id: "id_value" org_access: full tags: - access: "access_value" tag: "tag_value" two_factor_auth_enabled: true state: merged
- name: Meraki Organization Admins task cisco.meraki_rm.meraki_organization_admins: organization_id: "organization_id_value" config: # optional - account_status: "account_status_value" # optional admin_id: "admin_id_value" # optional authentication_method: Email # optional email: "email_value" # optional has_api_key: true # optional last_active: "last_active_value" # optional name: "example_name" # optional networks: # optional - access: "access_value" # optional id: "id_value" # optional org_access: full # optional tags: # optional - access: "access_value" # optional tag: "tag_value" # optional two_factor_auth_enabled: true # optional state: merged # optional
- name: Meraki Organization Admins task cisco.meraki_rm.meraki_organization_admins: organization_id: "organization_id_value" # (str, required) The organization ID. config: # (list, optional) List of admin configurations. - account_status: "account_status_value" # (str, optional) Status of the admin's account. admin_id: "admin_id_value" # (str, optional) Server-assigned ID, resolved automatically by matching on... authentication_method: Email # (str, optional) Admin's authentication method. email: "email_value" # (str, optional) Admin email. has_api_key: true # (bool, optional) Indicates whether the admin has an API key. last_active: "last_active_value" # (str, optional) Time when the admin was last active. name: "example_name" # (str, optional) Admin name. networks: # (list, optional) List of network-based access controls. - access: "access_value" # (str, optional) id: "id_value" # (str, optional) org_access: full # (str, optional) Admin's level of access to the organization. tags: # (list, optional) List of tag-based access controls. - access: "access_value" # (str, optional) tag: "tag_value" # (str, optional) two_factor_auth_enabled: true # (bool, optional) Indicates whether two-factor authentication is enabled. state: merged # (str, optional) The state of the resource.
email — identifies the admin in playbooks.admin_id — server-assigned, resolved automatically from gathered state.admin_id unless disambiguating duplicate emails.- name: Define expected configuration ansible.builtin.set_fact: expected_config: name: Test-Config email: "admin@example.com" org_access: full tags: - ansible - test authentication_method: Email
- name: Create organization_admins with merged state cisco.meraki_rm.meraki_organization_admins: 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 }}"
- name: Define replacement configuration ansible.builtin.set_fact: expected_config: name: Replaced-Config email: "admin@example.com" org_access: read-only tags: - ansible - replaced authentication_method: Cisco SecureX Sign-On
- name: Replace organization_admins configuration cisco.meraki_rm.meraki_organization_admins: 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 }}"
- name: Define desired-state configuration ansible.builtin.set_fact: expected_config: name: Replaced-Config email: "admin@example.com" org_access: read-only tags: - ansible - replaced authentication_method: Cisco SecureX Sign-On
- name: Override all organization_admins — desired state only cisco.meraki_rm.meraki_organization_admins: organization_id: "123456" 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 }}"
- name: Gather current organization_admins configuration cisco.meraki_rm.meraki_organization_admins: 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
- name: Define resource to delete ansible.builtin.set_fact: expected_config: email: "admin@example.com"
- name: Delete organization_admins configuration cisco.meraki_rm.meraki_organization_admins: organization_id: "123456" 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 organization administrators — create or update - name: Define expected configuration ansible.builtin.set_fact: expected_config: name: Test-Config email: "admin@example.com" org_access: full tags: - ansible - test authentication_method: Email - name: Create organization_admins with merged state cisco.meraki_rm.meraki_organization_admins: 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 administrators — full resource replacement - name: Define replacement configuration ansible.builtin.set_fact: expected_config: name: Replaced-Config email: "admin@example.com" org_access: read-only tags: - ansible - replaced authentication_method: Cisco SecureX Sign-On - name: Replace organization_admins configuration cisco.meraki_rm.meraki_organization_admins: 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 administrators — 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: Replaced-Config email: "admin@example.com" org_access: read-only tags: - ansible - replaced authentication_method: Cisco SecureX Sign-On - name: Override all organization_admins — desired state only cisco.meraki_rm.meraki_organization_admins: organization_id: "123456" 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 organization administrators — gather current configuration - name: Gather current organization_admins configuration cisco.meraki_rm.meraki_organization_admins: 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 # Manage Meraki organization administrators — remove configuration - name: Define resource to delete ansible.builtin.set_fact: expected_config: email: "admin@example.com" - name: Delete organization_admins configuration cisco.meraki_rm.meraki_organization_admins: organization_id: "123456" 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