Skip to content

Commit 236b7b5

Browse files
authored
Merge pull request #1 from data-platform-hq/init
feat: init
2 parents 61ee5fa + 3febf78 commit 236b7b5

File tree

5 files changed

+585
-3
lines changed

5 files changed

+585
-3
lines changed

README.md

Lines changed: 98 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,107 @@
1-
# Azure <> Terraform module
2-
Terraform module for creation Azure <>
1+
# Azure Naming Terraform module
2+
Terraform module for creation of [standardized](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming) naming for Azure resources.
3+
34

45
## Usage
56

67
<!-- BEGIN_TF_DOCS -->
8+
## Requirements
9+
10+
| Name | Version |
11+
|------|---------|
12+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0.0 |
13+
| <a name="requirement_azurerm"></a> [azurerm](#requirement\_azurerm) | >= 3.40.0 |
14+
15+
## Providers
16+
17+
No providers.
18+
19+
## Modules
20+
21+
No modules.
22+
23+
## Resources
24+
25+
No resources.
26+
27+
## Inputs
28+
29+
| Name | Description | Type | Default | Required |
30+
|------|-------------|------|---------|:--------:|
31+
| <a name="input_automation_accounts"></a> [automation\_accounts](#input\_automation\_accounts) | Set of unique strings to create Automation Accounts full names | `set(string)` | `[]` | no |
32+
| <a name="input_container_instances"></a> [container\_instances](#input\_container\_instances) | Set of unique strings to create Container Instances full names | `set(string)` | `[]` | no |
33+
| <a name="input_data_factories"></a> [data\_factories](#input\_data\_factories) | Set of unique strings to create Data Factories full names | `set(string)` | `[]` | no |
34+
| <a name="input_databricks_workspaces"></a> [databricks\_workspaces](#input\_databricks\_workspaces) | Set of unique strings to create Databricks Workspaces full names | `set(string)` | `[]` | no |
35+
| <a name="input_environment"></a> [environment](#input\_environment) | Environment/Subscription name | `string` | n/a | yes |
36+
| <a name="input_instance_number"></a> [instance\_number](#input\_instance\_number) | Instance number of deployment | `string` | `"1"` | no |
37+
| <a name="input_internal_load_balancers"></a> [internal\_load\_balancers](#input\_internal\_load\_balancers) | Set of unique strings to create Internal Load Balancers full names | `set(string)` | `[]` | no |
38+
| <a name="input_key_vaults"></a> [key\_vaults](#input\_key\_vaults) | Set of unique strings to create Key Vaults full names | `set(string)` | `[]` | no |
39+
| <a name="input_linux_virtual_machine_scale_sets"></a> [linux\_virtual\_machine\_scale\_sets](#input\_linux\_virtual\_machine\_scale\_sets) | Set of unique strings to create Linux Virtual Machine Scale Sets full names | `set(string)` | `[]` | no |
40+
| <a name="input_linux_virtual_machines"></a> [linux\_virtual\_machines](#input\_linux\_virtual\_machines) | Set of unique strings to create Linux Virtual Machines full names | `set(string)` | `[]` | no |
41+
| <a name="input_location"></a> [location](#input\_location) | Azure Region | `string` | n/a | yes |
42+
| <a name="input_log_analytics_workspaces"></a> [log\_analytics\_workspaces](#input\_log\_analytics\_workspaces) | Set of unique strings to create Log Analytics Workspaces full names | `set(string)` | `[]` | no |
43+
| <a name="input_mssql_databases"></a> [mssql\_databases](#input\_mssql\_databases) | Set of unique strings to create MSSQL Databases full names | `set(string)` | `[]` | no |
44+
| <a name="input_mssql_servers"></a> [mssql\_servers](#input\_mssql\_servers) | Set of unique strings to create MSSQL Servers full names | `set(string)` | `[]` | no |
45+
| <a name="input_nat_gateways"></a> [nat\_gateways](#input\_nat\_gateways) | Set of unique strings to create Nat Gateways full names | `set(string)` | `[]` | no |
46+
| <a name="input_network_interfaces"></a> [network\_interfaces](#input\_network\_interfaces) | Set of unique strings to create Network Interfaces full names | `set(string)` | `[]` | no |
47+
| <a name="input_network_security_groups"></a> [network\_security\_groups](#input\_network\_security\_groups) | Set of unique strings to create Network Security Groups full names | `set(string)` | `[]` | no |
48+
| <a name="input_private_endpoints"></a> [private\_endpoints](#input\_private\_endpoints) | Set of unique strings to create Private Endpoints full names | `set(string)` | `[]` | no |
49+
| <a name="input_project"></a> [project](#input\_project) | Name of application/workload/project | `string` | n/a | yes |
50+
| <a name="input_public_ips"></a> [public\_ips](#input\_public\_ips) | Set of unique strings to create Public IPs full names | `set(string)` | `[]` | no |
51+
| <a name="input_resource_groups"></a> [resource\_groups](#input\_resource\_groups) | Set of unique strings to create Resource Group full names | `set(string)` | `[]` | no |
52+
| <a name="input_route_tables"></a> [route\_tables](#input\_route\_tables) | Set of unique strings to create Route Tables full names | `set(string)` | `[]` | no |
53+
| <a name="input_storage_accounts"></a> [storage\_accounts](#input\_storage\_accounts) | Set of unique strings to create Storage Accounts full names | `set(string)` | `[]` | no |
54+
| <a name="input_subnets"></a> [subnets](#input\_subnets) | Set of unique strings to create Subnets full names | `set(string)` | `[]` | no |
55+
| <a name="input_virtual_networks"></a> [virtual\_networks](#input\_virtual\_networks) | Set of unique strings to create Virtual Network full names | `set(string)` | `[]` | no |
56+
57+
## Outputs
758

59+
| Name | Description |
60+
|------|-------------|
61+
| <a name="output_automation_account"></a> [automation\_account](#output\_automation\_account) | Built name of single Automation Account |
62+
| <a name="output_automation_accounts"></a> [automation\_accounts](#output\_automation\_accounts) | Built name of multiple Automation Accounts with unique particle |
63+
| <a name="output_container_instance"></a> [container\_instance](#output\_container\_instance) | Built name of single Container Instance |
64+
| <a name="output_container_instances"></a> [container\_instances](#output\_container\_instances) | Built name of multiple Container Instances with unique particle |
65+
| <a name="output_data_factories"></a> [data\_factories](#output\_data\_factories) | Built name of multiple Data Factories with unique particle |
66+
| <a name="output_data_factory"></a> [data\_factory](#output\_data\_factory) | Built name of single Data Factory |
67+
| <a name="output_databricks_workspace"></a> [databricks\_workspace](#output\_databricks\_workspace) | Built name of single Databricks Workspace |
68+
| <a name="output_databricks_workspaces"></a> [databricks\_workspaces](#output\_databricks\_workspaces) | Built name of multiple Databricks Workspaces with unique particle |
69+
| <a name="output_internal_load_balancer"></a> [internal\_load\_balancer](#output\_internal\_load\_balancer) | Built name of single Internal Load Balancer |
70+
| <a name="output_internal_load_balancers"></a> [internal\_load\_balancers](#output\_internal\_load\_balancers) | Built name of multiple Internal Load Balancers with unique particle |
71+
| <a name="output_key_vault"></a> [key\_vault](#output\_key\_vault) | Built name of single Key Vault |
72+
| <a name="output_key_vaults"></a> [key\_vaults](#output\_key\_vaults) | Built name of multiple Key Vaults with unique particle |
73+
| <a name="output_linux_virtual_machine"></a> [linux\_virtual\_machine](#output\_linux\_virtual\_machine) | Built name of single Linux Virtual Machine |
74+
| <a name="output_linux_virtual_machine_scale_set"></a> [linux\_virtual\_machine\_scale\_set](#output\_linux\_virtual\_machine\_scale\_set) | Built name of single Linux Virtual Machine Scale Set |
75+
| <a name="output_linux_virtual_machine_scale_sets"></a> [linux\_virtual\_machine\_scale\_sets](#output\_linux\_virtual\_machine\_scale\_sets) | Built name of multiple Linux Virtual Machine Scale Sets with unique particle |
76+
| <a name="output_linux_virtual_machines"></a> [linux\_virtual\_machines](#output\_linux\_virtual\_machines) | Built name of multiple Linux Virtual Machines with unique particle |
77+
| <a name="output_log_analytics_workspace"></a> [log\_analytics\_workspace](#output\_log\_analytics\_workspace) | Built name of single Log Analytics Workspace |
78+
| <a name="output_log_analytics_workspaces"></a> [log\_analytics\_workspaces](#output\_log\_analytics\_workspaces) | Built name of multiple Log Analytics Workspaces with unique particle |
79+
| <a name="output_mssql_database"></a> [mssql\_database](#output\_mssql\_database) | Built name of single MSSQL Database |
80+
| <a name="output_mssql_databases"></a> [mssql\_databases](#output\_mssql\_databases) | Built name of multiple MSSQL Databases with unique particle |
81+
| <a name="output_mssql_server"></a> [mssql\_server](#output\_mssql\_server) | Built name of single MSSQL Server |
82+
| <a name="output_mssql_servers"></a> [mssql\_servers](#output\_mssql\_servers) | Built name of multiple MSSQL Servers with unique particle |
83+
| <a name="output_nat_gateway"></a> [nat\_gateway](#output\_nat\_gateway) | Built name of single NAT Gateway |
84+
| <a name="output_nat_gateways"></a> [nat\_gateways](#output\_nat\_gateways) | Built name of multiple NAT Gateways with unique particle |
85+
| <a name="output_network_interface"></a> [network\_interface](#output\_network\_interface) | Built name of single Network Interface |
86+
| <a name="output_network_interfaces"></a> [network\_interfaces](#output\_network\_interfaces) | Built name of multiple Network Interfaces with unique particle |
87+
| <a name="output_network_security_group"></a> [network\_security\_group](#output\_network\_security\_group) | Built name of single Network Security Group |
88+
| <a name="output_network_security_groups"></a> [network\_security\_groups](#output\_network\_security\_groups) | Built name of multiple Network Security Groups with unique particle |
89+
| <a name="output_private_endpoint"></a> [private\_endpoint](#output\_private\_endpoint) | Built name of single Private Endpoint |
90+
| <a name="output_private_endpoints"></a> [private\_endpoints](#output\_private\_endpoints) | Built name of multiple Private Endpoints with unique particle |
91+
| <a name="output_public_ip"></a> [public\_ip](#output\_public\_ip) | Built name of single Public IP |
92+
| <a name="output_public_ips"></a> [public\_ips](#output\_public\_ips) | Built name of multiple Public IPs with unique particle |
93+
| <a name="output_resource_group"></a> [resource\_group](#output\_resource\_group) | Built name of single Resource Group |
94+
| <a name="output_resource_groups"></a> [resource\_groups](#output\_resource\_groups) | Built name of multiple Resource Groups with unique particle |
95+
| <a name="output_route_table"></a> [route\_table](#output\_route\_table) | Built name of single Route Table |
96+
| <a name="output_route_tables"></a> [route\_tables](#output\_route\_tables) | Built name of multiple Route Tables with unique particle |
97+
| <a name="output_storage_account"></a> [storage\_account](#output\_storage\_account) | Built name of single Storage Account |
98+
| <a name="output_storage_accounts"></a> [storage\_accounts](#output\_storage\_accounts) | Built name of multiple Storage Accounts with unique particle |
99+
| <a name="output_subnet"></a> [subnet](#output\_subnet) | Built name of single Subnet |
100+
| <a name="output_subnets"></a> [subnets](#output\_subnets) | Built name of multiple Subnets with unique particle |
101+
| <a name="output_virtual_network"></a> [virtual\_network](#output\_virtual\_network) | Built name of single Virtual Network |
102+
| <a name="output_virtual_networks"></a> [virtual\_networks](#output\_virtual\_networks) | Built name of multiple Virtual Networks with unique particle |
8103
<!-- END_TF_DOCS -->
9104

10105
## License
11106

12-
Apache 2 Licensed. For more information please see [LICENSE](https://github.com/data-platform-hq/terraform-azurerm<>/tree/master/LICENSE)
107+
Apache 2 Licensed. For more information please see [LICENSE](https://github.com/data-platform-hq/terraform-azurerm-naming/tree/main/LICENSE)

main.tf

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
locals {
2+
# Resource Groups
3+
resource_group = substr(join("-", compact(["rg", var.project, var.environment, var.location, var.instance_number])), 0, 90)
4+
resource_groups = { for item in var.resource_groups : item => substr(join("-", compact(["rg", var.project, item, var.environment, var.location, var.instance_number])), 0, 90) }
5+
6+
# Virtual Networks
7+
virtual_network = substr(join("-", compact(["vnet", var.project, var.environment, var.location, var.instance_number])), 0, 64)
8+
virtual_networks = { for item in var.virtual_networks : item => substr(join("-", compact(["vnet", var.project, item, var.environment, var.location, var.instance_number])), 0, 64) }
9+
10+
# Subnets
11+
subnet = substr(join("-", compact(["snet", var.project, var.environment, var.location, var.instance_number])), 0, 80)
12+
subnets = { for item in var.subnets : item => substr(join("-", compact(["snet", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
13+
14+
# Network Security Groups
15+
network_security_group = substr(join("-", compact(["nsg", var.project, var.environment, var.location, var.instance_number])), 0, 80)
16+
network_security_groups = { for item in var.network_security_groups : item => substr(join("-", compact(["nsg", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
17+
18+
# Route Tables
19+
route_table = substr(join("-", compact(["rt", var.project, var.environment, var.location, var.instance_number])), 0, 80)
20+
route_tables = { for item in var.route_tables : item => substr(join("-", compact(["rt", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
21+
22+
# NAT Gateway
23+
nat_gateway = substr(join("-", compact(["ng", var.project, var.environment, var.location, var.instance_number])), 0, 80)
24+
nat_gateways = { for item in var.nat_gateways : item => substr(join("-", compact(["ng", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
25+
26+
# Public IP
27+
public_ip = substr(join("-", compact(["pip", var.project, var.environment, var.location, var.instance_number])), 0, 80)
28+
public_ips = { for item in var.public_ips : item => substr(join("-", compact(["pip", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
29+
30+
# Private Endpoints
31+
private_endpoint = substr(join("-", compact(["pep", var.project, var.environment, var.location, var.instance_number])), 0, 80)
32+
private_endpoints = { for item in var.private_endpoints : item => substr(join("-", compact(["pep", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
33+
34+
# Network Interfaces
35+
network_interface = substr(join("-", compact(["nic", var.project, var.environment, var.location, var.instance_number])), 0, 80)
36+
network_interfaces = { for item in var.network_interfaces : item => substr(join("-", compact(["nic", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
37+
38+
# Internal Load Balancer
39+
internal_load_balancer = substr(join("-", compact(["lbi", var.project, var.environment, var.location, var.instance_number])), 0, 80)
40+
internal_load_balancers = { for item in var.internal_load_balancers : item => substr(join("-", compact(["lbi", var.project, item, var.environment, var.location, var.instance_number])), 0, 80) }
41+
42+
# Linux Virtual Machine Scale Sets
43+
linux_virtual_machine_scale_set = substr(join("-", compact(["vmss", var.project, var.environment, var.location, var.instance_number])), 0, 64)
44+
linux_virtual_machine_scale_sets = { for item in var.linux_virtual_machine_scale_sets : item => substr(join("-", compact(["vmss", var.project, item, var.environment, var.location, var.instance_number])), 0, 64) }
45+
46+
# Linux Virtual Machine Scale Sets
47+
linux_virtual_machine = substr(join("-", compact(["vm", var.project, var.environment, var.location, var.instance_number])), 0, 64)
48+
linux_virtual_machines = { for item in var.linux_virtual_machines : item => substr(join("-", compact(["vm", var.project, item, var.environment, var.location, var.instance_number])), 0, 64) }
49+
50+
# Automation Account
51+
automation_account = substr(join("-", compact(["aa", var.project, var.environment, var.location, var.instance_number])), 0, 50)
52+
automation_accounts = { for item in var.automation_accounts : item => substr(join("-", compact(["aa", var.project, item, var.environment, var.location, var.instance_number])), 0, 50) }
53+
54+
# Log Analytics Workspace
55+
log_analytics_workspace = substr(join("-", compact(["log", var.project, var.environment, var.location, var.instance_number])), 0, 63)
56+
log_analytics_workspaces = { for item in var.log_analytics_workspaces : item => substr(join("-", compact(["log", var.project, item, var.environment, var.location, var.instance_number])), 0, 63) }
57+
58+
# Key Vaults
59+
key_vault = substr(join("-", compact(["kv", var.project, substr(var.environment, 0, 1), local.shorthanded_region_names[(var.location)], var.instance_number])), 0, 24)
60+
key_vaults = { for item in var.key_vaults : item => substr(join("-", compact(["kv", var.project, item, substr(var.environment, 0, 1), local.shorthanded_region_names[(var.location)], var.instance_number])), 0, 24) }
61+
62+
# Storage Accounts
63+
storage_account = substr(join("", compact(["st", var.project, substr(var.environment, 0, 1), local.shorthanded_region_names[(var.location)], var.instance_number])), 0, 24)
64+
storage_accounts = { for item in var.storage_accounts : item => substr(join("", compact(["st", var.project, item, substr(var.environment, 0, 1), local.shorthanded_region_names[(var.location)], var.instance_number])), 0, 24) }
65+
66+
# Databricks Workspace
67+
databricks_workspace = substr(join("-", compact(["dbw", var.project, var.environment, var.location, var.instance_number])), 0, 30)
68+
databricks_workspaces = { for item in var.databricks_workspaces : item => substr(join("-", compact(["dbw", var.project, item, var.environment, var.location, var.instance_number])), 0, 30) }
69+
70+
# MSSQL Servers
71+
mssql_server = substr(join("-", compact(["sql", var.project, var.environment, var.location, var.instance_number])), 0, 63)
72+
mssql_servers = { for item in var.mssql_servers : item => substr(join("-", compact(["sql", var.project, item, var.environment, var.location, var.instance_number])), 0, 63) }
73+
74+
# MSSQL Databases
75+
mssql_database = substr(join("-", compact(["sqldb", var.project, var.environment, var.location, var.instance_number])), 0, 128)
76+
mssql_databases = { for item in var.mssql_databases : item => substr(join("-", compact(["sqldb", var.project, item, var.environment, var.location, var.instance_number])), 0, 128) }
77+
78+
# Container Instance
79+
container_instance = substr(join("-", compact(["ci", var.project, var.environment, var.location, var.instance_number])), 0, 63)
80+
container_instances = { for item in var.container_instances : item => substr(join("-", compact(["ci", var.project, item, var.environment, var.location, var.instance_number])), 0, 63) }
81+
82+
# Data Factory
83+
data_factory = substr(join("-", compact(["adf", var.project, var.environment, var.location, var.instance_number])), 0, 63)
84+
data_factories = { for item in var.data_factories : item => substr(join("-", compact(["adf", var.project, item, var.environment, var.location, var.instance_number])), 0, 63) }
85+
}
86+
87+
locals {
88+
shorthanded_region_names = {
89+
eastus = "eus"
90+
eastus2 = "eus2"
91+
westus = "wus"
92+
westus2 = "wus2"
93+
westus3 = "wus3"
94+
centralus = "cus"
95+
southcentralus = "scus"
96+
canadacentral = "cac"
97+
westeurope = "weu"
98+
northeurope = "neu"
99+
germanywestcentral = "gwc"
100+
}
101+
}

0 commit comments

Comments
 (0)