|
| 1 | +locals { |
| 2 | + scheduled_jobs = { |
| 3 | + collect_metrics = { |
| 4 | + cron_expression = "0 */6 * * *" |
| 5 | + environment_variables = { |
| 6 | + ENVIRONMENT = var.environment |
| 7 | + } |
| 8 | + job_short_name = "rs" |
| 9 | + job_container_args = "request_summary" |
| 10 | + } |
| 11 | + } |
| 12 | +} |
| 13 | + |
1 | 14 | module "db_setup" { |
2 | 15 | source = "../dtos-devops-templates/infrastructure/modules/container-app-job" |
3 | 16 |
|
@@ -25,3 +38,54 @@ module "db_setup" { |
25 | 38 | ] |
26 | 39 |
|
27 | 40 | } |
| 41 | + |
| 42 | +module "scheduled_jobs" { |
| 43 | + source = "../dtos-devops-templates/infrastructure/modules/container-app-job" |
| 44 | + |
| 45 | + for_each = local.scheduled_jobs |
| 46 | + |
| 47 | + name = "${var.app_short_name}-${each.value.job_short_name}-${var.environment}" |
| 48 | + container_app_environment_id = var.container_app_environment_id |
| 49 | + resource_group_name = azurerm_resource_group.main.name |
| 50 | + |
| 51 | + fetch_secrets_from_app_key_vault = var.fetch_secrets_from_app_key_vault |
| 52 | + app_key_vault_id = var.app_key_vault_id |
| 53 | + |
| 54 | + container_command = ["/bin/sh", "-c"] |
| 55 | + container_args = [ |
| 56 | + "python manage.py ${each.value.job_container_args}" |
| 57 | + ] |
| 58 | + |
| 59 | + docker_image = var.docker_image |
| 60 | + replica_retry_limit = 0 |
| 61 | + user_assigned_identity_ids = flatten([ |
| 62 | + [module.azure_blob_storage_identity.id], |
| 63 | + var.deploy_database_as_container ? [] : [module.db_connect_identity[0].id] |
| 64 | + ]) |
| 65 | + |
| 66 | + environment_variables = merge( |
| 67 | + local.common_env, |
| 68 | + { |
| 69 | + "STORAGE_ACCOUNT_NAME" = module.storage.storage_account_name, |
| 70 | + "BLOB_MI_CLIENT_ID" = module.azure_blob_storage_identity.client_id, |
| 71 | + }, |
| 72 | + each.value.environment_variables, |
| 73 | + var.deploy_database_as_container ? local.container_db_env : local.azure_db_env |
| 74 | + ) |
| 75 | + secret_variables = merge( |
| 76 | + { SLACK_WEBHOOK_URL = var.slack_webhook_url }, |
| 77 | + var.deploy_database_as_container ? { DATABASE_PASSWORD = resource.random_password.admin_password[0].result } : {} |
| 78 | + ) |
| 79 | + |
| 80 | + # alerts |
| 81 | + action_group_id = var.action_group_id |
| 82 | + enable_alerting = var.enable_alerting |
| 83 | + log_analytics_workspace_id = var.log_analytics_workspace_audit_id |
| 84 | + |
| 85 | + # Ensure RBAC role assignments are created before the job definition finalizes |
| 86 | + depends_on = [ |
| 87 | + module.blob_storage_role_assignment, |
| 88 | + ] |
| 89 | + |
| 90 | + cron_expression = each.value.cron_expression |
| 91 | +} |
0 commit comments