cv_workflow¶
Note
Always use the FQCN (Fully Qualified Collection Name) arista.avd.cv_workflow
when using this plugin.
Deploy various objects to CloudVision
Synopsis¶
The arista.avd.cv_workflow
module is an Ansible Action Plugin providing the following capabilities:
- Verify Devices are in the CloudVision inventory.
- Verify Devices are in the Inventory & Topology Studio.
- Update the Device hostname in the Inventory & Topology Studio as needed.
- Create Workspace and build, submit, abandon as needed.
- Deploy EOS configurations using "Static Configlet Studio".
- Create and associate Device and Interface Tags.
- Approve, run, cancel Change Controls as needed.
Parameters¶
Argument | Type | Required | Default | Value Restrictions | Description |
---|---|---|---|---|---|
cv_servers | list | True | None | List of hostnames or IP addresses for CloudVision instance to deploy to. | |
cv_token | str | True | None | Service account token. It is strongly recommended to use Vault for this. | |
cv_verify_certs | bool | optional | True | Verifies CloudVison server certificates. | |
configuration_dir | str | True | None | Path to directory containing .cfg files with EOS configurations. | |
structured_config_dir | str | True | None | Path to directory containing files with AVD structured configurations. If found, the serial_number or system_mac_address will be used to identify the Device on CloudVision.Any tags found in the structured configuration metadata will be applied to the Device and/or Interfaces. |
|
structured_config_suffix | str | optional | yml | File suffix for AVD structured configuration files. | |
device_list | list | True | None | List of devices to deploy. The names are used to find AVD structured configuration and EOS configuration files. | |
strict_tags | bool | optional | False | If true other tags associated with the devices will get removed. Otherwise other tags will be left as-is. |
|
skip_missing_devices | bool | optional | False | If true anything that can be deployed will get deployed. Otherwise the Workspace will be abandoned on any issue. |
|
configlet_name_template | str | optional | AVD-${hostname} | Python String Template to use for creating the configlet name for each device configuration. | |
workspace | dict | optional | None | CloudVision Workspace to create or use for the deployment. | |
name | str | optional | None | Optional name to use for the created Workspace. By default the name will be AVD <timestamp> . |
|
description | str | optional | None | Optional description to use for the created Workspace. | |
id | str | optional | None | Optional ID to use for the created Workspace. If there is already a workspace with the same ID, it must be in the 'pending' state. | |
requested_state | str | optional | built | Valid values: - pending - built - submitted - abandoned - deleted |
The requested state for the Workspace. - pending : Leave the Workspace in pending state.- built : Build the Workspace but do not submit.- submitted (default): Build and submit the Workspace.- abandoned : Build and then abandon the Workspace.Used for dry-run where no changes will be committed to CloudVision. - deleted : Build, abort and then delete the Workspace.Used for dry-run where no changes will be committed to CloudVision and the temporary Workspace will be removed to avoid "clutter". |
force | bool | optional | False | Force submit the workspace even if some devices are not actively streaming to CloudVision. | |
change_control | dict | optional | None | CloudVision Change Control to create for the deployment. | |
name | str | optional | None | Optional name to use for the created Change Control. By default the name generated by CloudVision will be kept. | |
description | str | optional | None | Optional description to use for the created Change Control. | |
requested_state | str | optional | pending approval | Valid values: - pending approval - approved - running - completed |
The requested state for the Change Control. - pending approval (default): Leave the Change Control in "pending approval" state.- approved : Approve the Change Control but do not start.- running : Approve and start the Change Control. Do not wait for the Change Control to be completed or failed.- completed : Approve and start the Change Control. Wait for the Change Control to be completed. |
timeouts | dict | optional | None | Timeouts for long running operations. May need to be adjusted for large inventories. | |
workspace_build_timeout | float | optional | 300.0 | Time to wait for Workspace build before failing. | |
change_control_creation_timeout | float | optional | 300.0 | Time to wait for Change Control creation before failing. | |
return_details | bool | optional | False | If true all details will be returned to Ansible and can be registered.For large inventories this can affect performance, so it is disabled by default. |
Notes¶
- When interacting with CVaaS the regional URL where the tenant is deployed should be used, e.g:
cv_servers: [ www.cv-prod-euwest-2.arista.io ]
To see the full list of regional URLs, please visit the cv_deploy role documentation. - To generate service accounts check cv_deploy role documentation or the CloudVision Help Center.
Examples¶
---
- name: Configuration deployment with CVP
hosts: FABRIC
connection: local
gather_facts: false
tasks:
- name: Provision CVP with AVD configuration
run_once: true
delegate_to: localhost
arista.avd.cv_workflow:
cv_servers: [ "www.arista.io" ]
cv_token: "<insert vaulted service account token here>"
# cv_verify_certs: True
configuration_dir: "{{ inventory_dir }}/intended/configs"
structured_config_dir: "{{ inventory_dir }}/intended/structured_configs"
# structured_config_suffix: "yml"
device_list: "{{ ansible_play_hosts }}"
# strict_tags: false
# skip_missing_devices: false
# configlet_name_template: "AVD-${hostname}"
workspace:
# name:
# description:
# id: <uuid or similar>
requested_state: submitted
force: True
change_control:
# name:
# description:
requested_state: "approved"
# timeouts:
# workspace_build_timeout: 300.0
# change_control_creation_timeout: 300.0
# return_details: false
Authors¶
- Arista Ansible Team (@aristanetworks)