Skip to content

Commit 3e7c378

Browse files
authored
Merge pull request #23 from PerfectThymeTech/marvinbuss/update_scale
Update Scale for Function ASP
2 parents b5216ab + c6e0a6e commit 3e7c378

File tree

10 files changed

+83
-4
lines changed

10 files changed

+83
-4
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: [PerfectThymeTech, marvinbuss]

.github/workflows/_terraformApplyTemplate.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ on:
2929
SUBSCRIPTION_ID:
3030
required: true
3131
description: "Specifies the client id."
32+
MY_SAMPLE_SECRET:
33+
required: true
34+
description: "Specifies a sample secret."
3235

3336
permissions:
3437
id-token: write
@@ -79,4 +82,4 @@ jobs:
7982
- name: Terraform Apply
8083
working-directory: ${{ inputs.working_directory }}
8184
run: |
82-
terraform apply -var-file vars.${{ inputs.environment }}.tfvars -auto-approve -input=false
85+
terraform apply -var-file vars.${{ inputs.environment }}.tfvars -var='my_secret=${{ secrets.MY_SAMPLE_SECRET }}' -auto-approve -input=false

.github/workflows/_terraformPlanTemplate.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ on:
2929
SUBSCRIPTION_ID:
3030
required: true
3131
description: "Specifies the client id."
32+
MY_SAMPLE_SECRET:
33+
required: true
34+
description: "Specifies a sample secret."
3235

3336
permissions:
3437
id-token: write
@@ -89,7 +92,7 @@ jobs:
8992
id: terraform_plan
9093
working-directory: ${{ inputs.working_directory }}
9194
run: |
92-
terraform plan -var-file vars.${{ inputs.environment }}.tfvars -input=false
95+
terraform plan -var-file vars.${{ inputs.environment }}.tfvars -var='my_secret=${{ secrets.MY_SAMPLE_SECRET }}' -input=false
9396
9497
# Add Pull Request Comment
9598
- name: Add Pull Request Comment

.github/workflows/terraform.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
CLIENT_ID: ${{ secrets.CLIENT_ID }}
3636
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
3737
SUBSCRIPTION_ID: ${{ secrets.SUBSCRIPTION_ID }}
38+
MY_SAMPLE_SECRET: ${{ secrets.MY_SAMPLE_SECRET }}
3839

3940
terraform_apply_dev:
4041
uses: ./.github/workflows/_terraformApplyTemplate.yml
@@ -50,3 +51,4 @@ jobs:
5051
CLIENT_ID: ${{ secrets.CLIENT_ID }}
5152
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
5253
SUBSCRIPTION_ID: ${{ secrets.SUBSCRIPTION_ID }}
54+
MY_SAMPLE_SECRET: ${{ secrets.MY_SAMPLE_SECRET }}

code/function/fastapp/core/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Settings(BaseSettings):
1414
APPLICATIONINSIGHTS_CONNECTION_STRING: str = Field(
1515
default="", env="APPLICATIONINSIGHTS_CONNECTION_STRING"
1616
)
17+
MY_SECRET_CONFIG: str = Field(default="", env="MY_SECRET_CONFIG")
1718

1819

1920
settings = Settings()

code/infra/function.tf

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,43 @@ resource "azurerm_service_plan" "service_plan" {
88
os_type = "Linux"
99
per_site_scaling_enabled = false
1010
sku_name = "P1v3"
11-
worker_count = 3
12-
zone_balancing_enabled = true
11+
worker_count = 1 # Update to '3' for production
12+
zone_balancing_enabled = false # Update to 'true' for production
13+
}
14+
15+
data "azurerm_monitor_diagnostic_categories" "diagnostic_categories_service_plan" {
16+
resource_id = azurerm_service_plan.service_plan.id
17+
}
18+
19+
resource "azurerm_monitor_diagnostic_setting" "diagnostic_setting_service_plan" {
20+
name = "logAnalytics"
21+
target_resource_id = azurerm_service_plan.service_plan.id
22+
log_analytics_workspace_id = azurerm_log_analytics_workspace.log_analytics_workspace.id
23+
24+
dynamic "enabled_log" {
25+
iterator = entry
26+
for_each = data.azurerm_monitor_diagnostic_categories.diagnostic_categories_service_plan.log_category_groups
27+
content {
28+
category_group = entry.value
29+
retention_policy {
30+
enabled = true
31+
days = 30
32+
}
33+
}
34+
}
35+
36+
dynamic "metric" {
37+
iterator = entry
38+
for_each = data.azurerm_monitor_diagnostic_categories.diagnostic_categories_service_plan.metrics
39+
content {
40+
category = entry.value
41+
enabled = true
42+
retention_policy {
43+
enabled = true
44+
days = 30
45+
}
46+
}
47+
}
1348
}
1449

1550
resource "azapi_resource" "function" {
@@ -87,6 +122,10 @@ resource "azapi_resource" "function" {
87122
{
88123
name = "AzureWebJobsStorage__accountName"
89124
value = azurerm_storage_account.storage.name
125+
},
126+
{
127+
name = "MY_SECRET_CONFIG"
128+
value = "@Microsoft.KeyVault(SecretUri=${azurerm_key_vault_secret.key_vault_secret_sample.id})"
90129
}
91130
]
92131
azureStorageAccounts = {}

code/infra/keyvault.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@ resource "azurerm_key_vault" "key_vault" {
2222
tenant_id = data.azurerm_client_config.current.tenant_id
2323
}
2424

25+
resource "azurerm_key_vault_secret" "key_vault_secret_sample" {
26+
name = "MySampleSecret"
27+
key_vault_id = azurerm_key_vault.key_vault.id
28+
29+
content_type = "text/plain"
30+
value = var.my_secret
31+
32+
depends_on = [
33+
azurerm_role_assignment.current_role_assignment_key_vault,
34+
azurerm_private_endpoint.key_vault_private_endpoint
35+
]
36+
}
37+
2538
data "azurerm_monitor_diagnostic_categories" "diagnostic_categories_key_vault" {
2639
resource_id = azurerm_key_vault.key_vault.id
2740
}

code/infra/roleassignments.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
resource "azurerm_role_assignment" "current_role_assignment_key_vault" {
2+
scope = azurerm_key_vault.key_vault.id
3+
role_definition_name = "Key Vault Administrator"
4+
principal_id = data.azurerm_client_config.current.object_id
5+
}
6+
17
resource "azurerm_role_assignment" "function_role_assignment_storage" {
28
scope = azurerm_storage_account.storage.id
39
role_definition_name = "Storage Blob Data Owner"

code/infra/variables.tf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ variable "function_health_path" {
8383
}
8484
}
8585

86+
variable "my_secret" {
87+
description = "Specifies a random secret value used in teh Logic App."
88+
type = string
89+
sensitive = true
90+
validation {
91+
condition = length(var.my_secret) >= 2
92+
error_message = "Please specify a valid resource ID."
93+
}
94+
}
95+
8696
variable "private_dns_zone_id_blob" {
8797
description = "Specifies the resource ID of the private DNS zone for Azure Storage blob endpoints. Not required if DNS A-records get created via Azue Policy."
8898
type = string

code/infra/vars.dev.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ prefix = "myfunc"
44
tags = {}
55
function_python_version = "3.10"
66
function_health_path = "/v1/health/heartbeat"
7+
my_secret = ""
78
vnet_id = "/subscriptions/8f171ff9-2b5b-4f0f-aed5-7fa360a1d094/resourceGroups/mycrp-prd-function-network-rg/providers/Microsoft.Network/virtualNetworks/mycrp-prd-function-vnet001"
89
nsg_id = "/subscriptions/8f171ff9-2b5b-4f0f-aed5-7fa360a1d094/resourceGroups/mycrp-prd-function-network-rg/providers/Microsoft.Network/networkSecurityGroups/mycrp-prd-function-nsg001"
910
route_table_id = "/subscriptions/8f171ff9-2b5b-4f0f-aed5-7fa360a1d094/resourceGroups/mycrp-prd-function-network-rg/providers/Microsoft.Network/routeTables/mycrp-prd-function-rt001"

0 commit comments

Comments
 (0)