cisco.dnac.sda_fabric_devices_playbook_config_generator module -- Generate YAML configurations playbook for 'sda_fabric_devices_workflow_manager' module.

Note

This module is part of the cisco.dnac collection (version 6.49.0).

To install it, use: ansible-galaxy collection install cisco.dnac. You need further requirements to be able to use this module, see Requirements for details.

To use it in a playbook, specify: cisco.dnac.sda_fabric_devices_playbook_config_generator.

New in cisco.dnac 6.49.0

Synopsis

  • Generates YAML configurations compatible with the 'sda_fabric_devices_workflow_manager' module, reducing the effort required to manually create Ansible playbooks and enabling programmatic modifications.

  • Captures SDA fabric device configurations including fabric roles, border settings, L2/L3 handoffs, and wireless controller settings from existing deployments.

Requirements

The below requirements are needed on the host that executes this module.

  • dnacentersdk >= 2.4.5

  • python >= 3.9

Parameters

Parameter

Comments

config

dictionary

A dictionary of filters for generating YAML playbook compatible with the `sda_fabric_devices_workflow_manager` module.

Filters specify which components to include in the YAML configuration file.

If "components_list" is specified, only those components are included, regardless of the filters.

If config is not provided or is empty, all configurations for all fabric sites and devices will be generated.

This is useful for complete brownfield infrastructure discovery and documentation.

component_specific_filters

dictionary

Filters to specify which components to include in the YAML configuration file.

If "components_list" is specified, only those components are included, regardless of other filters.

If filters for specific components (e.g., fabric_devices) are provided without explicitly including them in components_list, those components will be automatically added to components_list.

At least one of components_list or component filters must be provided when config is specified.

components_list

list / elements=string

List of components to include in the YAML configuration file.

Valid values are - "fabric_devices".

If specified, only the listed components will be included in the generated YAML file.

If not specified, all supported components will be included by default.

Choices:

fabric_devices

dictionary

Filters specific to fabric device configuration retrieval.

Used to narrow down which fabric sites and devices should be included in the generated YAML file.

If no filters are provided, all fabric devices from all fabric sites in Cisco Catalyst Center will be retrieved.

device_ip

string

IPv4 address of a specific device to filter by.

Retrieves configuration for the specific device within the fabric site.

The fabric_name parameter must be provided when using this filter.

Example 10.0.0.1, 192.168.1.100.

device_roles

list / elements=string

List of device roles to filter by.

Retrieves only devices with the specified fabric roles.

The fabric_name parameter must be provided when using this filter.

Can be combined with device_ip filter for more specific results.

Choices:

fabric_name

string / required

Name of the fabric site to filter by.

Retrieves all fabric devices configured in this fabric site.

This parameter is required when using fabric_devices filters.

Example Global/USA/SAN-JOSE, Global/India/Bangalore.

dnac_api_task_timeout

integer

Defines the timeout in seconds for API calls to retrieve task details. If the task details are not received within this period, the process will end, and a timeout notification will be logged.

Default: :ansible-option-default:`1200`

dnac_debug

boolean

Indicates whether debugging is enabled in the Cisco Catalyst Center SDK.

Choices:

dnac_host

string / required

The hostname of the Cisco Catalyst Center.

dnac_log

boolean

Flag to enable/disable playbook execution logging.

When true and dnac_log_file_path is provided, - Create the log file at the execution location with the specified name.

When true and dnac_log_file_path is not provided, - Create the log file at the execution location with the name 'dnac.log'.

When false, - Logging is disabled.

If the log file doesn't exist, - It is created in append or write mode based on the "dnac_log_append" flag.

If the log file exists, - It is overwritten or appended based on the "dnac_log_append" flag.

Choices:

dnac_log_append

boolean

Determines the mode of the file. Set to True for 'append' mode. Set to False for 'write' mode.

Choices:

dnac_log_file_path

string

Governs logging. Logs are recorded if dnac_log is True.

If path is not specified, - When 'dnac_log_append' is True, 'dnac.log' is generated in the current Ansible directory; logs are appended. - When 'dnac_log_append' is False, 'dnac.log' is generated; logs are overwritten.

If path is specified, - When 'dnac_log_append' is True, the file opens in append mode. - When 'dnac_log_append' is False, the file opens in write (w) mode. - In shared file scenarios, without append mode, content is overwritten after each module execution. - For a shared log file, set append to False for the 1st module (to overwrite); for subsequent modules, set append to True.

Default: :ansible-option-default:`"dnac.log"`

dnac_log_level

string

Sets the threshold for log level. Messages with a level equal to or higher than this will be logged. Levels are listed in order of severity [CRITICAL, ERROR, WARNING, INFO, DEBUG].

CRITICAL indicates serious errors halting the program. Displays only CRITICAL messages.

ERROR indicates problems preventing a function. Displays ERROR and CRITICAL messages.

WARNING indicates potential future issues. Displays WARNING, ERROR, CRITICAL messages.

INFO tracks normal operation. Displays INFO, WARNING, ERROR, CRITICAL messages.

DEBUG provides detailed diagnostic info. Displays all log messages.

Default: :ansible-option-default:`"WARNING"`

dnac_password

string

The password for authentication at the Cisco Catalyst Center.

dnac_port

string

Specifies the port number associated with the Cisco Catalyst Center.

Default: :ansible-option-default:`"443"`

dnac_task_poll_interval

integer

Specifies the interval in seconds between successive calls to the API to retrieve task details.

Default: :ansible-option-default:`2`

dnac_username

aliases: user

string

The username for authentication at the Cisco Catalyst Center.

Default: :ansible-option-default:`"admin"`

dnac_verify

boolean

Flag to enable or disable SSL certificate verification.

Choices:

dnac_version

string

Specifies the version of the Cisco Catalyst Center that the SDK should use.

Default: :ansible-option-default:`"2.2.3.3"`

file_mode

string

Controls how config is written to the YAML file.

overwrite replaces existing file content.

append appends generated YAML content to the existing file.

This parameter is only relevant when file_path is specified. Defaults to overwrite.

Choices:

file_path

string

Path where the YAML configuration file will be saved.

If not provided, the file will be saved in the current working directory with a default file name sda_fabric_devices_playbook_config_<YYYY-MM-DD_HH-MM-SS>.yml.

For example, sda_fabric_devices_playbook_config_2026-01-30_19-16-01.yml.

state

string

The desired state of Cisco Catalyst Center after module execution.

Choices:

validate_response_schema

boolean

Flag for Cisco Catalyst Center SDK to enable the validation of request bodies against a JSON schema.

Choices:

Notes

Note

  • Cisco Catalyst Center >= 2.3.7.6

  • SDK Methods used are site_design.Sites.get_sites sda.SDA.get_fabric_sites sda.SDA.get_transit_networks sda.SDA.get_fabric_devices sda.SDA.get_fabric_devices_layer2_handoffs sda.SDA.get_fabric_devices_layer3_handoffs_with_ip_transit sda.SDA.get_fabric_devices_layer3_handoffs_with_sda_transit fabric_wireless.FabricWireless.get_sda_wireless_details_from_switches wireless.Wireless.get_primary_managed_ap_locations_for_specific_wireless_controller wireless.Wireless.get_secondary_managed_ap_locations_for_specific_wireless_controller devices.Devices.get_device_list

  • SDK Paths used are GET /dna/intent/api/v1/sites GET /dna/intent/api/v1/sda/fabricSites GET /dna/intent/api/v1/sda/transitNetworks GET /dna/intent/api/v1/sda/fabricDevices GET /dna/intent/api/v1/sda/fabricDevices/layer2Handoffs GET /dna/intent/api/v1/sda/fabricDevices/layer3Handoffs/ipTransits GET /dna/intent/api/v1/sda/fabricDevices/layer3Handoffs/sdaTransits GET /dna/intent/api/v1/sda/fabricSites/{id}/wirelessSettings GET /dna/intent/api/v1/wirelessControllers/{networkDeviceId}/managedApLocations/primary GET /dna/intent/api/v1/wirelessControllers/{networkDeviceId}/managedApLocations/secondary GET /dna/intent/api/v1/network-device

  • Does not support check_mode

  • The plugin runs on the control node and does not use any ansible connection plugins instead embedded connection manager from Cisco Catalyst Center SDK

  • The parameters starting with dnac_ are used by the Cisco Catalyst Center Python SDK to establish the connection

See Also

See also

cisco.dnac.sda_fabric_devices_workflow_manager

Module for managing SDA fabric devices and their configurations.

Examples

# Example 1: Generate all fabric device configurations for all fabric sites
- name: Generate complete SDA fabric devices configuration
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Generate all SDA fabric device configurations from Cisco Catalyst Center
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        # No config provided - generates all configurations

# Example 2: Generate all configurations with custom file path
- name: Generate complete SDA fabric devices configuration with custom filename
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Generate all SDA fabric device configurations to a specific file
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/complete_sda_fabric_devices_config.yaml"
        file_mode: "overwrite"
        # No config provided - generates all configurations

# Example 3: Generate fabric device configurations for a specific fabric site
- name: Generate fabric device configurations for one fabric site
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Export fabric devices from San Jose fabric
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/san_jose_fabric_devices.yaml"
        file_mode: "overwrite"
        config:
          component_specific_filters:
            components_list: ["fabric_devices"]
            fabric_devices:
              fabric_name: "Global/USA/SAN-JOSE"

# Example 4: Generate configuration for devices with specific roles in a fabric site
- name: Generate configuration for border and control plane devices
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Export border and control plane fabric devices from San Jose fabric
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/border_and_cp_devices.yaml"
        file_mode: "overwrite"
        config:
          component_specific_filters:
            components_list: ["fabric_devices"]
            fabric_devices:
              fabric_name: "Global/USA/SAN-JOSE"
              device_roles: ["BORDER_NODE", "CONTROL_PLANE_NODE"]

# Example 5: Generate configuration for a specific device in a fabric site
- name: Generate configuration for a specific fabric device
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Export specific fabric device configuration
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/specific_fabric_device.yaml"
        file_mode: "overwrite"
        config:
          component_specific_filters:
            components_list: ["fabric_devices"]
            fabric_devices:
              fabric_name: "Global/USA/SAN-JOSE"
              device_ip: "10.0.0.1"

# Example 6: Auto-populate components_list from component filters
- name: Generate configuration with auto-populated components_list
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Export fabric devices without explicit components_list
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/san_jose_fabric.yaml"
        file_mode: "overwrite"
        config:
          component_specific_filters:
            # No components_list specified, but fabric_devices filters are provided
            # The 'fabric_devices' component will be automatically added to components_list
            fabric_devices:
              fabric_name: "Global/USA/SAN-JOSE"

# Example 7: Generate configuration with append mode
- name: Generate and append SDA fabric device configuration
  hosts: dnac_servers
  vars_files:
    - credentials.yml
  gather_facts: false
  connection: local
  tasks:
    - name: Append fabric device configurations to existing file
      cisco.dnac.sda_fabric_devices_playbook_config_generator:
        dnac_host: "{{ dnac_host }}"
        dnac_port: "{{ dnac_port }}"
        dnac_username: "{{ dnac_username }}"
        dnac_password: "{{ dnac_password }}"
        dnac_verify: "{{ dnac_verify }}"
        dnac_debug: "{{ dnac_debug }}"
        dnac_version: "{{ dnac_version }}"
        dnac_log: true
        dnac_log_level: DEBUG
        dnac_log_append: false
        dnac_log_file_path: "{{ dnac_log_file_path }}"
        state: gathered
        file_path: "/tmp/all_fabric_devices.yaml"
        file_mode: "append"
        config:
          component_specific_filters:
            components_list: ["fabric_devices"]
            fabric_devices:
              fabric_name: "Global/India/Bangalore"
              device_roles: ["BORDER_NODE"]

Return Values

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

Key

Description

response_1

dictionary

response_2

dictionary

Authors

  • Archit Soni (@koderchit)

  • Madhan Sankaranarayanan (@madhansansel)