Terraform | Deploy a brand new Avi Controller (standalone or cluster) in vCenter environment and boostrap it.
- Terraform installed in the orchestrator VM
- environment variables:
export TF_VAR_vsphere_username=******
export TF_VAR_vsphere_password=******
export TF_VAR_avi_old_password=******
export TF_VAR_avi_controller_url=****** # defines the url where Avi controller OVA image will be downloaded
- If you don't know a URL to download Avi, you can always run 'python3 -m http.server' in the folder where you have Avi ova controller downloaded.
- Avi ova controller can be downloaded at customerconnect.vmware.com
Terraform Plan has/have been tested against:
- how to install
https://learn.hashicorp.com/tutorials/terraform/install-cli
- version tested
Terraform v1.0.6
on linux_amd64
+ provider registry.terraform.io/hashicorp/null v3.1.0
+ provider registry.terraform.io/hashicorp/template v2.2.0
+ provider registry.terraform.io/hashicorp/vsphere v2.0.2
controller-22.1.4-9196.ova
- All the variables are stored in each folder in the variables.tf file.
- Spin up n Avi Controller vCenter environment:
- if var.dhcp is true, VM(s) will obtain IPs through DHCP
- if var.dhcp is false, VM(s) will obtain IP configuration through:
- IP(s) via var.avi_ip4_addresses ("10.206.112.55, 10.206.112.56, 10.206.112.57")
- Netmask via var.network_mask ("255.255.252.0")
- Gateway via var.gateway4 ("10.206.112.1")
- if var.cluster is false, 1 VM controller will be deployed
- if var.cluster is true, 3 VMs controller will be deployed and configured as a cluster
git clone https://github.com/tacobayle/tfVmwAviController
cd tfVmwAviController/01_infra
# initialize your variables in variables.tf
terraform init
terraform apply -auto-approve
- update admin password:
- if var.avi_password is defined it will be used to configure Avi password and Avi passphrase
- if var.avi_password is not defined a random password will be generated and used to configure Avi password and Avi passphrase, it will be displayed at the end
# initialize your variables in variables.tf
cd ../02_avi_username; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json
- Configure Avi System config:
- DNS servers via var.avi_dns_server_ips ("8.8.8.8, 10.206.8.130, 10.206.8.131")
- NTP servers via var.avi_ntp_server_ips ("10.206.8.130, 10.206.8.131, 10.206.8.132")
# initialize your variables in variables.tf
cd ../03_avi_config; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json
- Configure Avi cluster (if var.cluster is true):
- Avi cluster will be configured
- A sanity check will make sure the cluster has been configured properly
# initialize your variables in variables.tf
cd ../04_avi_cluster; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json
- Configure Avi cloud (vcenter type) without IPAM and without DNS profile
- Avi cloud will be configured
- Default Service Engine Group will be updated
# initialize your variables in variables.tf
cd ../05_avi_vcenter_cc; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json
- Configure BGP parameters in a VRF
- BGP will be enabled
- BGP peers will be configured
# initialize your variables in variables.tf
cd ../06_vrf_bgp; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json
- Configure Avi VS without IPAM and without DNS profile
- Avi application profile will be configured
- Avi network profile will be configured
- Avi pool profile will be configured
- Avi vs-vip will be configured
- Avi vs will be configured
# initialize your variables in variables.tf
cd ../07_avi_vs; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json
- Configure Avi VS without IPAM and without DNS profile advertised by BGP
- Avi application profile will be configured
- Avi network profile will be configured
- Avi pool profile will be configured
- Avi vs-vip will be configured
- Avi vs will be configured
# initialize your variables in variables.tf
cd ../07_avi_vs; terraform init; terraform apply -auto-approve -no-color -var-file=../controllers.json -var-file=../.password.json