Execute the following steps to deploy ThousandEyes Container on NFVIS using the CLI:
-
Register the ThousandEyes Docker Image

Note
|
The URL in src is provided by Add New Enterprise Agent dialog.
|
vm_lifecycle images image thousandeyes-enterprise-agent-0.33.0
src https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.33.0-nfvis.docker
locator vim_id container
properties property vnf_type
value THOUSANDEYES
!
!
-
Configure Resource Details as a Flavor
vm_lifecycle flavors flavor thousandeyes-flavor vcpus 2 memory_mb 1024 root_disk_mb 20480
!
-
Deploy the ThousandEyes Agent Container
vm_lifecycle tenants tenant admin
deployments deployment TE_DEMO
vm_group TE_DEMO
vim_vm_name TE_DEMO
locator vim_id container
image thousandeyes-enterprise-agent-0.33.0
flavor thousandeyes-flavor
bootup_time -1
config_data configuration bootstrap_config
data "{ \"env_variables\" : { \"TEAGENT_ACCOUNT_TOKEN\" : \"${TEAGENT_ACCOUNT_TOKEN}\", \"TEAGENT_INET\" : \"${TEAGENT_INET}\"} }"
template_engine VELOCITY
variable TEAGENT_ACCOUNT_TOKEN
val [ 53rettywagbuouhw06hu65767rtyuyyui ]
!
variable TEAGENT_INET
val [ 4 ]
!
!
!
-
Commit the configuration.
Upgrade ThousandEyes Agent Container Using the CLI
To upgrade the ThousandEyes agent container using CLI configurations, you have two main options:
Option 1: Register and Update the Image
-
Register the New Docker Image
Use the following command to register the newer version of the ThousandEyes agent Docker image:
vm_lifecycle images image thousandeyes-enterprise-agent-0.34.0
src https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.34.0-nfvis.docker
locator vim_id container
properties property vnf_type
value THOUSANDEYES
!
!
-
Update the Container Deployment Configuration
Update the existing container deployment to use the newly registered image:
vm_lifecycle tenants tenant admin
deployments deployment TE_DEMO
vm_group TE_DEMO
vim_vm_name TE_DEMO
locator vim_id container
image thousandeyes-enterprise-agent-0.34.0
!
-
Commit the configuration.
NFVIS will handle downloading the image and upgrading the container.
Option 2: Direct Image URL Update
You can skip the image registration step by directly providing the ThousandEyes agent container image URL. NFVIS will automatically
download the image, register it with Docker, and upgrade the container to the specified image.
vm_lifecycle tenants tenant admin
deployments deployment TE_DEMO
vm_group TE_DEMO
vim_vm_name TE_DEMO
locator vim_id container
image https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.34.0-nfvis.docker
!
Proxy Configuration
If your NFVIS is behind a proxy, ensure to configure these proxy settings. For more information, see Configuring an Enterprise Agent to Use a Proxy Server for other ThousandEyes Agent environment variables.
-
Image Registration with Proxy
vm_lifecycle images image thousandeyes-enterprise-agent-0.34.0
src https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.34.0-nfvis.docker
locator vim_id container
properties property vnf_type
value THOUSANDEYES
!
properties property http_proxy
value [ http://proxy.com ]
!
properties property https_proxy
value [ http://proxy.com ]
!
properties property no_proxy
value [ .cisco.com,10.1.1.1 ]
!
!
-
Deployment Configuration with Proxy
vm_lifecycle tenants tenant admin
deployments deployment TE_DEMO
vm_group TE_DEMO
vim_vm_name TE_DEMO
locator vim_id container
image thousandeyes-enterprise-agent-0.33.0
flavor thousandeyes-flavor1
bootup_time -1
config_data configuration bootstrap_config
data "{ \"env_variables\" : { \"TEAGENT_ACCOUNT_TOKEN\" : \"${TEAGENT_ACCOUNT_TOKEN}\", \"TEAGENT_INET\" : \"${TEAGENT_INET}\", \"http_proxy\" : \"${http_proxy}\", \"https_proxy\" : \"${https_proxy}\", \"no_proxy\" : \"${no_proxy}\"} }"
template_engine VELOCITY
variable TEAGENT_ACCOUNT_TOKEN
val [ your token goes here ]
!
variable TEAGENT_INET
val [ 4 ]
!
variable http_proxy
val [ http://proxy.com:80/ ]
!
variable https_proxy
val [ http://proxy.com:80/ ]
!
variable no_proxy
val [ .cisco.com,10.1.1.1 ]
!
!
!
Deploy ThousandEyes Container on NFVIS Using NETCONF
These NETCONF payloads are examples that can be sent to NFVIS via a NETCONF client to manage the lifecycle of the Cisco ThousandEyes
Container

Note
|
Ensure you merge these payloads into the existing configuration to avoid deleting other configurations. Refer to your NETCONF
client documentation for merging procedures.
|
Image Registration
-
From Docker Hub
<?xml version="1.0"?>
<vm_lifecycle xmlns="http://www.cisco.com/nfvis/vm_lifecycle">
<images>
<image>
<name>te_latest</name>
<src>docker://thousandeyes/enterprise-agent:latest-agent</src>
<credentials>
<username>${DOCKER_USERNAME_HERE}</username> <!--Credentials are optional-->
<password>${DOCKER_PAT}</password>
</credentials>
<properties>
<property>
<name>http_proxy</name> <!--Proxies are optional and depend on your topology-->
<value>http://example.com:80/</value>
</property>
<property>
<name>https_proxy</name>
<value>http://example.com:80/</value>
</property>
<property>
<name>vnf_type</name>
<value>THOUSANDEYES</value>
</property>
</properties>
<locator>
<vim_id>container</vim_id>
</locator>
</image>
</images>
</vm_lifecycle>
-
From ThousandEyes Webserver
<?xml version="1.0"?>
<vm_lifecycle xmlns="http://www.cisco.com/nfvis/vm_lifecycle">
<images>
<image>
<name>te_latest</name>
<src>https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.34.0-nfvis.docker</src>
<properties>
<property>
<name>http_proxy</name> <!--Proxies are optional and depend on your topology-->
<value>http://example.com:80/</value>
</property>
<property>
<name>https_proxy</name>
<value>http://example.com:80/</value>
</property>
<property>
<name>vnf_type</name>
<value>THOUSANDEYES</value>
</property>
</properties>
<locator>
<vim_id>container</vim_id>
</locator>
</image>
</images>
</vm_lifecycle>
Flavor Registration
<?xml version="1.0"?>
<vm_lifecycle xmlns="http://www.cisco.com/nfvis/vm_lifecycle">
<flavors>
<flavor>
<name>TE</name>
<vcpus>2</vcpus>
<memory_mb>1024</memory_mb>
<root_disk_mb>8192</root_disk_mb>
</flavor>
</flavors>
</vm_lifecycle>
Deployment
<?xml version="1.0" encoding="UTF-8"?>
<vm_lifecycle xmlns="http://www.cisco.com/nfvis/vm_lifecycle">
<tenants>
<tenant>
<name>admin</name>
<deployments>
<deployment>
<name>te_nfvis</name>
<vm_group>
<name>te_nfvis</name>
<image>te_latest</image>
<flavor>TE</flavor>
<bootup_time>-1</bootup_time>
<config_data>
<configuration>
<dst>bootstrap_config</dst>
<data>{
"env_variables" : {
"TEAGENT_ACCOUNT_TOKEN" : "${TEAGENT_ACCOUNT_TOKEN}",
"TEAGENT_INET" : "${TEAGENT_INET}",
"http_proxy" : "${http_proxy}",
"https_proxy" : "${https_proxy}",
"no_proxy" : "${no_proxy}"
}
}</data>
<variable>
<name>TEAGENT_INET</name>
<val>4</val>
</variable>
<variable>
<name>TEAGENT_ACCOUNT_TOKEN</name>
<val>53rettywagbuouhw06hu65767rtyuyyui</val>
</variable>
<variable>
<name>https_proxy</name>
<val>http://example.com:80/</val>
</variable>
<variable>
<name>http_proxy</name>
<val>http://example.com:80/</val>
</variable>
<variable>
<name>no_proxy</name>
<val>.example.com,1.2.3.4</val>
</variable>
</configuration>
</config_data>
</vm_group>
</deployment>
</deployments>
</tenant>
</tenants>
</vm_lifecycle>
ThousandEyes Container Deployment Upgrade on NFVIS Using NETCONF
<?xml version="1.0" encoding="UTF-8"?>
<vm_lifecycle xmlns="http://www.cisco.com/nfvis/vm_lifecycle">
<tenants>
<tenant>
<name>admin</name>
<deployments>
<deployment>
<name>te_nfvis</name> <!--The deployment name and vm_group name MUST match the existing deployment that you wish to upgrade-->
<vm_group>
<name>te_nfvis</name>
<image>https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.35.0-nfvis.docker</image> <!--Only image tag needs to be updated with URL or docker tag pointing to the new TE image-->
</vm_group>
</deployment>
</deployments>
</tenant>
</tenants>
</vm_lifecycle>
ThousandEyes Container Deployment on NFVIS Using RESTCONF
The following are sample RESTCONF payloads that can be sent to NFVIS using curl
or an equivalent client to manage the lifecycle of the Cisco ThousandEyes Container:
Image Registration
-
From Docker Hub
curl -k -v -u admin:Cisco123# -X POST 'https://172.29.91.33/restconf/data/vmlc:vm_lifecycle/images' \
--header 'Content-Type: application/yang-data+xml' \
--data '<image>
<name>thousandeyes-enterprise-agent-0.34.0</name>
<src>docker://thousandeyes/enterprise-agent:0.34.0-agent</src>
<locator>
<vim_id>container</vim_id>
</locator>
<properties>
<property>
<name>vnf_type</name>
<value>THOUSANDEYES</value>
</property>
<property>
<name>https_proxy</name> <!--Proxies are optional and depend on your topology-->
<value>http://proxy.com:80/</value>
</property>
<property>
<name>no_proxy</name>
<value>.cisco.com,10.1.1.1</value>
</property>
</properties>
</image>'
-
From ThousandEyes Webserver
curl -k -v -u admin:password -X POST 'https://nfvis_host_ip/restconf/data/vmlc:vm_lifecycle/images' \
--header 'Content-Type: application/yang-data+xml' \
--data '<image>
<name>thousandeyes-enterprise-agent-0.34.0</name>
<src>https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-0.33.0-nfvis.docker</src>
<locator>
<vim_id>container</vim_id>
</locator>
<properties>
<property>
<name>vnf_type</name>
<value>THOUSANDEYES</value>
</property>
<property>
<name>https_proxy</name> <!--Proxies are optional and depend on your topology-->
<value>http://proxy.com:80/</value>
</property>
<property>
<name>no_proxy</name>
<value>.cisco.com,10.1.1.1</value>
</property>
</properties>
</image>'
Flavor Creation
curl -k -v -u admin:password -X POST 'https://nfvis_host_ip/restconf/data/vmlc:vm_lifecycle/flavors' \
--header 'Content-Type: application/yang-data+xml' \
--data '<flavor>
<name>thousandeyes-flavor</name>
<vcpus>2</vcpus>
<memory_mb>1024</memory_mb>
<root_disk_mb>20480</root_disk_mb>
</flavor>'
ThousandEyes Agent Container Deployment
curl -k -v -u admin:password -X POST 'https://<nfvis_host_ip>/restconf/data/vmlc:vm_lifecycle/tenants/tenant=admin/deployments' \
--header 'Content-Type: application/yang-data+xml' \
--data '<deployment>
<name>TE_DEMO</name>
<vm_group>
<name>TE_DEMO</name>
<vim_vm_name>TE_DEMO</vim_vm_name>
<locator>
<vim_id>container</vim_id>
</locator>
<image>thousandeyes-enterprise-agent-0.33.0</image>
<flavor>thousandeyes-flavor</flavor>
<bootup_time>-1</bootup_time>
<config_data>
<configuration>
<dst>bootstrap_config</dst>
<data>{ "env_variables" : { "TEAGENT_ACCOUNT_TOKEN" : "${TEAGENT_ACCOUNT_TOKEN}", "TEAGENT_INET" : "${TEAGENT_INET}" } }</data>
<template_engine>VELOCITY</template_engine>
<variable>
<name>TEAGENT_ACCOUNT_TOKEN</name>
<val>53rettywagbuouhw06hu65767rtyuyyui</val>
</variable>
<variable>
<name>TEAGENT_INET</name>
<val>4</val>
</variable>
</configuration>
</config_data>
</vm_group>
</deployment>
'
ThousandEyes Container Deployment Upgrade on NFVIS Using RESTCONF
To upgrade the existing ThousandEyes container deployment with a newer container image, you need to update the deployment
configuration with the new image details. Here's a sample RESTCONF command using a Docker Hub image:
curl -k -v -u admin:password -X PUT 'https://<nfvis_host_ip>/restconf/data/vmlc:vm_lifecycle/tenants/tenant=admin/deployments/deployment=TE_DEMO/vm_group=TE_DEMO/image' \
--header 'Content-Type: application/yang-data+xml' \
--data '<image>docker://thousandeyes/enterprise-agent:0.34.0-agent</image>'

Note
|
If an upgrade fails due to issues such as an image download error, verification failure, or any other problem, the container
will continue running with the old image. However, the NFVIS configuration will reflect the latest settings. This behavior
is similar to how VM deployment updates are handled.
|