Skip to content

Commit 7e9b307

Browse files
add terraform for azure deployment
1 parent c1f401a commit 7e9b307

7 files changed

+180
-0
lines changed

terraform/.terraform.lock.hcl

+22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

terraform/container_app.tf

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
resource "azurerm_container_app_environment" "lissi_eventplanner" {
2+
name = "cae-${local.stack}"
3+
location = azurerm_resource_group.lissi_eventplanner.location
4+
resource_group_name = azurerm_resource_group.lissi_eventplanner.name
5+
log_analytics_workspace_id = azurerm_log_analytics_workspace.lissi_eventplanner.id
6+
tags = local.default_tags
7+
}
8+
9+
resource "azurerm_container_app" "lissi_eventplanner" {
10+
name = "ca-${local.stack}"
11+
container_app_environment_id = azurerm_container_app_environment.lissi_eventplanner.id
12+
resource_group_name = azurerm_resource_group.lissi_eventplanner.name
13+
revision_mode = "Single"
14+
tags = local.default_tags
15+
16+
ingress {
17+
allow_insecure_connections = true
18+
external_enabled = true
19+
target_port = 80
20+
21+
traffic_weight {
22+
percentage = 100
23+
latest_revision = true
24+
}
25+
26+
# custom_domain {
27+
# name = var.domain
28+
# certificate_id = data.azurerm_key_vault_certificate.ssl_certificate.id
29+
# certificate_binding_type = "SniEnabled"
30+
# }
31+
}
32+
33+
lifecycle {
34+
// Required to not delete the manually created custom domain since it is not possible to create a managed certificate for a custom domain with terraform
35+
// https://github.com/hashicorp/terraform-provider-azurerm/issues/21866
36+
ignore_changes = ["ingress"]
37+
}
38+
39+
template {
40+
min_replicas = 1
41+
max_replicas = 1
42+
43+
container {
44+
name = "eventplanner"
45+
image = "ghcr.io/grossherzogin-elisabeth/eventplanner:main"
46+
cpu = 0.5
47+
memory = "1Gi"
48+
env {
49+
name = "AUTH_ISSUER_URI"
50+
value = "https://login.microsoftonline.com/63384ddf-6496-44bd-b22c-93e944e6ed88/v2.0"
51+
}
52+
env {
53+
name = "AUTH_CLIENT_ID"
54+
secret_name = "client-id"
55+
}
56+
env {
57+
name = "AUTH_CLIENT_SECRET"
58+
secret_name = "client-secret"
59+
}
60+
env {
61+
name = "SERVER_HOST"
62+
value = var.domain
63+
}
64+
}
65+
}
66+
67+
secret {
68+
name = "client-id"
69+
value = data.azurerm_key_vault_secret.client_id.value
70+
}
71+
72+
secret {
73+
name = "client-secret"
74+
value = data.azurerm_key_vault_secret.client_secret.value
75+
}
76+
}

terraform/main.tf

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
locals {
2+
stack = "${var.app}-${var.env}"
3+
4+
default_tags = {
5+
environment = var.env
6+
app = var.app
7+
}
8+
}
9+
10+
resource "azurerm_resource_group" "lissi_eventplanner" {
11+
name = "rg-${local.stack}"
12+
location = var.region
13+
tags = local.default_tags
14+
}
15+
16+
resource "azurerm_log_analytics_workspace" "lissi_eventplanner" {
17+
name = "log-${local.stack}"
18+
location = azurerm_resource_group.lissi_eventplanner.location
19+
resource_group_name = azurerm_resource_group.lissi_eventplanner.name
20+
sku = "PerGB2018"
21+
retention_in_days = 30
22+
tags = local.default_tags
23+
}

terraform/outputs.tf

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
output "azurerm_container_app_url" {
2+
value = azurerm_container_app.lissi_eventplanner.latest_revision_fqdn
3+
}

terraform/provider.tf

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
terraform {
2+
required_version = ">= 1.3"
3+
required_providers {
4+
azurerm = {
5+
source = "hashicorp/azurerm"
6+
version = "=3.52.0"
7+
}
8+
}
9+
}
10+
11+
provider "azurerm" {
12+
features {}
13+
}

terraform/secrets.tf

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
data "azurerm_key_vault" "lissi_eventplanner" {
2+
name = "kv-lissi"
3+
resource_group_name = "rg-lissi"
4+
}
5+
6+
data "azurerm_key_vault_secret" "client_id" {
7+
name = "auth-client-id"
8+
key_vault_id = data.azurerm_key_vault.lissi_eventplanner.id
9+
}
10+
11+
data "azurerm_key_vault_secret" "client_secret" {
12+
name = "auth-client-secret"
13+
key_vault_id = data.azurerm_key_vault.lissi_eventplanner.id
14+
}
15+
16+
data "azurerm_key_vault_certificate" "ssl_certificate" {
17+
name = "cert-crew-grosses-meer-surf"
18+
key_vault_id = data.azurerm_key_vault.lissi_eventplanner.id
19+
}

terraform/variables.tf

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
variable "region" {
2+
description = "Azure infrastructure region"
3+
type = string
4+
default = "germanywestcentral"
5+
}
6+
7+
variable "app" {
8+
description = "Application that we want to deploy"
9+
type = string
10+
default = "eventplanner"
11+
}
12+
13+
variable "env" {
14+
description = "Application env"
15+
type = string
16+
default = "live"
17+
}
18+
19+
variable "domain" {
20+
description = "Domain of the application"
21+
type = string
22+
default = "crew.grosses-meer.surf"
23+
}
24+

0 commit comments

Comments
 (0)