.. Document meta :orphan: .. |antsibull-internal-nbsp| unicode:: 0xA0 :trim: .. role:: ansible-attribute-support-label .. role:: ansible-attribute-support-property .. role:: ansible-attribute-support-full .. role:: ansible-attribute-support-partial .. role:: ansible-attribute-support-none .. role:: ansible-attribute-support-na .. role:: ansible-option-type .. role:: ansible-option-elements .. role:: ansible-option-required .. role:: ansible-option-versionadded .. role:: ansible-option-aliases .. role:: ansible-option-choices .. role:: ansible-option-choices-default-mark .. role:: ansible-option-default-bold .. role:: ansible-option-configuration .. role:: ansible-option-returned-bold .. role:: ansible-option-sample-bold .. Anchors .. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory: .. Anchors: short name for ansible.builtin .. Anchors: aliases .. Title cisco.catalystcenter.catalystcenter inventory -- Cisco Catalyst Center dynamic inventory plugin +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. Collection note .. note:: This inventory plugin is part of the `cisco.catalystcenter collection `_ (version 2.9.1). To install it, use: :code:`ansible-galaxy collection install cisco.catalystcenter`. You need further requirements to be able to use this inventory plugin, see :ref:`Requirements ` for details. To use it in a playbook, specify: :code:`cisco.catalystcenter.catalystcenter`. .. version_added .. rst-class:: ansible-version-added New in cisco.catalystcenter 2.10.0 .. contents:: :local: :depth: 1 .. Deprecated Synopsis -------- .. Description - Queries Cisco Catalyst Center for network devices and builds an Ansible inventory. - Creates groups based on site hierarchy, device role, device family, and tags. - Supports pagination for large-scale deployments (500+ devices). - Uses the catalystcentersdk Python SDK for API communication. .. Aliases .. Requirements .. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory_requirements: Requirements ------------ The below requirements are needed on the local controller node that executes this inventory. - catalystcentersdk \>= 2.3.7 .. Options Parameters ---------- .. rst-class:: ansible-option-table .. list-table:: :width: 100% :widths: auto :header-rows: 1 * - Parameter - Comments * - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-api_page_size: .. rst-class:: ansible-option-title **api_page_size** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`integer` .. raw:: html
- .. raw:: html
Number of devices to retrieve per API call. Catalyst Center has a maximum of 500 records per call. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`500` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-api_version: .. rst-class:: ansible-option-title **api_version** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Catalyst Center API version string. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`"3.1.6.0"` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_VERSION` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-cache: .. rst-class:: ansible-option-title **cache** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Toggle to enable/disable the caching of the inventory's source data, requires a cache plugin setup to work. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`false` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`true` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - INI entry: .. code-block:: [inventory] cache = false - Environment variable: :envvar:`ANSIBLE\_INVENTORY\_CACHE` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-cache_connection: .. rst-class:: ansible-option-title **cache_connection** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Cache connection data or path, read cache plugin documentation for specifics. .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - INI entries: .. code-block:: [defaults] fact_caching_connection = VALUE .. code-block:: [inventory] cache_connection = VALUE - Environment variable: :envvar:`ANSIBLE\_CACHE\_PLUGIN\_CONNECTION` - Environment variable: :envvar:`ANSIBLE\_INVENTORY\_CACHE\_CONNECTION` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-cache_plugin: .. rst-class:: ansible-option-title **cache_plugin** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Cache plugin to use for the inventory's source data. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`"memory"` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - INI entries: .. code-block:: [defaults] fact_caching = memory .. code-block:: [inventory] cache_plugin = memory - Environment variable: :envvar:`ANSIBLE\_CACHE\_PLUGIN` - Environment variable: :envvar:`ANSIBLE\_INVENTORY\_CACHE\_PLUGIN` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-cache_prefix: .. rst-class:: ansible-option-title **cache_prefix** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Prefix to use for cache plugin files/tables .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`"ansible\_inventory\_"` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - INI entries: .. code-block:: [default] fact_caching_prefix = ansible_inventory_ .. code-block:: [inventory] cache_prefix = ansible_inventory_ - Environment variable: :envvar:`ANSIBLE\_CACHE\_PLUGIN\_PREFIX` - Environment variable: :envvar:`ANSIBLE\_INVENTORY\_CACHE\_PLUGIN\_PREFIX` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-cache_timeout: .. rst-class:: ansible-option-title **cache_timeout** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`integer` .. raw:: html
- .. raw:: html
Cache duration in seconds .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`3600` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - INI entries: .. code-block:: [defaults] fact_caching_timeout = 3600 .. code-block:: [inventory] cache_timeout = 3600 - Environment variable: :envvar:`ANSIBLE\_CACHE\_PLUGIN\_TIMEOUT` - Environment variable: :envvar:`ANSIBLE\_INVENTORY\_CACHE\_TIMEOUT` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-compose: .. rst-class:: ansible-option-title **compose** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`dictionary` .. raw:: html
- .. raw:: html
Create vars from jinja2 expressions. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`{}` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-debug: .. rst-class:: ansible-option-title **debug** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Enable SDK debug logging. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`false` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`true` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_DEBUG` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-device_filters: .. rst-class:: ansible-option-title **device_filters** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`dictionary` .. raw:: html
- .. raw:: html
Additional keyword arguments passed to the Catalyst Center \ :literal:`get\_device\_list`\ API call. Use this to pre-filter devices by family, role, management IP, etc. Keys \ :literal:`offset`\ and \ :literal:`limit`\ are reserved for pagination and will be stripped if provided. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`{}` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-group_by_family: .. rst-class:: ansible-option-title **group_by_family** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Create Ansible groups by device family (e.g., \ :literal:`family\_Switches\_and\_Hubs`\ ). .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-group_by_role: .. rst-class:: ansible-option-title **group_by_role** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Create Ansible groups by device role (e.g., \ :literal:`role\_ACCESS`\ , \ :literal:`role\_CORE`\ ). .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-group_by_site: .. rst-class:: ansible-option-title **group_by_site** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Create Ansible groups from the Catalyst Center site hierarchy. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-group_by_tag: .. rst-class:: ansible-option-title **group_by_tag** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Create Ansible groups from Catalyst Center device tags. Disabled by default because it requires additional API calls. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`false` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`true` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-groups: .. rst-class:: ansible-option-title **groups** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`dictionary` .. raw:: html
- .. raw:: html
Add hosts to group based on Jinja2 conditionals. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`{}` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-host: .. rst-class:: ansible-option-title **host** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` / :ansible-option-required:`required` .. raw:: html
- .. raw:: html
Hostname or IP address of the Catalyst Center appliance. .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_HOST` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-hostname_source: .. rst-class:: ansible-option-title **hostname_source** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Device attribute to use as the Ansible inventory hostname. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`"hostname"` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`"managementIpAddress"` - :ansible-option-choices-entry:`"id"` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-include_aps: .. rst-class:: ansible-option-title **include_aps** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Include Unified Access Points in the inventory. Disabled by default because APs are not typically managed via CLI. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`false` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`true` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-keyed_groups: .. rst-class:: ansible-option-title **keyed_groups** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`list` / :ansible-option-elements:`elements=string` .. raw:: html
- .. raw:: html
Add hosts to group based on the values of a variable. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`[]` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-password: .. rst-class:: ansible-option-title **password** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` / :ansible-option-required:`required` .. raw:: html
- .. raw:: html
Password for Catalyst Center authentication. .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_PASSWORD` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-plugin: .. rst-class:: ansible-option-title **plugin** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` / :ansible-option-required:`required` .. raw:: html
- .. raw:: html
Token that ensures this is a source file for the plugin. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`"cisco.catalystcenter.catalystcenter"` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-port: .. rst-class:: ansible-option-title **port** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`integer` .. raw:: html
- .. raw:: html
TCP port for the Catalyst Center API. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`443` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_PORT` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-set_network_os: .. rst-class:: ansible-option-title **set_network_os** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Automatically set \ :literal:`ansible\_network\_os`\ and \ :literal:`ansible\_connection`\ based on the device software type. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-strict: .. rst-class:: ansible-option-title **strict** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
If \ :literal:`yes`\ make invalid entries a fatal error, otherwise skip and continue. Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry-default:`false` :ansible-option-choices-default-mark:`← (default)` - :ansible-option-choices-entry:`true` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-tag_prefix: .. rst-class:: ansible-option-title **tag_prefix** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Prefix for tag-based group names. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`"tag\_"` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-use_mgmt_ip: .. rst-class:: ansible-option-title **use_mgmt_ip** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Set \ :literal:`ansible\_host`\ to the device management IP address. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-username: .. rst-class:: ansible-option-title **username** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`string` .. raw:: html
- .. raw:: html
Username for Catalyst Center authentication. .. rst-class:: ansible-option-line :ansible-option-default-bold:`Default:` :ansible-option-default:`"admin"` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_USERNAME` .. raw:: html
* - .. raw:: html
.. _ansible_collections.cisco.catalystcenter.catalystcenter_inventory__parameter-validate_certs: .. rst-class:: ansible-option-title **validate_certs** .. raw:: html .. rst-class:: ansible-option-type-line :ansible-option-type:`boolean` .. raw:: html
- .. raw:: html
Whether to validate SSL certificates. .. rst-class:: ansible-option-line :ansible-option-choices:`Choices:` - :ansible-option-choices-entry:`false` - :ansible-option-choices-entry-default:`true` :ansible-option-choices-default-mark:`← (default)` .. rst-class:: ansible-option-line :ansible-option-configuration:`Configuration:` - Environment variable: :envvar:`CATALYSTCENTER\_VERIFY` .. raw:: html
.. Attributes .. Notes .. Seealso .. Examples Examples -------- .. code-block:: yaml+jinja # Minimal configuration (use ansible-vault for the password in production) plugin: cisco.catalystcenter.catalystcenter host: catalyst.example.com username: admin password: "{{ vault_cc_password }}" validate_certs: false # With environment variables (CATALYSTCENTER_HOST, CATALYSTCENTER_USERNAME, etc.) plugin: cisco.catalystcenter.catalystcenter validate_certs: false # Full-featured configuration plugin: cisco.catalystcenter.catalystcenter host: catalyst.example.com username: admin password: "{{ vault_cc_password }}" validate_certs: false api_version: "3.1.6.0" # Grouping options group_by_site: true group_by_role: true group_by_family: true group_by_tag: true tag_prefix: "cctag_" # Include access points include_aps: true # Pre-filter devices by family device_filters: family: "Switches and Hubs" # Constructable features keyed_groups: - key: cc_software_type prefix: os separator: "_" - key: cc_series prefix: hw separator: "_" compose: ansible_host: cc_management_ip site_role: cc_role | lower groups: reachable: cc_reachability_status == "Reachable" unreachable: cc_reachability_status == "Unreachable" # Caching (reduces API calls) cache: true cache_plugin: ansible.builtin.jsonfile cache_timeout: 3600 cache_connection: /tmp/catalystcenter_inventory_cache .. Facts .. Return values .. Status (Presently only deprecated) .. Authors Authors ~~~~~~~ - Steve Fulmer (@stevefulme1) .. hint:: Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. .. Extra links Collection links ~~~~~~~~~~~~~~~~ .. raw:: html .. Parsing errors