/cvp-ansible-provisioning

Terraform + ansible module to provision CVP on servers, with a particular focus on cloud deployments.

Primary LanguageHCLApache License 2.0Apache-2.0

CVP Ansible Provisioning

Terraform + ansible module to provision CVP on servers, with particular focus on cloud deployments. It's primarily used by cvp-in-gcp and cvp-in-aws and hasn't been tested on standalone deployments.

It works by connecting to a server (or cluster) and installing all necessary CVP packages. It's been designed to be provider-agnostic and reusable.

Inputs

Name Description Type Default Required
cloud_provider Cloud provider where the instances are running. Used on provider-specific steps during provisioning. string n/a yes
cvp_download_token Arista Portal token used to download CVP. May be obtained on https://www.arista.com/en/users/profile under Portal Access. string n/a yes
cvp_enable_advanced_login_options Whether to enable advanced login options on CVP. bool false no
cvp_ingest_key Key that will be used to authenticate devices to CVP. string n/a yes
cvp_install_size CVP installation size. string null no
cvp_k8s_cluster_network Internal network that will be used inside the k8s cluster. Applies only to 2021.1.0+. string n/a yes
cvp_version CVP version to install on the cluster. string n/a yes
vm VM configuration.
list(object({
disk = object({
data = object({
device = string,
mountpoint = optional(string),
id = optional(string)
})
}),
ssh = object({
username = string,
password = optional(string),
public_key = optional(string),
public_key_path = optional(string),
private_key = string,
private_key_path = string
}),
bootstrap = optional(object({
username = optional(string),
password = optional(string),
private_key_path = optional(string)
})),
cpu = object({
number = number,
})
memory = object({
number = number,
}),
network = object({
private = object({
address = string,
interface = optional(string),
subnet = object({
netmask = string,
default_route = string
})
}),
public = object({
address = string
})
}),
config = optional(object({
dns = optional(string),
ntp = string,
hostname = optional(string)
}))
}))
n/a yes

Outputs

Name Description
cluster_node VM configuration.
cluster_node_data Data obtained from running instances.
cluster_ssh_user Users that can be used to ssh into the VMs.
cvp_ingest_key Key that will be used to authenticate devices to CVP.