in src/terraform/providers/terraform-provider-avere/restore_backup.go [177:284]
func getVfxtBase() string {
return `// customize the simple VM by editing the following local variables
locals {
// the region of the deployment
location = "eastus"
vm_admin_username = "azureuser"
// use either SSH Key data or admin password, if ssh_key_data is specified
// then admin_password is ignored
vm_admin_password = "ReplacePassword$"
// if you use SSH key, ensure you have ~/.ssh/id_rsa with permission 600
// populated where you are running terraform
vm_ssh_key_data = null //"ssh-rsa AAAAB3...."
// virtual network details
virtual_network_resource_group = "network_resource_group"
virtual_network_name = "vnet_name"
virtual_network_subnet_name = "subnet_name"
// vfxt details
vfxt_resource_group_name = "vfxt_resource_group"
// if you are running a locked down network, set controller_add_public_ip to false
controller_add_public_ip = false
// advanced scenario: put the resource groups hosting any storage accounts that will be a cloud filer
alternative_resource_groups = []
}
terraform {
required_version = ">= 0.14.0"
required_providers {
avere = {
source = "hashicorp/avere"
version = ">=1.0.0"
}
}
}
provider "azurerm" {
features {}
}
// the vfxt controller
module "vfxtcontroller" {
source = "github.com/Azure/Avere/src/terraform/modules/controller3"
resource_group_name = local.vfxt_resource_group_name
create_resource_group = true
location = local.location
admin_username = local.vm_admin_username
admin_password = local.vm_admin_password
ssh_key_data = local.vm_ssh_key_data
add_public_ip = local.controller_add_public_ip
alternative_resource_groups = local.alternative_resource_groups
// network details
virtual_network_resource_group = local.network_resource_group_name
virtual_network_name = local.virtual_network_name
virtual_network_subnet_name = local.virtual_network_subnet_name
}
resource "avere_vfxt" "vfxt" {
controller_address = module.vfxtcontroller.controller_address
controller_admin_username = module.vfxtcontroller.controller_username
// ssh key takes precedence over controller password
controller_admin_password = local.vm_ssh_key_data != null && local.vm_ssh_key_data != "" ? "" : local.vm_admin_password
// terraform is not creating the implicit dependency on the controller module
// otherwise during destroy, it tries to destroy the controller at the same time as vfxt cluster
// to work around, add the explicit dependency
depends_on = [
module.vfxtcontroller,
]
// azure information
location = local.location
azure_resource_group = local.vfxt_resource_group_name
azure_network_resource_group = local.network_resource_group_name
azure_network_name = local.virtual_network_name
azure_subnet_name = local.virtual_network_subnet_name
// vFXT settings
%s
// user settings
%s
// core filer junctions
%s
// cloud filer junctions
%s
}
output "controller_username" {
value = module.vfxtcontroller.controller_username
}
output "controller_address" {
value = module.vfxtcontroller.controller_address
}
output "ssh_command_with_avere_tunnel" {
value = "ssh -L8443:${avere_vfxt.vfxt.vfxt_management_ip}:443 ${module.vfxtcontroller.controller_username}@${module.vfxtcontroller.controller_address}"
}
output "management_ip" {
value = avere_vfxt.vfxt.vfxt_management_ip
}
output "mount_addresses" {
value = tolist(avere_vfxt.vfxt.vserver_ip_addresses)
}
`
}