cisco.nso.nso_config – Manage Cisco NSO configuration and service synchronization.

Note

This plugin is part of the cisco.nso collection (version 1.0.3).

To install it use: ansible-galaxy collection install cisco.nso.

To use it in a playbook, specify: cisco.nso.nso_config.

Synopsis

  • This module provides support for managing configuration in Cisco NSO and can also ensure services are in sync.

Requirements

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

  • Cisco NSO version 3.4.12 or higher, 4.2.7 or higher, 4.3.8 or higher, 4.4.3 or higher, 4.5 or higher.

Parameters

Parameter Choices/Defaults Comments
commit_flags
list / elements=string
A list containing commit flags. See the API documentation for supported commit flags. https://developer.cisco.com/docs/nso/guides/#!life-cycle-operations-how-to-manipulate-existing-services-and-devices/commit-flags-and-device-service-actions
data
dictionary / required
NSO data in format as | display json converted to YAML. List entries can be annotated with a __state entry. Set to in-sync/deep-in-sync for services to verify service is in sync with the network. Set to absent in list entries to ensure they are deleted if they exist in NSO.
password
string / required
NSO password
timeout
integer
Default:
300
JSON-RPC request timeout in seconds
url
string / required
NSO JSON-RPC URL, http://localhost:8080/jsonrpc
username
string / required
NSO username
validate_certs
boolean
    Choices:
  • no ←
  • yes
When set to true, validates the SSL certificate of NSO when using SSL

See Also

See also

Cisco DevNet NSO Sandbox

Provides a reservable pod with NSO, virtual network topology simulated with Cisco CML and a Linux host running Ansible

NSO Developer Resources on DevNet

Documentation for getting started using NSO

NSO Developer Hub

Collaboration community portal for NSO developers

NSO Developer Github

Code for NSO on Github

Examples

- name: CREATE DEVICE IN NSO
  cisco.nso.nso_config:
    url: https://10.10.20.49/jsonrpc
    username: developer
    password: C1sco12345
    data:
      tailf-ncs:devices:
        device:
        - address: 10.10.20.175
          description: CONFIGURED BY ANSIBLE!
          name: dist-rtr01
          authgroup: "labadmin"
          device-type:
            cli:
              ned-id: "cisco-ios-cli-6.44"
            port: "22"
            state:
              admin-state: "unlocked"

- name: ADD NEW LOOPBACK
  cisco.nso.nso_config:
    url: https://10.10.20.49/jsonrpc
    username: developer
    password: C1sco12345
    data:
        tailf-ncs:devices:
        device:
        - name: dist-rtr01
          config:
            tailf-ned-cisco-ios:interface:
                Loopback:
                - name: "1"
                  description: Created by Ansible!

- name: CONFIGURE IP ADDRESS ON LOOPBACK
  cisco.nso.nso_config:
    url: https://10.10.20.49/jsonrpc
    username: developer
    password: C1sco12345
    data:
      tailf-ncs:devices:
        device:
        - name: dist-rtr01
          config:
            tailf-ned-cisco-ios:interface:
              Loopback:
              - name: "1"
                description: Created by Ansible!
                ip:
                  address:
                    primary:
                      address: 10.10.10.10
                      mask: 255.255.255.255

- name: CONFIGURE NTP SERVER ON DEVICE
  cisco.nso.nso_config:
    url: https://10.10.20.49/jsonrpc
    username: developer
    password: C1sco12345
    data:
      tailf-ncs:devices:
        device:
        - name: dist-rtr01
          config:
            tailf-ned-cisco-ios:ntp:
              server:
                peer-list:
                  - name: 2.2.2.2

Return Values

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

Key Returned Description
changes
complex
always
List of changes

Sample:
[{'from': None, 'path': '/ncs:devices/device{dist-rtr01}/config/ios:interface/Loopback{1}/ip/address/primary/address', 'to': '10.10.10.10', 'type': 'set'}]
 
from
string
When previous value is present on value change
Previous value if any, else null

 
path
string
always
Path to value changed

commit_result
complex
always
Return values from commit operation

Sample:
[{'commit_queue': {'id': 1611776004976, 'status': 'async'}}]
 
commit_queue
dictionary
When commit-queue is set in commit_flags
Commit queue ID and status, if any

diffs
complex
always
List of sync changes

 
diff
string
always
configuration difference triggered the re-deploy

 
path
string
always
keypath to service changed



Authors

  • Claes Nästén (@cnasten)