## Description
This architecture allows you to create Azure VMs in an availability set with load balancer & LB rules behind a public IP and key vault for secret management.
This architecture is highly customizable through variables and Terraform functions, so you can easily save it as a reference architecture in the template catalog if you want your team to use it by just updating the variables.
**N.B:**
- The Terraform code is automatically generated with best practices and contains variables that you can customize to fir your needs.
- You have full control to change, add, delete resources or their configuration. The newly generated code will reflect these changes.
- You can replace some resources with Terraform modules.
> terraform apply status: successful
>
## Architecture components
Here are the components of this architecture:
- Their network interfaces, with a NAT configuration if needed
- Password for admin users are randomly generated and stored in a key vault with a restricted access
- Load balancer in front with a public IP address and custom rules
- Storage account
- LB backend address pool
## Requirements
| Name | Configuration |
| --- | --- |
| Terraform | all versions |
| Provider | Azure |
| Provider version | >= 3.108.0 |
| Access | Contributor access |
## How to use the architecture
Clone the architecture and modify the following variables according to your needs:
| Variable | Description |
| --- | --- |
| dns_name | The name that will be used by the public IP to create a public URL |
| hostname | The hostname of the VMs. It uses count.index to have different names |
| image_publisher | Information about the publisher of the image used to create the OS |
| kv_name | Key vault name |
| lb_ip_dns_name | The DNS name associated with the load balancer |
| prefix | A string added before names. This is not required, it used just to show how you can have naming conventions |
| rg_name | The name of resource group |
| tags | Tags that will be added in all resources that support them |
| vm_size | The size of the virtual machine |
| vms | Number of VMs to create |
| vnet_addr_space | The network address space of the virtual network |
| vnet_name | The name of the virtual network |
**N.B:**
- Feel free to remove the resources that are not relevant to your use-case.
- Some variables have default values, please change it if it doesn't fit your deployment.
## Maintainer(s)
You can reach out to these maintainers if you need help or assistance:
- [Brainboard team](mailto:support@brainboard.co)
Brainboard is an AI driven platform to visually design and manage cloud infrastructure, collaboratively. It's the only solution that automatically generates IaC code for any cloud provider, with an embedded CI/CD.