junipernetworks.junos.junos_ospfv3 – OSPFv3 resource module

Note

This plugin is part of the junipernetworks.junos collection (version 1.3.0).

To install it use: ansible-galaxy collection install junipernetworks.junos.

To use it in a playbook, specify: junipernetworks.junos.junos_ospfv3.

New in version 1.2.0: of junipernetworks.junos

Synopsis

  • This module manages global OSPFv3 configuration on devices running Juniper JUNOS.

Note

This module has a corresponding action plugin.

Requirements

The below requirements are needed on the host that executes this module.

  • ncclient (>=v0.6.4)

  • xmltodict (>=0.12.0)

Parameters

Parameter Choices/Defaults Comments
config
list / elements=dictionary
A list of OSPFv3 process configuration.
areas
list / elements=dictionary
A list of OSPFv3 areas' configuration.
area_id
string / required
The Area ID as an integer or IP Address.
area_range
string
Configure an address range for the area.
interfaces
list / elements=dictionary
List of interfaces in this area.
authentication
dictionary
Specify authentication type
type
dictionary
Type of authentication to use.
bandwidth_based_metrics
list / elements=dictionary
Specify list of bandwidth based metrics
bandwidth
string
    Choices:
  • 1g
  • 10g
BW to apply metric to.
metric
integer
Specify metric
flood_reduction
boolean
    Choices:
  • no
  • yes
Enable flood reduction.
metric
integer
Metric applied to the interface.
name
string / required
Name of the interface.
passive
boolean
    Choices:
  • no
  • yes
Specify passive
priority
integer
Priority for the interface.
timers
dictionary
Specify timers
dead_interval
integer
Dead interval (seconds).
hello_interval
integer
Hello interval (seconds).
poll_interval
integer
Poll interval (seconds).
retransmit_interval
integer
Retransmit interval (seconds).
transit_delay
integer
Transit delay (seconds).
stub
dictionary
Settings for configuring the area as a stub.
default_metric
integer
Metric for the default route in this area.
set
boolean
    Choices:
  • no
  • yes
Configure the area as a stub.
external_preference
integer
Preference of external routes.
overload
dictionary
Specify time for overload mode reset
timeout
integer
Time after which overload mode is reset (seconds).
preference
integer
Preference of internal routes.
prefix_export_limit
integer
Maximum number of external prefixes that can be exported.
reference_bandwidth
string
    Choices:
  • 1g
  • 10g
Bandwidth for calculating metric defaults.
rfc1583compatibility
boolean
    Choices:
  • no
  • yes
Set RFC1583 compatibility
router_id
string / required
The OSPFv3 router id.
spf_options
dictionary
Configure options for SPF.
delay
integer
Time to wait before running an SPF (seconds).
holddown
integer
Time to hold down before running an SPF (seconds).
rapid_runs
integer
Number of maximum rapid SPF runs before holddown (seconds).
running_config
string
This option is used only with state parsed.
The value of this option should be the output received from the Junos device by executing the command B(show protocols ospf.
The state parsed reads the configuration from 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 parsed key within the result
state
string
    Choices:
  • merged ←
  • replaced
  • overridden
  • deleted
  • gathered
  • rendered
  • parsed
The state the configuration should be left in.

Notes

Note

  • This module requires the netconf system service be enabled on the device being managed.

  • This module works with connection netconf. See the Junos OS Platform Options.

  • Tested against JunOS v18.4R1

Examples

# Using merged
#
# Before state
# ------------
#
# admin# show protocols ospf3

- name: Merge Junos OSPFv3 config
  junipernetworks.junos.junos_ospfv3:
    config:
    - router_id: 10.200.16.75
      areas:
        - area_id: 0.0.0.100
          stub:
            default_metric: 200
            set: true
          interfaces:
            - name: so-0/0/0.0
              priority: 3
              metric: 5
    state: merged

# After state
# -----------
#
# adimn# show protocols ospf3
# area 0.0.0.100 {
#     stub default-metric 200;
#     interface so-0/0/0.0 {
#         metric 5;
#         priority 3;
#     }
# }
# Using replaced
#
# Before state
# ------------
#
# adimn# show protocols ospf3
# area 0.0.0.100 {
#     stub default-metric 200;
#     interface so-0/0/0.0 {
#         metric 5;
#         priority 3;
#     }
# }
- name: Replace Junos OSPFv3 config
  junipernetworks.junos.junos_ospfv3:
   config:
     - router_id: 10.200.16.75
       areas:
         - area_id: 0.0.0.100
           interfaces:
             - name: so-0/0/0.0
   state: replaced

# After state
# -----------
#
# admin# show protocols ospf3
# area 0.0.0.100 {
#     interface so-0/0/0.0;
# }
# Using overridden
#
# Before state
# ------------
#
# admin# show protocols ospf3
# area 0.0.0.100 {
#     interface so-0/0/0.0;
# }
- name: Override Junos OSPFv3 config
  junipernetworks.junos.junos_ospfv3:
  config:
    - router_id: 10.200.16.75
      areas:
        - area_id: 0.0.0.100
          stub:
            default_metric: 200
            set: true
          interfaces:
            - name: so-0/0/0.0
              priority: 3
              metric: 5
              flood_reduction: true
              passive: true
        - area_id: 0.0.0.200
          interfaces:
            - name: ge-1/1/0.0
            - name: ge-2/2/0.0
  state: overridden

# After state
# -----------
#
# admin# show protocols ospf3
# area 0.0.0.100 {
#     stub default-metric 200;
#     interface so-0/0/0.0 {
#         passive;
#         metric 5;
#         priority 3;
#         flood-reduction;
#     }
# }
# area 0.0.0.200 {
#     interface ge-1/1/0.0;
#     interface ge-2/2/0.0;
# }
#
# Using deleted
#
# Before state
# ------------
#
# adimn# show protocols ospf3
# area 0.0.0.100 {
#     stub default-metric 200;
#     interface so-0/0/0.0 {
#         metric 5;
#         priority 3;
#     }
# }

- name: Delete Junos OSPFv3 config
  junipernetworks.junos.junos_ospfv3:
    config:
      - router_id: 10.200.16.75
        areas:
          - area_id: 0.0.0.100
            interfaces:
              - name: so-0/0/0.0
    state: deleted

# After state
# -----------
#
# admin# show protocols ospf3
# Using gathered
#
# Before state
# ------------
#
# adimn# show protocols ospf3
# area 0.0.0.100 {
#     stub default-metric 200;
#     interface so-0/0/0.0 {
#         passive;
#         metric 5;
#         priority 3;
#         flood-reduction;
#     }
# }
# area 0.0.0.200 {
#     interface ge-1/1/0.0;
#     interface ge-2/2/0.0;
# }

- name: Gather Junos OSPFv3 config
  junipernetworks.junos.junos_ospfv3:
    config:
    state: gathered
#
#
# -------------------------
# Module Execution Result
# -------------------------
#
#    "gathered": {
#             "areas": [
#                 {
#                     "area_id": "0.0.0.100",
#                     "interfaces": [
#                         {
#                             "flood_reduction": true,
#                             "metric": 5,
#                             "name": "so-0/0/0.0",
#                             "passive": true,
#                             "priority": 3
#                         }
#                     ],
#                     "stub": {
#                         "default_metric": 200,
#                         "set": true
#                     }
#                 },
#                 {
#                     "area_id": "0.0.0.200",
#                     "interfaces": [
#                         {
#                             "name": "ge-1/1/0.0"
#                         },
#                         {
#                             "name": "ge-2/2/0.0"
#                         }
#                     ]
#                 }
#             ],
#             "router_id": "10.200.16.75"
#         }
#
# Using rendered
#
#
- name: Render the commands for provided  configuration
  junipernetworks.junos.junos_ospfv3:
    config:
    - router_id: 10.200.16.75
      areas:
        - area_id: 0.0.0.100
          stub:
            default_metric: 200
            set: true
          interfaces:
            - name: so-0/0/0.0
              priority: 3
              metric: 5
              flood_reduction: true
              passive: true
        - area_id: 0.0.0.200
          interfaces:
            - name: ge-1/1/0.0
            - name: ge-2/2/0.0
    state: rendered

#
#
# -------------------------
# Module Execution Result
# -------------------------
#
#
# "rendered": "
# <nc:protocols
#     xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
#     <nc:ospf3>
#         <nc:area>
#             <nc:name>0.0.0.100</nc:name>
#             <nc:interface>
#                 <nc:name>so-0/0/0.0</nc:name>
#                 <nc:priority>3</nc:priority>
#                 <nc:flood-reduction/>
#                 <nc:metric>5</nc:metric>
#                 <nc:passive/>
#             </nc:interface>
#             <nc:stub>
#                 <nc:default-metric>200</nc:default-metric>
#             </nc:stub>
#         </nc:area>
#         <nc:area>
#             <nc:name>0.0.0.200</nc:name>
#             <nc:interface>
#                 <nc:name>ge-1/1/0.0</nc:name>
#             </nc:interface>
#             <nc:interface>
#                 <nc:name>ge-2/2/0.0</nc:name>
#             </nc:interface>
#         </nc:area>
#     </nc:ospf3>
# </nc:protocols>"
#
# Using parsed
# parsed.cfg
# ------------
# <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.4R1/junos">
# <data>
# <configuration xmlns="http://xml.juniper.net/xnm/1.1/xnm"
#      junos:commit-seconds="1601355317" junos:commit-localtime="2020-09-29 04:55:17 UTC" junos:commit-user="rohit">
#     <version>18.4R1-S2.4</version>
#     <interfaces>
#         <interface>
#             <name>ge-0/0/0</name>
#             <description>Configured by Ansi-Team</description>
#         </interface>
#         <interface>
#             <name>gr-0/0/0</name>
#             <description>Configured Manually</description>
#         </interface>
#         <interface>
#             <name>fxp0</name>
#             <unit>
#                 <name>0</name>
#                 <family>
#                     <inet>
#                         <dhcp>
#                         </dhcp>
#                     </inet>
#                 </family>
#             </unit>
#         </interface>
#     </interfaces>
#     <protocols>
#         <ospf3>
#             <area>
#                 <name>0.0.0.100</name>
#                 <stub>
#                     <default-metric>200</default-metric>
#                 </stub>
#                 <interface>
#                     <name>so-0/0/0.0</name>
#                     <passive>
#                     </passive>
#                     <metric>5</metric>
#                     <priority>3</priority>
#                     <flood-reduction/>
#                 </interface>
#             </area>
#             <area>
#                 <name>0.0.0.200</name>
#                 <interface>
#                     <name>ge-1/1/0.0</name>
#                 </interface>
#                 <interface>
#                     <name>ge-2/2/0.0</name>
#                 </interface>
#             </area>
#         </ospf3>
#     </protocols>
#     <routing-options>
#         <router-id>10.200.16.75</router-id>
#     </routing-options>
# </configuration>
# <database-status-information>
# <database-status>
# <user>rohit</user>
# <terminal>pts/0</terminal>
# <pid>38210</pid>
# <start-time junos:seconds="1601354977">2020-09-29 04:49:37 UTC</start-time>
# <idle-time junos:seconds="546">00:09:06</idle-time>
# <edit-path>[edit]</edit-path>
# </database-status>
# </database-status-information>
# </data>
# </rpc-reply>

- name: Parsed the device configuration to get output commands
  junipernetworks.junos.junos_ospfv3:
    running_config: "{{ lookup('file', './parsed.cfg') }}"
    state: parsed
#
#
# -------------------------
# Module Execution Result
# -------------------------
#
#
# "parsed": [
#         {
#             "areas": [
#                 {
#                     "area_id": "0.0.0.100",
#                     "interfaces": [
#                         {
#                             "flood_reduction": true,
#                             "metric": 5,
#                             "name": "so-0/0/0.0",
#                             "passive": true,
#                             "priority": 3
#                         }
#                     ],
#                     "stub": {
#                         "default_metric": 200,
#                         "set": true
#                     }
#                 },
#                 {
#                     "area_id": "0.0.0.200",
#                     "interfaces": [
#                         {
#                             "name": "ge-1/1/0.0"
#                         },
#                         {
#                             "name": "ge-2/2/0.0"
#                         }
#                     ]
#                 }
#             ],
#             "router_id": "10.200.16.75"
#         }
#     ]
#

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
after
dictionary
when changed
The resulting configuration model invocation.

Sample:
The configuration returned will always be in the same format of the parameters above.
before
dictionary
always
The configuration prior to the model invocation.

Sample:
The configuration returned will always be in the same format of the parameters above.
commands
list / elements=string
always
The set of commands pushed to the remote device.

Sample:
['<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> <nc:ospf3 delete="delete"/> <nc:ospf3> <nc:area> <nc:name>0.0.0.100</nc:name> <nc:interface> <nc:name>so-0/0/0.0</nc:name> <nc:priority>3</nc:priority> <nc:flood-reduction/> <nc:metric>5</nc:metric> <nc:passive/> </nc:interface> <nc:stub> <nc:default-metric>200</nc:default-metric> </nc:stub> </nc:area> <nc:area> <nc:name>0.0.0.200</nc:name> <nc:interface> <nc:name>ge-1/1/0.0</nc:name> </nc:interface> <nc:interface> <nc:name>ge-2/2/0.0</nc:name> </nc:interface> </nc:area> </nc:ospf3> </nc:protocols>", " <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> <nc:router-id delete="delete"/> <nc:router-id>10.200.16.75</nc:router-id> </nc:routing-options>', 'xml 2', 'xml 3']


Authors

  • Rohit Thakur (@rohitthakur2590)