Server IP : 85.214.239.14 / Your IP : 3.135.184.124 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/lib/python3/dist-packages/ansible_collections/cisco/iosxr/plugins/modules/ |
Upload File : |
#!/usr/bin/python # # This file is part of Ansible # # Ansible is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Ansible is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # """ The module file for iosxr_ospfv2 """ from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = """ module: iosxr_ospfv2 short_description: Resource module to configure OSPFv2. description: This module manages global OSPFv2 configuration on devices running Cisco IOS-XR version_added: 1.0.0 author: - Rohit Thakur (@rohitthakur2590) notes: - This module works with connection C(network_cli). See L(the IOS-XR Platform Options,../network/user_guide/platform_iosxr.html) options: config: description: A list of OSPFv2 process configuration type: dict suboptions: processes: description: A list of OSPFv2 instances configuration type: list elements: dict suboptions: address_family_unicast: description: Enable unicast topology for ipv4 address family type: bool adjacency_stagger: description: Stagger OSPFv2 adjacency bring up type: dict suboptions: min_adjacency: description: Initial number of neighbors to bring up per area (default 2) type: int max_adjacency: description: Maximum simultaneous neighbors to bring up type: int disable: description: Disable stagger OSPFv2 adjacency type: bool authentication: description: Enable authentication type: dict suboptions: keychain: description: Specify keychain name type: str message_digest: description: Use message-digest authentication type: dict suboptions: set: description: Specify message-digest selection type: bool keychain: description: Specify keychain name type: str no_auth: description: Use no authentication type: bool apply_weight: description: Enable weights configured under interfaces for load sharing type: dict suboptions: bandwidth: description: Reference bandwidth to use for calculation (Mbits/sec) type: int default_weight: description: Specify default weight value to use when it is not configured under interface type: int areas: description: Configure OSPFv2 areas' properties type: list elements: dict suboptions: area_id: description: Area ID as IP address or integer type: str required: true authentication: description: Enable authentication type: dict suboptions: keychain: description: Specify keychain name type: str message_digest: description: Use message-digest authentication type: dict suboptions: keychain: description: Specify keychain name type: str no_auth: description: Use no authentication type: bool authentication_key: description: Used to mention authentication password (key) type: dict suboptions: password: description: The OSPFv2 password (key) type: str clear: description: Specifies an UNENCRYPTED password (key) will follow type: str encrypted: description: Specifies an ENCRYPTED password (key) will follow type: str default_cost: description: Set the summary default-cost of a NSSA/stub area. Stub's advertised external route metric type: int cost: description: Interface cost type: int dead_interval: description: Interval after which a neighbor is declared dead type: int hello_interval: description: Time between HELLO packets type: int transmit_delay: description: Estimated time needed to send link-state update packet type: int mpls: description: Configure MPLS routing protocol parameters type: dict suboptions: traffic_eng: description: Configure an ospf area to run MPLS Traffic Engineering type: bool ldp: description: Configure LDP parameters type: dict suboptions: auto_config: description: Enable LDP IGP interface auto-configuration type: bool sync: description: Enable LDP IGP synchronization type: bool sync_igp_shortcuts: description: LDP sync for igp-shortcut tunnels type: bool mtu_ignore: description: Enable/Disable ignoring of MTU in DBD packets type: str choices: - enable - disable bfd: description: Configure BFD parameters type: dict suboptions: fast_detect: description: Configure fast detection type: dict suboptions: set: description: Enable fast detection only type: bool strict_mode: description: Hold down neighbor session until BFD session is up type: bool minimum_interval: description: Hello interval in milli-seconds type: int multiplier: description: Detect multiplier type: int nssa: description: - NSSA settings for the area type: dict suboptions: set: description: Configure area as NSSA type: bool default_information_originate: description: Originate default Type 7 LSA type: dict suboptions: metric: description: OSPFv2 default metric type: int metric_type: description: Metric type for default routes type: int no_redistribution: description: Do not send redistributed LSAs into NSSA area type: bool no_summary: description: Do not send summary LSAs into NSSA area type: bool translate: description: Translate LSA type: dict suboptions: type7: description: - Translate from Type 7 to Type 5 type: dict suboptions: always: description: - Always translate LSAs type: bool ranges: description: Summarize routes matching address/mask (border routers only) type: list elements: dict suboptions: address: description: IP in Prefix format (x.x.x.x/len) type: str required: true advertise: description: Advertise this range (default) type: bool not_advertise: description: DoNotAdvertise this range type: bool route_policy: description: Specify the route-policy to filter type 3 LSAs (list can have one inbound and/or one outbound policy only) type: list elements: dict suboptions: parameters: description: Specify parameter values for the policy type: list elements: str direction: description: Specify inbound or outbound type: str choices: - in - out stub: description: - Settings for configuring the area as a stub type: dict suboptions: set: description: - Configure the area as a stub type: bool no_summary: description: - Do not send summary LSA into stub area type: bool virtual_link: description: Define a virtual link type: list elements: dict suboptions: id: description: Router-ID of virtual link neighbor (A.B.C.D) type: str required: true authentication: description: Enable authentication type: dict suboptions: keychain: description: Specify keychain name type: str message_digest: description: Use message-digest authentication type: dict suboptions: keychain: description: Specify keychain name type: str no_auth: description: Use no authentication type: bool authentication_key: description: Used to mention authentication password (key) type: dict suboptions: password: description: The OSPFv2 password (key) type: str clear: description: Specifies an UNENCRYPTED password (key) will follow type: str encrypted: description: Specifies an ENCRYPTED password (key) will follow type: str dead_interval: description: Interval after which a neighbor is declared dead type: int hello_interval: description: Time between HELLO packets type: int retransmit_interval: description: Delay between LSA retransmissions type: int transmit_delay: description: Link state transmit delay type: int message_digest_key: description: Message digest authentication password (key) type: dict suboptions: id: description: Key ID (1-255) type: int required: true md5: description: Use MD5 Algorithm type: dict suboptions: password: description: The OSPFv2 password (key) type: str clear: description: Specifies an UNENCRYPTED password (key) will follow type: bool encrypted: description: Specifies an ENCRYPTED password (key) will follow type: bool authentication_key: description: Used to mention authentication password (key) type: dict suboptions: password: description: The OSPFv2 password (key) type: str clear: description: Specifies an UNENCRYPTED password (key) will follow type: bool encrypted: description: Specifies an ENCRYPTED password (key) will follow type: bool auto_cost: description: Calculate OSPFv2 interface cost according to bandwidth type: dict suboptions: reference_bandwidth: description: Specify reference bandwidth in megabits per sec type: int disable: description: Assign OSPFv2 cost based on interface type type: bool bfd: description: Configure BFD parameters type: dict suboptions: fast_detect: description: Configure fast detection type: dict suboptions: set: description: Enable fast detection only type: bool strict_mode: description: Hold down neighbor session until BFD session is up type: bool minimum_interval: description: Hello interval in milli-seconds type: int multiplier: description: Detect multiplier type: int capability: description: Enable specific OSPFv2 feature type: dict suboptions: type7: description: NSSA capability type: str opaque: description: Configure opaque LSA type: dict suboptions: disable: description: Disable Opaque LSA capability type: bool set: description: Enable opaque LSA type: bool cost: description: Interface cost (1-65535) type: int database_filter: description: Filter OSPFv2 LSA during synchronization and flooding (all outgoing LSA). Enable/Disable filtering type: str choices: [enable, disable] dead_interval: description: Interval after which a neighbor is declared dead type: int default_information_originate: description: Distribute default route type: dict suboptions: always: description: Always advertise default route type: bool metric: description: OSPFv2 default metric type: int metric_type: description: OSPFv2 metric type for default routes type: int route_policy: description: Apply route-policy to default-information origination type: str set: description: Enable distribution of default route type: bool default_metric: description: Set metric of redistributed routes type: int demand_circuit: description: Enable/Disable OSPFv2 demand circuit type: str choices: [enable, disable] distance: description: Define an administrative distance type: dict suboptions: admin_distance: description: Administrative distance type: list elements: dict suboptions: value: description: Distance value type: int source: description: Source IP address type: str wildcard: description: IP wild card bits (A.B.C.D) type: str access_list: description: Access list name type: str ospf_distance: description: OSPFv2 administrative distance type: dict suboptions: external: description: Distance for external routes type: int inter_area: description: Distance for inter-area routes type: int intra_area: description: Distance for intra-area routes type: int distribute_link_state: description: Enable Distribution of LSAs to external services type: dict suboptions: instance_id: description: Set distribution process instance identifier type: int throttle: description: Throttle time between successive LSA updates type: int distribute_bgp_ls: description: Enable Distribution of LSAs to external services type: dict suboptions: instance_id: description: Set distribution process instance identifier type: int throttle: description: Throttle time between successive LSA updates type: int distribute_list: description: Filter networks in routing updates (list can have one inbound and/or one outbound policy only) type: list elements: dict suboptions: access_list: description: Inbound/outbound access-list type: str direction: description: Filter incoming/outgoing routing updates type: str choices: - in - out outgoing_params: description: Specify additional parameters for outgoing updates only type: dict suboptions: route_type: description: Type of routes type: str choices: - bgp - connected - dagr - ospf - static id: description: - For BGP, specify AS number. 2-byte AS number (or) 4-byte AS number in asdot (X.Y) format (or) 4-byte AS number in asplain format - For OSPF, specify OSPFv2 instance name type: str route_policy: description: Route Policy to filter OSPFv2 prefixes (for incoming updates only) type: str external_out: description: Enable/Disable advertisement of intra-area prefixes as external type: str choices: - enable - disable flood_reduction: description: Enable/Disable OSPFv2 Flood Reduction type: str choices: - enable - disable hello_interval: description: Time between HELLO packets (<1-65535> seconds) type: int ignore_lsa_mospf: description: Do not complain upon receiving MOSPFv2 Type 6 LSA type: bool link_down_fast_detect: description: Enable fast or early detection of link-down events type: bool log_adjacency_changes: description: Log adjacency state changes type: dict suboptions: set: description: Set log adjacency type: bool disable: description: Disable log adjacency changes type: bool detail: description: Log all state changes type: bool loopback_stub_network: description: Advertise loopback as a stub network type: str choices: - enable - disable max_lsa: description: - Feature to limit the number of non-self-originated LSAs type: dict suboptions: threshold: description: - Threshold value (%) at which to generate a warning message type: int ignore_count: description: - Set count on how many times adjacencies can be suppressed type: int ignore_time: description: - Set number of minutes during which all adjacencies are suppressed type: int reset_time: description: - Set number of minutes after which ignore-count is reset to zero type: int warning_only: description: - Log a warning message when limit is exceeded type: bool max_metric: description: Set maximum metric type: dict suboptions: router_lsa: description: Maximum metric in self-originated router-LSAs type: dict suboptions: set: description: Set router-lsa attribute type: bool external_lsa: description: External LSA configuration type: dict suboptions: set: description: Set external-lsa attribute type: bool max_metric_value: description: Set max metric value for external LSAs type: int include_stub: description: - Advertise Max metric for Stub links as well type: bool on_startup: description: - Effective only at startup type: dict suboptions: set: description: - Set on-startup attribute type: bool wait_period: description: - Wait period in seconds after startup type: int wait_for_bgp_asn: description: - ASN of BGP to wait for type: int summary_lsa: description: - Summary LSAs configuration type: dict suboptions: set: description: - Set summary-lsa attribute type: bool max_metric_value: description: - Max metric value for summary LSAs type: int message_digest_key: description: Message digest authentication password (key) type: dict suboptions: id: description: Key ID type: int required: true md5: description: Use MD5 Algorithm type: dict required: true suboptions: password: description: The OSPFv2 password (key) type: str clear: description: Specifies an UNENCRYPTED password (key) will follow type: bool encrypted: description: Specifies an ENCRYPTED password (key) will follow type: bool microloop_avoidance: description: Avoid microloops type: dict suboptions: protected: description: Avoid microloops for protected prefixes only) type: bool rib_update_delay: description: Delay to introduce between SPF and RIB updates type: int segment_routing: description: Enable segment routing microloop avoidance type: bool monitor_convergence: description: Enables OSPFv2 route convergence monitoring type: dict suboptions: prefix_list: description: Enables Individual Prefix Monitoring type: str track_external_routes: description: Enables Tracking External(Type-5/7) Prefix monitoring type: bool track_ip_frr: description: Enables Tracking IP-Frr Convergence type: bool track_summary_routes: description: Enables Tracking Summary(Inter-Area) Prefix monitoring type: bool mpls: description: Configure MPLS routing protocol parameters type: dict suboptions: traffic_eng: description: Routing protocol commands for MPLS Traffic Engineering type: dict suboptions: autoroute_exclude: description: Exclude IP address destinations from using TE tunnels type: dict suboptions: route_policy: description: Policy name type: str parameters: description: Specify parameter values for the policy type: list elements: str igp_intact: description: Retain one or more IPv4 nexthops with tunnel nexthops type: bool ldp_sync_update: description: Enable LDP sync induced metric propagation type: bool multicast_intact: description: Publish multicast-intact paths to RIB type: bool router_id: description: Traffic Engineering stable IP address for system type: str ldp: description: Configure LDP parameters type: dict suboptions: auto_config: description: Enable LDP IGP interface auto-configuration type: bool sync: description: Enable LDP IGP synchronization type: bool sync_igp_shortcuts: description: LDP sync for igp-shortcut tunnels type: bool mtu_ignore: description: Enable/Disable ignoring of MTU in DBD packets type: str choices: - enable - disable network: description: Network type type: dict suboptions: broadcast: description: Specify OSPFv2 broadcast multi-access network type: bool non_broadcast: description: Specify OSPFv2 NBMA network type: bool point_to_multipoint: description: Specify OSPFv2 point-to-multipoint network type: bool point_to_point: description: Specify OSPFv2 point-to-point network type: bool nsf: description: Non-stop forwarding type: dict suboptions: cisco: description: Cisco Non-stop forwarding type: dict suboptions: enforce_global: description: Cancel NSF restart when non-NSF-aware neighbors detected for the whole OSPFv2 process type: bool set: description: Enable Cisco NSF type: bool flush_delay_time: description: Maximum time allowed for external route learning type: int ietf: description: IETF graceful restart type: dict suboptions: helper_disable: description: Disable router's helper support level type: bool set: description: Only enable ietf option type: bool interval: description: Minimum interval between NSF restarts (<90-3600> seconds) type: int lifetime: description: Maximum route lifetime following restart (<90-1800> seconds) type: int nsr: description: Enable NSR for all VRFs in this process. 'False' option to disable NSR for all VRFs in this process type: bool packet_size: description: Size of OSPFv2 packets to use. min=576 max=MTU bytes type: int passive: description: Enable/Disable passive type: str choices: - enable - disable prefix_suppression: description: Suppress advertisement of the prefixes type: dict suboptions: set: description: Set the suppression option type: bool secondary_address: description: Enable/Disable secondary address suppression type: bool priority: description: Router priority type: int process_id: description: The OSPFv2 Process ID type: str required: true protocol_shutdown: description: Protocol specific configuration type: dict suboptions: host_mode: description: Only traffic destined for this box allowed(cisco-support) type: bool on_reload: description: Shutdown post reload only type: bool set: description: Shutdown the OSPFv2 Protocol type: bool limit: description: High watermark for incoming priority events type: dict suboptions: high: description: Hello events are dropped when incoming event queue exceeds this value type: int low: description: DBD/LS Update/Req packets are dropped when incoming event queue exceeds this value type: int medium: description: LSA ACKs are dropped when incoming event queue exceeds this value type: int redistribute: description: Redistribute information from another routing Protocol type: dict suboptions: route_type: description: Route type to redistribute type: str choices: [application, bgp, connected, dagr, eigrp, isis, mobile, ospf, rip, static, subscriber] id: description: OnePK application name for application routes (or) AS number for bgp and eigrp (or) instance name for isis and ospf type: str level: description: ISIS levels choices: [1, 2, 12] type: int lsa_type_summary: description: LSA type 3 for redistributed routes type: bool match: description: Redistribution of routes. For OSPFv2 - external/internal/nssa-external 1/2. For EIGRP - external/internal type: str metric: description: Metric for redistributed routes type: int metric_type: description: OSPFv2 exterior metric type for redistributed routes type: int choices: [1, 2] route_policy: description: Apply route-policy to redistribution type: dict suboptions: name: description: Name of the policy type: str parameters: description: Specify parameter values for the policy type: list elements: str nssa_only: description: Redistribute to NSSA areas only type: bool preserve_med: description: Preserve med of BGP routes type: bool tag: description: Set tag for routes redistributed into OSPFv2 type: int retransmit_interval: description: Delay between LSA retransmissions type: int router_id: description: OSPFv2 router-id in IPv4 address format (A.B.C.D) type: str security_ttl: description: Enable security type: dict suboptions: set: description: Enable ttl security type: bool hops: description: Maximum number of IP hops allowed <1-254> type: int summary_in: description: Enable/Disable advertisement of external prefixes as inter-area type: str choices: [enable, disable] summary_prefix: description: Configure IP address summaries type: list elements: dict suboptions: prefix: description: IP summary address/mask (A.B.C.D/prefix) type: str required: true not_advertise: description: Suppress routes that match the specified prefix/mask pair type: bool tag: description: Set tag type: int timers: description: Configure timer related constants type: dict suboptions: graceful_shutdown: description: Timers for graceful shutdown(cisco-support) type: dict suboptions: initial_delay: description: Delay before starting graceful shutdown type: int retain_routes: description: Time to keep routes active after graceful shutdown type: int lsa: description: OSPFv2 global LSA timers type: dict suboptions: group_pacing: description: OSPFv2 LSA group pacing timer. Interval between group of LSA being refreshed or maxaged type: int min_arrival: description: OSPFv2 MinLSArrival timer. The minimum interval in millisec between accepting the same LSA type: int refresh: description: OSPFv2 LSA refresh interval. How often self-originated LSAs should be refreshed, in seconds type: int throttle: description: OSPFv2 throttle timers type: dict suboptions: lsa_all: description: LSA throttle timers for all types of OSPFv2 LSAs type: dict suboptions: initial_delay: description: Delay to generate first occurance of LSA in milliseconds type: int min_delay: description: Minimum delay between originating the same LSA in milliseconds type: int max_delay: description: Maximum delay between originating the same LSA in milliseconds type: int spf: description: OSPFv2 SPF throttle timers type: dict suboptions: change_delay: description: Delay between receiving a change to SPF calculation in milliseconds type: int second_delay: description: Delay between first and second SPF calculation in milliseconds type: int max_wait: description: Maximum wait time in milliseconds for SPF calculations type: int fast_reroute: description: Fast-reroute throttle timer. Delay between end of SPF and start of the fast-reroute computation in milliseconds type: int pacing_flood: description: OSPFv2 flood pacing timer. Interval in msec to pace flooding on all interfaces type: int transmit_delay: description: Estimated time needed to send link-state update packet type: int weight: description: Interface weight type: int running_config: description: - This option is used only with state I(parsed). - The value of this option should be the output received from the IOS-XR device by executing the command B(show running-config router ospf). - The state I(parsed) reads the configuration from C(running_config) option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the I(parsed) key within the result. type: str state: description: - The state the configuration should be left in. type: str choices: - merged - replaced - deleted - parsed - gathered - rendered - overridden default: merged """ EXAMPLES = """ # Using merged # Before state: # ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 15:54:44.569 UTC # % No such configuration item(s) # - name: Merge provided OSPFv2 configuration with the existing configuration cisco.iosxr.iosxr_ospfv2: config: processes: - process_id: '27' areas: - area_id: '10' hello_interval: 2 authentication: keychain: ansi11393 - process_id: '26' adjacency_stagger: max_adjacency: 20 min_adjacency: 10 - process_id: '10' authentication: keychain: ansible_test1102 areas: - area_id: '11' default_cost: 5 cost: 11 - area_id: 22 default_cost: 6 - process_id: '30' areas: - area_id: 11 default_cost: 5 - area_id: 22 default_cost: 6 cost: 2 default_metric: 10 transmit_delay: 2 hello_interval: 1 dead_interval: 2 retransmit_interval: 2 weight: 2 packet_size: 577 priority: 1 router_id: 2.2.2.2 demand_circuit: enable passive: disable summary_in: enable flood_reduction: disable mtu_ignore: enable external_out: disable state: merged # # # ------------------------ # Module Execution Result # ------------------------ # # "before": {} # # "commands": [ # "router ospf 30", # "cost 2", # "weight 2", # "passive disable", # "priority 1", # "flood-reduction disable", # "default-metric 10", # "router-id 2.2.2.2", # "demand-circuit enable", # "packet-size 577", # "transmit-delay 2", # "summary-in enable", # "external-out disable", # "dead-interval 2", # "hello-interval 1", # "retransmit-interval 2", # "mtu-ignore enable", # "area 11 default-cost 5", # "area 22 default-cost 6", # "router ospf 26", # "adjacency stagger 10 20", # "authentication message-digest keychain ansible1101pass", # "router ospf 27", # "area 10 authentication keychain ansi11393", # "area 10 hello-interval 2", # "router ospf 10", # "authentication keychain ansible_test1102", # "area 11 default-cost 5", # "area 11 cost 11", # "area 22 default-cost 6" # ] # # "after": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # # # ------------ # After state # ------------ # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # # Using replaced # # ------------ # Before state # ------------ # # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # - name: Replace OSPFv2 routes configurations from the device cisco.iosxr.iosxr_ospfv2: config: processes: - process_id: 27 areas: - area_id: 10 hello_interval: 2 - area_id: 20 cost: 2 default_cost: 2 authentication: keychain: ansi11393 - process_id: 26 adjacency_stagger: min_adjacency: 10 max_adjacency: 20 state: replaced # # # ------------------------ # Module Execution Result # ------------------------ # # "before": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # # "commands": [ # "router ospf 27", # "no area 10 authentication keychain ansi11393", # "area 20 authentication keychain ansi11393", # "area 20 default-cost 2", # "area 20 cost 2" # ] # # "after": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "hello_interval": 2 # }, # { # "area_id": "20", # "authentication": { # "keychain": "ansi11393" # }, # "cost": 2, # "default_cost": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # # # ----------- # After state # ----------- # # RP/0/RP0/CPU0:anton(config)#do show running-config router ospf # Thu Jun 11 16:40:31.038 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # hello-interval 2 # ! # area 20 # cost 2 # authentication keychain ansi11393 # default-cost 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # # Using overridden # # ------------ # Before state # ------------ # # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # - name: Override existing OSPFv2 configurations from the device cisco.iosxr.iosxr_ospfv2: config: processes: - process_id: 27 areas: - area_id: 10 hello_interval: 2 authentication: keychain: ansi11393 - area_id: 20 cost: 2 default_cost: 2 authentication: keychain: ansi11393 - process_id: 26 adjacency_stagger: min_adjacency: 10 max_adjacency: 20 state: overridden # # # ------------------------ # Module Execution Result # ------------------------ # # "before": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # # "commands": [ # "router ospf 10", # "no authentication keychain ansible_test1102", # "no area 11 default-cost 5", # "no area 11 cost 11", # "no area 22 default-cost 6", # "router ospf 30", # "no cost 2", # "no weight 2", # "no passive disable", # "no priority 1", # "no flood-reduction disable", # "no default-metric 10", # "no router-id 2.2.2.2", # "no demand-circuit enable", # "no packet-size 577", # "no transmit-delay 2", # "no summary-in enable", # "no external-out disable", # "no dead-interval 2", # "no hello-interval 1", # "no retransmit-interval 2", # "no mtu-ignore enable", # "no area 11 default-cost 5", # "no area 22 default-cost 6", # "router ospf 27", # "area 20 authentication keychain ansi11393", # "area 20 default-cost 2", # "area 20 cost 2" # ] # # "after": { # "processes": [ # { # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # }, # { # "area_id": "20", # "authentication": { # "keychain": "ansi11393" # }, # "cost": 2, # "default_cost": 2 # } # ], # "process_id": "27" # }, # { # "process_id": "30" # } # ] # } # # # ----------- # After state # ----------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:50:36.332 UTC # router ospf 10 # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # area 20 # cost 2 # authentication keychain ansi11393 # default-cost 2 # ! # ! # router ospf 30 # ! # # Using deleted # # ------------ # Before state # ------------ # # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # - name: Deleted existing OSPFv2 configurations from the device cisco.iosxr.iosxr_ospfv2: config: processes: - process_id: '10' - process_id: '26' - process_id: '27' - process_id: '30' state: deleted # # # ------------------------ # Module Execution Result # ------------------------ # # "before": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # }, # # "commands": [ # "router ospf 10", # "no authentication keychain ansible_test1102", # "no area 11 default-cost 5", # "no area 11 cost 11", # "no area 22 default-cost 6", # "router ospf 26", # "no adjacency stagger 10 20", # "no authentication message-digest keychain ansible1101pass", # "router ospf 27", # "no area 10 authentication keychain ansi11393", # "no area 10 hello-interval 2", # "router ospf 30", # "no cost 2", # "no weight 2", # "no passive disable", # "no priority 1", # "no flood-reduction disable", # "no default-metric 10", # "no router-id 2.2.2.2", # "no demand-circuit enable", # "no packet-size 577", # "no transmit-delay 2", # "no summary-in enable", # "no external-out disable", # "no dead-interval 2", # "no hello-interval 1", # "no retransmit-interval 2", # "no mtu-ignore enable", # "no area 11 default-cost 5", # "no area 22 default-cost 6" # ] # # "after": { # "processes": [ # { # "process_id": "10" # }, # { # "process_id": "26" # }, # { # "process_id": "27" # }, # { # "process_id": "30" # } # ] # } # # # ----------- # After state # ----------- # # RP/0/RP0/CPU0:anton(config)#show running-config router ospf # Thu Jun 11 17:07:34.218 UTC # router ospf 10 # ! # router ospf 26 # ! # router ospf 27 # ! # router ospf 30 # ! # Using parsed # parsed.cfg # ------------ # Thu Jun 11 17:28:51.918 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! - name: Parsed the device configuration to get output commands cisco.iosxr.iosxr_ospfv2: running_config: "{{ lookup('file', './parsed.cfg') }}" state: parsed # # # ------------------------- # Module Execution Result # ------------------------- # # # "parsed": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # Using rendered # # - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospfv2: config: processes: - process_id: 27 areas: - area_id: 10 hello_interval: 2 authentication: keychain: ansi11393 - process_id: 26 adjacency_stagger: min_adjacency: 10 max_adjacency: 20 - process_id: 10 authentication: keychain: ansible_test1102 areas: - area_id: 11 default_cost: 5 cost: 11 - area_id: 22 default_cost: 6 - process_id: 30 areas: - area_id: 11 default_cost: 5 - area_id: 22 default_cost: 6 cost: 2 default_metric: 10 transmit_delay: 2 hello_interval: 1 dead_interval: 2 retransmit_interval: 2 weight: 2 packet_size: 577 priority: 1 router_id: 2.2.2.2 demand_circuit: enable passive: disable summary_in: enable flood_reduction: disable mtu_ignore: enable external_out: disable state: rendered # # # ------------------------- # Module Execution Result # ------------------------- # # # "rendered": [ # "router ospf 27", # "area 10 authentication keychain ansi11393", # "area 10 hello-interval 2", # "router ospf 26", # "adjacency stagger 10 20", # "authentication message-digest keychain ansible1101pass", # "router ospf 10", # "authentication keychain ansible_test1102", # "area 11 default-cost 5", # "area 11 cost 11", # "area 22 default-cost 6", # "router ospf 30", # "cost 2", # "weight 2", # "passive disable", # "priority 1", # "flood-reduction disable", # "default-metric 10", # "router-id 2.2.2.2", # "demand-circuit enable", # "packet-size 577", # "transmit-delay 2", # "summary-in enable", # "external-out disable", # "dead-interval 2", # "hello-interval 1", # "retransmit-interval 2", # "mtu-ignore enable", # "area 11 default-cost 5", # "area 22 default-cost 6" # ] # Using gathered # # Before state: # ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # - name: Gather ospfv2 routes configuration cisco.iosxr.iosxr_ospfv2: state: gathered # # # ------------------------- # Module Execution Result # ------------------------- # # "gathered": { # "processes": [ # { # "areas": [ # { # "area_id": "11", # "cost": 11, # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "authentication": { # "keychain": "ansible_test1102" # }, # "process_id": "10" # }, # { # "adjacency_stagger": { # "max_adjacency": 20, # "min_adjacency": 10 # }, # "authentication": { # "message_digest": { # "keychain": "ansible1101pass" # } # }, # "process_id": "26" # }, # { # "areas": [ # { # "area_id": "10", # "authentication": { # "keychain": "ansi11393" # }, # "hello_interval": 2 # } # ], # "process_id": "27" # }, # { # "areas": [ # { # "area_id": "11", # "default_cost": 5 # }, # { # "area_id": "22", # "default_cost": 6 # } # ], # "cost": 2, # "dead_interval": 2, # "default_metric": 10, # "demand_circuit": "enable", # "external_out": "disable", # "flood_reduction": "disable", # "hello_interval": 1, # "mtu_ignore": "enable", # "packet_size": 577, # "passive": "disable", # "priority": 1, # "process_id": "30", # "retransmit_interval": 2, # "router_id": "2.2.2.2", # "summary_in": "enable", # "transmit_delay": 2, # "weight": 2 # } # ] # } # # After state: # ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 # cost 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # router ospf 26 # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 # authentication keychain ansi11393 # hello-interval 2 # ! # ! # router ospf 30 # router-id 2.2.2.2 # summary-in enable # external-out disable # cost 2 # packet-size 577 # weight 2 # passive disable # priority 1 # mtu-ignore enable # flood-reduction disable # dead-interval 2 # retransmit-interval 2 # demand-circuit enable # hello-interval 1 # transmit-delay 2 # default-metric 10 # area 11 # default-cost 5 # ! # area 22 # default-cost 6 # ! # ! # # """ RETURN = """ before: description: The configuration prior to the model invocation. returned: always type: dict sample: > The configuration returned will always be in the same format of the parameters above. after: description: The resulting configuration model invocation. returned: when changed type: dict sample: > The configuration returned will always be in the same format of the parameters above. commands: description: The set of commands pushed to the remote device. returned: always type: list sample: - "router ospf 30" - "authentication message-digest keychain 'ansible1101pass'" """ from ansible.module_utils.basic import AnsibleModule from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.argspec.ospfv2.ospfv2 import ( Ospfv2Args, ) from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.config.ospfv2.ospfv2 import ( Ospfv2, ) def main(): """ Main entry point for module execution :returns: the result form module invocation """ required_if = [ ("state", "merged", ("config",)), ("state", "replaced", ("config",)), ("state", "overridden", ("config",)), ("state", "rendered", ("config",)), ("state", "parsed", ("running_config",)), ] mutually_exclusive = [("config", "running_config")] module = AnsibleModule( argument_spec=Ospfv2Args.argument_spec, required_if=required_if, supports_check_mode=True, mutually_exclusive=mutually_exclusive, ) result = Ospfv2(module).execute_module() module.exit_json(**result) if __name__ == "__main__": main()