Manage devices
Configure devices on Cloudvision¶
cv_device manage devices on CloudVision:
- Support Configlets attachment
- Support Container move during provisioning
- Support device reset if required
cv_device
bases its actions on cv_facts results
The cv_device
actions are based on cv_facts results:
- Use intend approach
- No declarative action
Inputs¶
Full documentation available in module section and a lab is available in the following repository
CloudVison Portal Device compares the list of Devices in devices against cvp-facts then adds, resets, or updates them as appropriate.
- If a device is in cvp_facts but not in devices it will be reset to factory defaults in ZTP mode
- If a device is in devices but not in cvp_facts it will be provisioned
- If a device is in both devices and cvp_facts its configlets and imageBundles will be compared and updated with the version in devices if the two are different.
Warning
Device reset means devices will be erased and will run full ZTP process. Use this function with caution !
Input variables¶
- Device name.
- Parent container where to move device.
- List of configlets to apply to the device.
CVP_DEVICES:
TEAM01-SPINE1:
name: TEAM01-SPINE1
parent_container : STAGING
configlets:
- TEAM01-SPINE1
imageBundle: [] # Not yet supported
TEAM02-SPINE1:
name: TEAM02-SPINE1
parent_container: STAGING
configlets:
- TEAM02-SPINE1
imageBundle: [] # Not yet supporte
Module inputs¶
Required Inputs¶
cvp_facts
: Facts from cv_factsdevices
: List of devicesdevice_filter
: Filter to only target devices as defined in list.
Optional inputs¶
state
: Define if module shouldcreate
(default) ordelete
devices from CV
- name: "Configure devices on {{inventory_hostname}}"
arista.cvp.cv_device:
devices: "{{CVP_DEVICES}}"
cvp_facts: '{{CVP_FACTS.ansible_facts}}'
device_filter: ['TEAM']
state: present
register: CVP_DEVICES_RESULTS
Module output¶
cv_device
returns :
Generated tasks can be consumed directly by cv_tasks.
{
"msg": {
"changed": true,
"data": {
"new": [],
"reset": [],
"tasks": [
{
"currentTaskName": "Submit",
"description": "Ansible Configlet Update: on Device TEAM01-SPINE1",
"note": "",
"taskStatus": "ACTIVE",
"workOrderDetails": {
"ipAddress": "10.255.0.11",
"netElementHostName": "TEAM01-SPINE1",
"netElementId": "0c:1a:c1:ed:98:18",
"serialNumber": "6B25F852A3A3036E1ADBB4423F1E62EF",
"workOrderDetailsId": "",
"workOrderId": ""
},
"workOrderId": "8",
"workOrderState": "ACTIVE",
"workOrderUserDefinedStatus": "Pending"
}
],
"updated": [
{
"TEAM01-SPINE1": "Configlets-[u'8']"
},
{
"TEAM01-SPINE1": "Device TEAM01-SPINE1 \
imageBundle cannot be updated - Exception: imageBundle_key \
check: No imageBundle specified"
}
]
},
"failed": false
}
}
Last update:
April 28, 2021