Introduction

The cisco.ios collection provides the resource modules, facts modules, and CLI/NETCONF plugins used to automate configuration of Cisco IOS and IOS XE devices with Ansible (ios_bgp_global, ios_l3_interfaces, ios_vlans, and similar *_config/*_facts modules). Version 11.7.0 has just been published on Ansible Galaxy, moving up from 11.6.0. This release brings two brand-new resource modules for flow monitoring and SPAN sessions, a round of BGP BMP (BGP Monitoring Protocol) enhancements, and several idempotency and parsing bugfixes, most of them concentrated in ios_bgp_global and ios_bgp_address_family.

Whats New

New resource modules

  • ios_flow_monitor_global - new resource module to manage Flexible NetFlow records, exporters, samplers, and monitors on Cisco IOS XE.
  • ios_flow_monitor_interfaces - new resource module to manage per-interface flow monitor assignments on Cisco IOS XE.
  • ios_monitor_sessions - new resource module for declarative management of SPAN (Switched Port Analyzer) monitor sessions on Cisco IOS-XE devices. It supports all standard states (merged, replaced, overridden, deleted, rendered, gathered, parsed), handles IOS-XE range notation, consolidates source interfaces per direction, and adds support for ERSPAN source sessions on routers such as the C8000V that reject local SPAN.

BGP BMP multi-server support

  • ios_bgp_global - adds bmp.servers to manage multiple BMP servers (1-4) with number, activate, address, description, failure_retry_delay, flapping_delay, initial_delay, set_ip_dscp, stats_reporting_period, and update_source. The previous bmp.server and bmp.server_options keys keep working and are folded into bmp.servers, but bmp.servers is now the preferred syntax.
  • ios_bgp_global and ios_bgp_address_family - add neighbors.bmp_activate.servers to activate several BMP servers for a single neighbor. bmp_activate.server keeps working and is folded into servers.

Other minor changes

  • ios_bgp_global - adds peer_group_declaration to explicitly declare or remove BGP peer-groups, alongside the existing string-based peer_group member assignments.
  • ios_l3_interfaces - adds tcp_adjust_mss (ip tcp adjust-mss) and ipv6_tcp_adjust_mss (ipv6 tcp adjust-mss) to adjust the TCP MSS of SYN packets passing through an interface. The valid range depends on the platform and IOS XE version and is not validated by the module.
  • ios_route_maps - adds support for set large-community in route-map entries, including multi-value lists, the additive flag, and large-community none.

Bugfixes

  • ios_vlans - excludes reserved VLANs 1 and 1002-1005 for state overridden.
  • ios_bgp_global - neighbors.bmp_activate previously generated the incomplete neighbor X bmp-activate command (twice) and never rendered all or server N; it now correctly renders bmp-activate all or bmp-activate server N [server M ...].
  • ios_bgp_global - deactivates a BMP server around a change of its address, since IOS-XE silently ignores an address change while the server is activated.
  • ios_bgp_global - gathered facts for BMP previously returned only the last bmp server number and dropped all server options because the sub-mode lines were never parsed; every server and its options are now returned under bmp.servers.
  • ios_bgp_global - generates a valid bmp server configuration without relying on a trailing exit-bmp-server-mode appended to the address line, and makes BMP server options idempotent for merged, replaced, overridden, and deleted.
  • ios_bgp_global - peer-group declaration lines are now parsed into facts. With replaced or overridden, set peer_group_declaration: true on peer-group entries before upgrading, otherwise the declaration and its member configuration are removed.
  • ios_bgp_global - rejects carriage returns and line feeds in BMP server string options so they cannot be used to inject extra IOS configuration commands.
  • ios_bgp_global and ios_bgp_address_family - honor an explicit false value for bmp_activate.all in merged state by removing an existing all-server activation.
  • ios_bgp_global and ios_bgp_address_family - reject carriage returns and line feeds in BGP neighbor addresses before rendering CLI commands.
  • ios_bgp_global and ios_bgp_address_family - remove the existing bmp-activate of a neighbor before applying a changed one, since IOS-XE silently ignores bmp-activate on an already activated neighbor, and apply the new one after the neighbor's removal/re-creation where needed.

Module/plugin change overview

ComponentChange typeSummary
ios_flow_monitor_globalNew moduleFlexible NetFlow records, exporters, samplers, monitors
ios_flow_monitor_interfacesNew modulePer-interface flow monitor assignment
ios_monitor_sessionsNew moduleSPAN/ERSPAN session management
ios_bgp_globalMinor change + bugfixesBMP multi-server, peer-group declaration, BMP idempotency fixes
ios_bgp_address_familyMinor change + bugfixesneighbors.bmp_activate.servers, BMP activation fixes
ios_l3_interfacesMinor changetcp_adjust_mss / ipv6_tcp_adjust_mss
ios_route_mapsMinor changeset large-community support
ios_vlansBugfixReserved VLAN exclusion for overridden

How to Test

Install or upgrade the collection from Ansible Galaxy and confirm the installed version before running any playbooks against production IOS/IOS XE devices.

# Install the specific version
ansible-galaxy collection install cisco.ios:11.7.0

# Or force an upgrade from 11.6.0 / any older install
ansible-galaxy collection install cisco.ios --upgrade

# Verify the installed version
ansible-galaxy collection list cisco.ios

# Check module documentation for the new resource modules
ansible-doc cisco.ios.ios_flow_monitor_global
ansible-doc cisco.ios.ios_flow_monitor_interfaces
ansible-doc cisco.ios.ios_monitor_sessions

# Gather BGP facts to confirm the new bmp.servers parsing
ansible -m cisco.ios.ios_facts -a "gather_subset=all" ios_host

For BGP BMP configurations, re-run existing playbooks with --check --diff first: environments using bmp.server/bmp.server_options or bmp_activate.server will keep working unchanged, but it is worth confirming that gathered facts now correctly list every configured BMP server under bmp.servers before migrating task definitions to the new syntax.