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_state
references toredeploy_template
with appropriate values - Replace
name
withip_pool_name
in 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
hostname
tofqdn_name
in 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: NEVER
Configuration 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: NEVER
Deployment 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_1
3. 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_profile
Example 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 apply
Expected 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_transit
Example 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: true
IP 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_POOL
Additionaly 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.com
7. 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: UseLoopBack
0.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_hosts
enum 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
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: Single
2. 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_2
3. 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/Floor2
4. 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_pass
5. 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_width
enable_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: true
7. 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.