Three-tier architecture is a well-established software application architecture that organizes applications into three logical and physical computing tiers: the presentation tier, or user interface; the application tier, where data is processed; and the data tier, where the data associated with the application is stored and managed.
- One virtual network tied in three subnets.
- Each subnet will have one virtual machine.
- First virtual machine -> allow inbound traffic from internet only.
- Second virtual machine -> entertain traffic from first virtual machine only and can reply the same virtual machine again.
- App can connect to database and database can connect to app but database cannot connect to web.
Note: Keep main and variable files different for each component
├── main.tf // The primary entrypoint for terraform resources.
├── vars.tf // It contain the declarations for variables.
├── output.tf // It contain the declarations for outputs.
├── terraform.tfvars // The file to pass the terraform variables values.
A module is a container for multiple resources that are used together. Modules can be used to create lightweight abstractions, so that you can describe your infrastructure in terms of its architecture, rather than directly in terms of physical objects.
For the solution, we have created and used five modules:
- resourcegroup - creating resourcegroup
- networking - creating azure virtual network and required subnets
- securitygroup - creating network security group, setting desired security rules and associating them to subnets
- compute - creating availability sets, network interfaces and virtual machines
- database - creating database server and database
All the stacks are placed in the modules folder and the variable are stored under terraform.tfvars
To run the code you need to append the variables in the terraform.tfvars
Each module consists minimum two files: main.tf, vars.tf
resourcegroup and networking modules consists of one extra file named output.tf