Upgrade Procedures
Those guides describes the changes required to upgrade your Catalyst Center Terraform module version. Each upgrade procedure covers the changes necessary to move between two consecutive releases (subsequent versions).
0.1.1 to 0.2.0 - upgrade procedure
Section titled “0.1.1 to 0.2.0 - upgrade procedure”Summary
Section titled “Summary”After completing all the above changes, your data model will be compatible with Catalyst Center Terraform module version 0.2.0. Make sure to:
- Update all
deploy_statereferences toredeploy_templatewith appropriate values - Replace
namewithip_pool_namein Anycast Gateway configurations - Handle the Terraform state changes for network profile assignments
- Handle the Terraform state changes for Fabric L3 Handoff IP Transit resources
- Update LAN Automation attribute names and IP pool structure
- Change
hostnametofqdn_namein device inventory - Update discovery configuration attribute names
1. Template Configuration Enhancement
Section titled “1. Template Configuration Enhancement”Overview
Section titled “Overview”In version 0.1.1, template deployment was controlled by the deploy_state attribute with two options:
DEPLOY- never redeploy templateREDEPLOY- always redeploy template regardless of content changes
In version 0.2.0, this has been replaced with redeploy_template offering more granular control:
NEVER- never redeploy templateALWAYS- always redeploy template regardless of content changesON_CHANGE- redeploy template only when there is a content template change
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”inventory: devices: - name: DEVICE_1 dayn_templates: regular: - name: TEMP1 deploy_state: DEPLOY(0.2.0) Data Model
Section titled “(0.2.0) Data Model”inventory: devices: - name: DEVICE_1 dayn_templates: regular: - name: TEMP1 redeploy_template: NEVERConfiguration Levels
Section titled “Configuration Levels”The redeploy_template parameter can be configured at multiple levels with the following precedence (highest to lowest):
- Device-specific template level:
catalyst_center: inventory: devices: - name: DEVICE_1 dayn_templates: regular: - name: TEMP1 redeploy_template: NEVER- Device-wide template level:
catalyst_center: inventory: devices: - name: DEVICE_1 dayn_templates: redeploy_template: NEVER regular: - name: TEMP1- Global template level:
catalyst_center: templates: projects: - name: Project_DayN description: Project_DayN dayn_templates: - name: TEMPLATE_1 redeploy_template: ALWAYS- Default level:
defaults: catalyst_center: templates: redeploy_template: NEVERDeployment Behavior
Section titled “Deployment Behavior”| redeploy_template | Template Content Change | Template Redeployed |
|---|---|---|
| ALWAYS | Yes | Yes |
| ALWAYS | No | Yes |
| NEVER | Yes | No |
| NEVER | No | No |
| ON_CHANGE | Yes | Yes |
| ON_CHANGE | No | No |
2. Anycast Gateway Attribute Name Replacement
Section titled “2. Anycast Gateway Attribute Name Replacement”Overview
Section titled “Overview”The name attribute in Anycast Gateway configuration has been replaced with ip_pool_name to better reflect its purpose as a reference to IP pool reservations.
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: fabric: fabric_sites: - name: Global/AREA anycast_gateways: - name: IPPool_1(0.2.0) Data Model
Section titled “(0.2.0) Data Model”catalyst_center: fabric: fabric_sites: - name: Global/AREA anycast_gateways: - ip_pool_name: IPPool_13. Network Profile Assignment Resource Change
Section titled “3. Network Profile Assignment Resource Change”Overview
Section titled “Overview”The Terraform resource catalystcenter_associate_site_to_network_profile has been replaced with catalystcenter_network_profile_for_site_assignments. This requires manual Terraform state management.
Migration Steps
Section titled “Migration Steps”Step 1: Identify Existing Resources
Section titled “Step 1: Identify Existing Resources”Execute the following command to find all network profile association resources:
terraform state list | grep catalystcenter_associate_site_to_network_profileExample output:
module.catalyst_center.catalystcenter_associate_site_to_network_profile.site_to_network_profile["Global/Poland/Krakow#_#Krk_switchingProfile"]module.catalyst_center.catalystcenter_associate_site_to_network_profile.site_to_wireless_network_profile["Global/Poland/Krakow#_#C9800_KRK_Profile"]Step 2: Remove Resources from State
Section titled “Step 2: Remove Resources from State”Remove the identified resources from the Terraform state:
terraform state rm 'module.catalyst_center.catalystcenter_associate_site_to_network_profile.site_to_network_profile["Global/Poland/Krakow#_#Krk_switchingProfile"]'terraform state rm 'module.catalyst_center.catalystcenter_associate_site_to_network_profile.site_to_wireless_network_profile["Global/Poland/Krakow#_#C9800_KRK_Profile"]'Step 3: Apply Changes
Section titled “Step 3: Apply Changes”Execute terraform apply to create the new network profile assignment resources:
terraform applyExpected output:
# module.catalyst_center.catalystcenter_network_profile_for_sites_assignments.site_to_network_profile["Krk_switchingProfile"] will be created+ resource "catalystcenter_network_profile_for_sites_assignments" "site_to_network_profile" { + id = (known after apply) + items = [ + { + id = "a8fbb587-887c-42be-aaad-395abd685ebf" }, ] + network_profile_id = "076013fa-322f-48cb-b278-8bde227ebed7" }
# module.catalyst_center.catalystcenter_network_profile_for_sites_assignments.site_to_wireless_network_profile["C9800_KRK_Profile"] will be created+ resource "catalystcenter_network_profile_for_sites_assignments" "site_to_wireless_network_profile" { + id = (known after apply) + items = [ + { + id = "a8fbb587-887c-42be-aaad-395abd685ebf" }, ] + network_profile_id = "5304325b-0aac-4be9-90ea-90c5654033f7" }4. Fabric L3 Handoff IP Transit Resource Change
Section titled “4. Fabric L3 Handoff IP Transit Resource Change”Overview
Section titled “Overview”The Terraform resource catalystcenter_fabric_l3_handoff_ip_transit has been replaced with catalystcenter_fabric_l3_handoff_ip_transits (note the plural form). This change consolidates multiple IP transit handoffs under a single resource per network device, requiring manual Terraform state management.
Migration Steps
Section titled “Migration Steps”Step 1: Identify Existing Resources
Section titled “Step 1: Identify Existing Resources”Execute the following command to find all L3 handoff IP transit resources:
terraform state list | grep catalystcenter_fabric_l3_handoff_ip_transitExample output:
module.catalyst_center.catalystcenter_fabric_l3_handoff_ip_transit.l3_handoff_ip_transit["Campus/GigabitEthernet1/0/3/BGP65002/BR10.cisco.eu"]Step 2: Find Network Device and Fabric Id
Section titled “Step 2: Find Network Device and Fabric Id”Run command to get the network_device_id and fabric_id values needed for the import step:
terraform state show 'module.catalyst_center.catalystcenter_fabric_l3_handoff_ip_transit.l3_handoff_ip_transit["Campus/GigabitEthernet1/0/3/BGP65002/BR10.cisco.eu"]'Example output:
# module.catalyst_center.catalystcenter_fabric_l3_handoff_ip_transit.l3_handoff_ip_transit["Campus/GigabitEthernet1/0/3/BGP65002/BR10.cisco.eu"]:resource "catalystcenter_fabric_l3_handoff_ip_transit" "l3_handoff_ip_transit" { fabric_id = "aca2f40c-40a2-4bc2-9690-f59d758fd600" id = "fbe1ad74-7df9-46a2-8746-8875f9cbbed4" interface_name = "GigabitEthernet1/0/3" local_ip_address = "172.16.100.1/24" network_device_id = "8fbd4920-25d2-4b73-be25-2421c61e9605" remote_ip_address = "172.16.100.2/24" transit_network_id = "fc09acc4-dd6d-48f0-a446-6afe7d0867f4" virtual_network_name = "Campus" vlan_id = 100}Save the network_device_id and fabric_id values for the import step:
- network_device_id:
8fbd4920-25d2-4b73-be25-2421c61e9605 - fabric_id:
aca2f40c-40a2-4bc2-9690-f59d758fd600
Step 3: Remove Resources from State
Section titled “Step 3: Remove Resources from State”Remove the identified resources from the Terraform state:
terraform state rm 'module.catalyst_center.catalystcenter_fabric_l3_handoff_ip_transit.l3_handoff_ip_transit["Campus/GigabitEthernet1/0/3/BGP65002/BR10.cisco.eu"]'Step 4: Import New Resources
Section titled “Step 4: Import New Resources”Import the new consolidated resource using the network device ID and fabric ID copied from Step 2:
terraform import 'module.catalyst_center.catalystcenter_fabric_l3_handoff_ip_transits.l3_handoff_ip_transits["BR10.cisco.eu"]' "8fbd4920-25d2-4b73-be25-2421c61e9605,aca2f40c-40a2-4bc2-9690-f59d758fd600"The import format is: "<network_device_id>,<fabric_id>"
5. LAN Automation Modifications
Section titled “5. LAN Automation Modifications”Overview
Section titled “Overview”Several attributes in the LAN Automation data model have been updated for consistency and clarity.
Migration Steps
Section titled “Migration Steps”Attribute Changes
Section titled “Attribute Changes”| 0.1.1 | 0.2.0 |
|---|---|
peer_device_management_ip_address | secondary_device_management_ip_address |
redistribute_isis_to_bgp | advertise_lan_automation_routes_into_bgp |
(0.2.0) Data Model:
catalyst_center: lan_automation: - name: Automate_Edge_Switches secondary_device_management_ip_address: 198.18.130.11 advertise_lan_automation_routes_into_bgp: trueIP Pools Structure Changes
Section titled “IP Pools Structure Changes”The ip_pools structure has been modified to use name and role instead of ip_pool_name and ip_pool_role.
(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: lan_automation: - name: Automate_Edge_Switches ip_pools: - ip_pool_name: MainPool ip_pool_role: MAIN_POOL(0.2.0) Data Model
Section titled “(0.2.0) Data Model”catalyst_center: lan_automation: - name: Automate_Edge_Switches ip_pools: - name: MainPool role: PRINCIPAL_IP_ADDRESS_POOLAdditionaly the ip_pool_role values have been updated as follows:
| 0.1.1 | 0.2.0 |
|---|---|
MAIN_POOL | PRINCIPAL_IP_ADDRESS_POOL |
PHYSICAL_LINK_POOL | LINK_OVERLAPPING_IP_POOL |
6. Device Inventory Attribute Replacement
Section titled “6. Device Inventory Attribute Replacement”Overview
Section titled “Overview”The hostname attribute in device inventory has been replaced with fqdn_name to support fully qualified domain names.
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: inventory: devices: - name: DEVICE_1 hostname: DEVICE_1(0.2.0) Data Model
Section titled “(0.2.0) Data Model”catalyst_center: inventory: devices: - name: DEVICE_1 fqdn_name: DEVICE_1.example.com7. Discovery Schema Changes
Section titled “7. Discovery Schema Changes”Overview
Section titled “Overview”The attribute preferred_ip_method has been renamed to preferred_mgmt_ip_method in discovery configurations:
(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: inventory: discovery: - name: Discovery_1 preferred_ip_method: UseLoopBack(0.2.0) Data Model
Section titled “(0.2.0) Data Model”catalyst_center: inventory: discovery: - name: Discovery_1 preferred_mgmt_ip_method: UseLoopBack0.1.0 to 0.1.1 - upgrade procedure
Section titled “0.1.0 to 0.1.1 - upgrade procedure”Summary
Section titled “Summary”After completing all the above changes, your data model will be compatible with Catalyst Center Terraform module version 0.1.1. Make sure to:
- Update authentication template
number_of_hostsenum value from ‘Limited’ to ‘Single’ - Add L3 Virtual Networks structure at fabric level if using global L3 VNs
- Update device inventory managed AP locations structure
- Add new discovery configuration attributes if using advanced SNMP settings
- Remove deprecated RF profile attributes
- Update anycast gateway configurations with new optional attributes
- Remove deprecated border device attributes
- Handle the Terraform state changes for fabric provision device resource consolidation
1. Authentication Template Enum Value Update
Section titled “1. Authentication Template Enum Value Update”Overview
Section titled “Overview”The number_of_hosts attribute enum value has been updated for consistency.
Migration Steps
Section titled “Migration Steps”(0.1.0) Data Model
Section titled “(0.1.0) Data Model”catalyst_center: authentication_templates: - name: AUTH_TEMPLATE_1 number_of_hosts: Limited(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: authentication_templates: - name: AUTH_TEMPLATE_1 number_of_hosts: Single2. Fabric L3 Virtual Networks Structure Enhancement
Section titled “2. Fabric L3 Virtual Networks Structure Enhancement”Overview
Section titled “Overview”L3 Virtual Networks can now be defined at the global fabric level in addition to fabric site level, enabling better organization and reuse.
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: fabric: l3_virtual_networks: - name: GLOBAL_L3_VN_1 - name: GLOBAL_L3_VN_2 fabric_sites: - name: Global/AREA l3_virtual_networks: - GLOBAL_L3_VN_1 - GLOBAL_L3_VN_23. Device Inventory Managed AP Locations Enhancement
Section titled “3. Device Inventory Managed AP Locations Enhancement”Overview
Section titled “Overview”The managed_ap_locations attribute has been split into primary_managed_ap_locations and secondary_managed_ap_locations for better AP management control.
Migration Steps
Section titled “Migration Steps”(0.1.0) Data Model
Section titled “(0.1.0) Data Model”catalyst_center: inventory: devices: - name: WLC_DEVICE_1 managed_ap_locations: - Global/Area1/Building1/Floor1 - Global/Area1/Building1/Floor2(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: inventory: devices: - name: WLC_DEVICE_1 primary_managed_ap_locations: - Global/Area1/Building1/Floor1 secondary_managed_ap_locations: - Global/Area1/Building1/Floor24. Discovery Configuration Enhancement
Section titled “4. Discovery Configuration Enhancement”Overview
Section titled “Overview”New SNMP-related attributes have been added to discovery configurations for enhanced device discovery capabilities.
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: inventory: discovery: - name: DISCOVERY_1 cdp_level: 16 enable_password_list: - enable_password_1 ip_filter_list: - 192.168.1.0/24 netconf_port: "830" retry: 3 user_name_list: - admin snmp_version: v3 snmp_user_name: snmp_user snmp_rw_community_desc: "RW Community" snmp_ro_community_desc: "RO Community" snmp_ro_community: public snmp_rw_community: private snmp_priv_protocol: AES128 snmp_priv_passphrase: priv_pass snmp_mode: AUTHPRIV snmp_auth_protocol: SHA snmp_auth_passphrase: auth_pass5. RF Profile Attributes Cleanup
Section titled “5. RF Profile Attributes Cleanup”Overview
Section titled “Overview”Deprecated RF profile attributes channel_width and enable_brown_field have been removed from the schema.
Migration Steps
Section titled “Migration Steps”Remove these attributes from your RF profile configurations:
channel_widthenable_brown_field
6. Anycast Gateway Enhancements
Section titled “6. Anycast Gateway Enhancements”Overview
Section titled “Overview”New optional attributes have been added to anycast gateway configurations for enhanced functionality.
Migration Steps
Section titled “Migration Steps”(0.1.1) Data Model
Section titled “(0.1.1) Data Model”catalyst_center: fabric: fabric_sites: - name: Global/AREA anycast_gateways: - name: ANYCAST_GW_1 intra_subnet_routing_enabled: true multiple_ip_to_mac_addresses: false supplicant_based_extended_node_onboarding: true7. Border Device Attributes Cleanup
Section titled “7. Border Device Attributes Cleanup”Overview
Section titled “Overview”The deprecated external_domain_routing_protocol_name attribute has been removed from border device configurations.
Migration Steps
Section titled “Migration Steps”Remove the external_domain_routing_protocol_name attribute from your border device configurations.
8. Fabric Provision Device Resource Consolidation
Section titled “8. Fabric Provision Device Resource Consolidation”Overview
Section titled “Overview”Multiple device-specific provision resources have been consolidated into a single catalystcenter_fabric_provision_device resource. The following resources are now unified:
catalystcenter_fabric_provision_device.border_devicecatalystcenter_fabric_provision_device.edge_devicecatalystcenter_fabric_provision_device.non_fabric_device
All devices now use the single catalystcenter_fabric_provision_device.provision_device resource.
Migration Steps
Section titled “Migration Steps”Step 1: Identify Existing Resources
Section titled “Step 1: Identify Existing Resources”Execute the following command to find all fabric provision device resources:
terraform state list | grep catalystcenter_fabric_provision_deviceExample output:
module.catalyst_center.catalystcenter_fabric_provision_device.border_device["BR10.cisco.eu"]module.catalyst_center.catalystcenter_fabric_provision_device.edge_device["EDGE01.cisco.eu"]module.catalyst_center.catalystcenter_fabric_provision_device.non_fabric_device["PNP_DEVICE.cisco.eu"]Step 2: Remove Resources from State
Section titled “Step 2: Remove Resources from State”Remove the identified resources from the Terraform state:
terraform state rm 'module.catalyst_center.catalystcenter_fabric_provision_device.border_device["BR10.cisco.eu"]'terraform state rm 'module.catalyst_center.catalystcenter_fabric_provision_device.edge_device["EDGE01.cisco.eu"]'terraform state rm 'module.catalyst_center.catalystcenter_fabric_provision_device.non_fabric_device["PNP_DEVICE.cisco.eu"]'Step 3: Import New Consolidated Resources
Section titled “Step 3: Import New Consolidated Resources”Import the new consolidated resources using the site ID and network device ID:
terraform import 'module.catalyst_center.catalystcenter_fabric_provision_device.provision_device["BR10.cisco.eu"]' "662ed0df-861f-4753-9008-df85fe9a584e,e7869917-cf34-44ed-998a-e72ef9866eeb"terraform import 'module.catalyst_center.catalystcenter_fabric_provision_device.provision_device["EDGE01.cisco.eu"]' "662ed0df-861f-4753-9008-df85fe9a584e,7ef492ca-b008-479a-9de4-7e40438c7d10"terraform import 'module.catalyst_center.catalystcenter_fabric_provision_device.provision_device["PNP_DEVICE.cisco.eu"]' "c2c12299-f7cc-4058-9d99-ffe57de50062,ce8d33e4-6d7b-4f2a-8ed6-0d95603305be"The import format is: "<site_id>,<network_device_id>"