Skip to content

Commit 4c681ea

Browse files
committed
Add terraform skeleton
1 parent 7f41b95 commit 4c681ea

9 files changed

Lines changed: 158 additions & 0 deletions

File tree

terraform/api_server.tf

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
resource "azurerm_service_plan" "api_server_service_plan" {
2+
name = "${local.resource_prefix}-api-server-serviceplan"
3+
resource_group_name = azurerm_resource_group.rg.name
4+
location = azurerm_resource_group.rg.location
5+
os_type = "Linux"
6+
sku_name = "P0v3"
7+
}
8+
9+
10+
resource "azurerm_linux_web_app" "api_server_web_app" {
11+
name = "${local.resource_prefix}-api-server"
12+
resource_group_name = azurerm_resource_group.rg.name
13+
location = azurerm_service_plan.api_server_service_plan.location
14+
service_plan_id = azurerm_service_plan.api_server_service_plan.id
15+
16+
site_config {
17+
application_stack {
18+
dotnet_version = "8.0"
19+
}
20+
}
21+
22+
connection_string {
23+
name = "PocketDDDContext"
24+
type = "SQLAzure"
25+
value = local.db_connection_string
26+
}
27+
}

terraform/blazor_client.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resource "azurerm_static_web_app" "blazor-client" {
2+
name = "${local.resource_prefix}-blazorclient"
3+
location = "westeurope"
4+
resource_group_name = azurerm_resource_group.rg.name
5+
}

terraform/database.tf

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
resource "azurerm_mssql_server" "sqlserver" {
2+
name = local.sql_server_name
3+
resource_group_name = azurerm_resource_group.rg.name
4+
location = azurerm_resource_group.rg.location
5+
version = "12.0"
6+
administrator_login = random_string.admin_login.result
7+
administrator_login_password = random_password.admin_password.result
8+
9+
tags = {
10+
environment = var.env
11+
}
12+
}
13+
14+
resource "azurerm_mssql_database" "sqldb" {
15+
name = "${local.resource_prefix}-sqldatabase"
16+
server_id = azurerm_mssql_server.sqlserver.id
17+
18+
tags = {
19+
environment = var.env
20+
}
21+
22+
# prevent the possibility of accidental data loss
23+
lifecycle {
24+
prevent_destroy = true
25+
}
26+
}

terraform/keyvault.tf

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
data "azurerm_client_config" "current" {}
2+
3+
resource "azurerm_key_vault" "key_vault" {
4+
name = "${local.resource_prefix}-keyvault"
5+
location = azurerm_resource_group.rg.location
6+
resource_group_name = azurerm_resource_group.rg.name
7+
enabled_for_disk_encryption = true
8+
tenant_id = data.azurerm_client_config.current.tenant_id
9+
soft_delete_retention_days = 7
10+
purge_protection_enabled = false
11+
12+
sku_name = "standard"
13+
14+
access_policy {
15+
tenant_id = data.azurerm_client_config.current.tenant_id
16+
object_id = data.azurerm_client_config.current.object_id
17+
18+
key_permissions = [
19+
"Get",
20+
]
21+
22+
secret_permissions = [
23+
"Get",
24+
"Set",
25+
"List"
26+
]
27+
28+
storage_permissions = [
29+
"Get",
30+
]
31+
}
32+
}
33+
34+
resource "azurerm_key_vault_secret" "sqldb_connectionstring" {
35+
name = "${local.resource_prefix}-db-connection-string"
36+
value = local.db_connection_string
37+
key_vault_id = azurerm_key_vault.key_vault.id
38+
}

terraform/locals.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
locals {
2+
resource_prefix = "pocketddd-${var.env}"
3+
sql_server_name = "${local.resource_prefix}-sql-server"
4+
}

terraform/main.tf

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
resource "azurerm_resource_group" "rg" {
2+
name = "${local.resource_prefix}-rg"
3+
location = "UK South"
4+
}
5+
6+
resource "random_string" "admin_login" {
7+
length = 16
8+
special = true
9+
override_special = "/@£$"
10+
}
11+
12+
resource "random_password" "admin_password" {
13+
length = 25
14+
}
15+
16+
locals {
17+
db_connection_string = "Server=tcp:${local.sql_server_name}.database.windows.net,1433;Persist Security Info=False;User ID=${random_string.admin_login.result};Password=${random_password.admin_password.result};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
18+
}

terraform/network.tf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
resource "azurerm_virtual_network" "vnet" {
2+
name = "${local.resource_prefix}-vnet"
3+
location = azurerm_resource_group.rg.location
4+
resource_group_name = azurerm_resource_group.rg.name
5+
address_space = ["10.0.0.0/16"]
6+
dns_servers = ["10.0.0.4", "10.0.0.5"]
7+
8+
subnet {
9+
name = "subnet1"
10+
address_prefix = "10.0.1.0/24"
11+
}
12+
13+
tags = {
14+
environment = var.env
15+
}
16+
}

terraform/terraform.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
terraform {
2+
required_providers {
3+
azurerm = {
4+
source = "hashicorp/azurerm"
5+
version = "3.100.0"
6+
}
7+
random = {
8+
source = "hashicorp/random"
9+
version = "3.6.1"
10+
}
11+
}
12+
}
13+
14+
provider "azurerm" {
15+
# Configuration options
16+
features {
17+
18+
}
19+
}

terraform/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
variable "env" {
2+
default = "dev"
3+
nullable = false
4+
type = string
5+
}

0 commit comments

Comments
 (0)