{"id":41355758,"url":"https://github.com/libre-devops/terraform-azurerm-flex-consumption-function-app","last_synced_at":"2026-01-23T07:35:18.019Z","repository":{"id":290234163,"uuid":"972928529","full_name":"libre-devops/terraform-azurerm-flex-consumption-function-app","owner":"libre-devops","description":"A module used to deploy a flex consumption function app ⚡","archived":false,"fork":false,"pushed_at":"2025-04-27T19:48:03.000Z","size":135,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-14T21:18:20.269Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libre-devops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-25T23:05:25.000Z","updated_at":"2025-04-27T19:48:05.000Z","dependencies_parsed_at":"2025-04-27T18:47:15.528Z","dependency_job_id":null,"html_url":"https://github.com/libre-devops/terraform-azurerm-flex-consumption-function-app","commit_stats":null,"previous_names":["libre-devops/terraform-azurerm-flex-consumption-function-app"],"tags_count":1,"template":false,"template_full_name":"libre-devops/terraform-module-template","purl":"pkg:github/libre-devops/terraform-azurerm-flex-consumption-function-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-flex-consumption-function-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-flex-consumption-function-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-flex-consumption-function-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-flex-consumption-function-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libre-devops","download_url":"https://codeload.github.com/libre-devops/terraform-azurerm-flex-consumption-function-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-flex-consumption-function-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28683498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-23T07:35:17.360Z","updated_at":"2026-01-23T07:35:18.010Z","avatar_url":"https://github.com/libre-devops.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"```hcl\n################################################\n#  Service Plan (only when caller requests one)\n################################################\nresource \"azurerm_service_plan\" \"service_plan\" {\n  for_each            = { for app in var.flex_function_apps : app.name =\u003e app if app.create_new_app_service_plan == true }\n  name                = each.value.app_service_plan_name != null ? each.value.app_service_plan_name : \"asp-${each.value.name}\"\n  resource_group_name = each.value.rg_name\n  location            = each.value.location\n  os_type             = each.value.os_type != null ? title(each.value.os_type) : \"Linux\"\n  sku_name            = each.value.sku_name\n}\n\n################################################\n#  Flex Function App(s)\n################################################\nresource \"azurerm_function_app_flex_consumption\" \"function_app\" {\n  for_each = { for app in var.flex_function_apps : app.name =\u003e app }\n\n  name                = each.value.name\n  service_plan_id     = each.value.service_plan_id != null ? each.value.service_plan_id : lookup(azurerm_service_plan.service_plan, each.key, null).id\n  location            = each.value.location\n  resource_group_name = each.value.rg_name\n\n  # ── Flex‑specific mandatory fields ─────────────────────────────\n  runtime_name                      = lower(each.value.runtime_name)\n  runtime_version                   = lower(each.value.runtime_version)\n  storage_container_type            = coalesce(each.value.storage_container_type, \"blobContainer\")\n  storage_container_endpoint        = each.value.storage_container_endpoint\n  storage_authentication_type       = lower(each.value.identity_type) == \"systemassigned\" ? \"SystemAssignedIdentity\" : lower(each.value.identity_type) == \"userassigned\" \u0026\u0026 each.value.identity_ids != [] ? \"UserAssignedIdentity\" : each.value.storage_authentication_type\n  storage_access_key                = each.value.storage_authentication_type == \"StorageAccountConnectionString\" ? each.value.storage_access_key : null\n  storage_user_assigned_identity_id = lower(each.value.identity_type) == \"userassigned\" \u0026\u0026 each.value.identity_ids != [] ? each.value.identity_ids[0] : each.value.storage_user_assigned_identity_id\n\n  maximum_instance_count = each.value.maximum_instance_count\n  instance_memory_in_mb  = each.value.instance_memory_in_mb\n\n  # ── Classic settings (kept from original style) ────────────────\n  app_settings                                   = each.value.create_new_app_insights == true \u0026\u0026 lookup(local.app_insights_map, each.value.app_insights_name, null) != null ? merge(each.value.app_settings, local.app_insights_map[each.value.app_insights_name]) : each.value.app_settings\n  tags                                           = each.value.tags\n  client_certificate_enabled                     = each.value.client_certificate_enabled\n  client_certificate_mode                        = each.value.client_certificate_mode\n  client_certificate_exclusion_paths             = each.value.client_certificate_exclusion_paths\n  enabled                                        = each.value.enabled\n  public_network_access_enabled                  = each.value.public_network_access_enabled\n  virtual_network_subnet_id                      = each.value.virtual_network_subnet_id\n  webdeploy_publish_basic_authentication_enabled = each.value.webdeploy_publish_basic_authentication_enabled\n  zip_deploy_file                                = each.value.zip_deploy_file\n\n  # ── Identity blocks ────────────────────────────────────────────\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"SystemAssigned\" ? [\"SA\"] : []\n    content {\n      type = \"SystemAssigned\"\n    }\n  }\n\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"SystemAssigned, UserAssigned\" ? [\"SAUA\"] : []\n    content {\n      type         = \"SystemAssigned, UserAssigned\"\n      identity_ids = try(each.value.identity_ids, [])\n    }\n  }\n\n  dynamic \"identity\" {\n    for_each = each.value.identity_type == \"UserAssigned\" ? [\"UA\"] : []\n    content {\n      type         = \"UserAssigned\"\n      identity_ids = length(try(each.value.identity_ids, [])) \u003e 0 ? each.value.identity_ids : []\n    }\n  }\n\n\n  dynamic \"sticky_settings\" {\n    for_each = each.value.sticky_settings != null ? [each.value.sticky_settings] : []\n    content {\n      app_setting_names       = sticky_settings.value.app_setting_names\n      connection_string_names = sticky_settings.value.connection_string_names\n    }\n  }\n\n  dynamic \"connection_string\" {\n    for_each = each.value.connection_string != null ? [each.value.connection_string] : []\n    content {\n      name  = connection_string.value.name\n      type  = connection_string.value.type\n      value = connection_string.value.value\n    }\n  }\n\n  dynamic \"auth_settings\" {\n    for_each = each.value.auth_settings != null ? [each.value.auth_settings] : []\n\n    content {\n      enabled                        = auth_settings.value.enabled\n      additional_login_parameters    = auth_settings.value.additional_login_parameters\n      allowed_external_redirect_urls = auth_settings.value.allowed_external_redirect_urls\n      default_provider               = auth_settings.value.default_provider\n      issuer                         = auth_settings.value.issuer\n      runtime_version                = auth_settings.value.runtime_version\n      token_refresh_extension_hours  = auth_settings.value.token_refresh_extension_hours\n      token_store_enabled            = auth_settings.value.token_store_enabled\n      unauthenticated_client_action  = auth_settings.value.unauthenticated_client_action\n\n      dynamic \"active_directory\" {\n        for_each = auth_settings.value.active_directory != null ? [auth_settings.value.active_directory] : []\n\n        content {\n          client_id         = active_directory.value.client_id\n          client_secret     = active_directory.value.client_secret\n          allowed_audiences = active_directory.value.allowed_audiences\n        }\n      }\n\n      dynamic \"facebook\" {\n        for_each = auth_settings.value.facebook != null ? [auth_settings.value.facebook] : []\n\n        content {\n          app_id       = facebook.value.app_id\n          app_secret   = facebook.value.app_secret\n          oauth_scopes = facebook.value.oauth_scopes\n        }\n      }\n\n      dynamic \"google\" {\n        for_each = auth_settings.value.google != null ? [auth_settings.value.google] : []\n\n        content {\n          client_id     = google.value.client_id\n          client_secret = google.value.client_secret\n          oauth_scopes  = google.value.oauth_scopes\n        }\n      }\n\n      dynamic \"microsoft\" {\n        for_each = auth_settings.value.microsoft != null ? [auth_settings.value.microsoft] : []\n\n        content {\n          client_id     = microsoft.value.client_id\n          client_secret = microsoft.value.client_secret\n          oauth_scopes  = microsoft.value.oauth_scopes\n        }\n      }\n\n      dynamic \"twitter\" {\n        for_each = auth_settings.value.twitter != null ? [auth_settings.value.twitter] : []\n\n        content {\n          consumer_key    = twitter.value.consumer_key\n          consumer_secret = twitter.value.consumer_secret\n        }\n      }\n\n      dynamic \"github\" {\n        for_each = auth_settings.value.github != null ? [auth_settings.value.github] : []\n\n        content {\n          client_id                  = github.value.client_id\n          client_secret              = github.value.client_secret\n          client_secret_setting_name = github.value.client_secret_setting_name\n          oauth_scopes               = github.value.oauth_scopes\n        }\n      }\n    }\n  }\n\n  dynamic \"auth_settings_v2\" {\n    for_each = each.value.auth_settings_v2 != null ? [each.value.auth_settings_v2] : []\n\n    content {\n      auth_enabled                            = auth_settings_v2.value.auth_enabled\n      runtime_version                         = auth_settings_v2.value.runtime_version\n      config_file_path                        = auth_settings_v2.value.config_file_path\n      require_authentication                  = auth_settings_v2.value.require_authentication\n      unauthenticated_action                  = auth_settings_v2.value.unauthenticated_action\n      default_provider                        = auth_settings_v2.value.default_provider\n      excluded_paths                          = toset(auth_settings_v2.value.excluded_paths)\n      require_https                           = auth_settings_v2.value.require_https\n      http_route_api_prefix                   = auth_settings_v2.value.http_route_api_prefix\n      forward_proxy_convention                = auth_settings_v2.value.forward_proxy_convention\n      forward_proxy_custom_host_header_name   = auth_settings_v2.value.forward_proxy_custom_host_header_name\n      forward_proxy_custom_scheme_header_name = auth_settings_v2.value.forward_proxy_custom_scheme_header_name\n\n      dynamic \"apple_v2\" {\n        for_each = auth_settings_v2.value.apple_v2 != null ? [auth_settings_v2.value.apple_v2] : []\n\n        content {\n          client_id                  = apple_v2.value.client_id\n          client_secret_setting_name = apple_v2.value.client_secret_setting_name\n          login_scopes               = toset(apple_v2.value.login_scopes)\n        }\n      }\n\n      dynamic \"active_directory_v2\" {\n        for_each = auth_settings_v2.value.active_directory_v2 != null ? [auth_settings_v2.value.active_directory_v2] : []\n\n        content {\n          client_id                            = active_directory_v2.value.client_id\n          tenant_auth_endpoint                 = active_directory_v2.value.tenant_auth_endpoint\n          client_secret_setting_name           = active_directory_v2.value.client_secret_setting_name\n          client_secret_certificate_thumbprint = active_directory_v2.value.client_secret_certificate_thumbprint\n          jwt_allowed_groups                   = toset(active_directory_v2.value.jwt_allowed_groups)\n          jwt_allowed_client_applications      = toset(active_directory_v2.value.jwt_allowed_client_applications)\n          www_authentication_disabled          = active_directory_v2.value.www_authentication_disabled\n          allowed_groups                       = toset(active_directory_v2.value.allowed_groups)\n          allowed_identities                   = toset(active_directory_v2.value.allowed_identities)\n          allowed_applications                 = toset(active_directory_v2.value.allowed_applications)\n          login_parameters                     = active_directory_v2.value.login_parameters\n          allowed_audiences                    = toset(active_directory_v2.value.allowed_audiences)\n        }\n      }\n\n      dynamic \"azure_static_web_app_v2\" {\n        for_each = auth_settings_v2.value.azure_static_web_app_v2 != null ? [auth_settings_v2.value.azure_static_web_app_v2] : []\n\n        content {\n          client_id = azure_static_web_app_v2.value.client_id\n        }\n      }\n\n      dynamic \"custom_oidc_v2\" {\n        for_each = auth_settings_v2.value.custom_oidc_v2 != null ? [auth_settings_v2.value.custom_oidc_v2] : []\n\n        content {\n          name                          = custom_oidc_v2.value.name\n          client_id                     = custom_oidc_v2.value.client_id\n          openid_configuration_endpoint = custom_oidc_v2.value.openid_configuration_endpoint\n          name_claim_type               = custom_oidc_v2.value.name_claim_type\n          scopes                        = toset(custom_oidc_v2.value.scopes)\n          client_credential_method      = custom_oidc_v2.value.client_credential_method\n          client_secret_setting_name    = custom_oidc_v2.value.client_secret_setting_name\n          authorisation_endpoint        = custom_oidc_v2.value.authorisation_endpoint\n          token_endpoint                = custom_oidc_v2.value.token_endpoint\n          issuer_endpoint               = custom_oidc_v2.value.issuer_endpoint\n          certification_uri             = custom_oidc_v2.value.certification_uri\n        }\n      }\n\n\n      dynamic \"facebook_v2\" {\n        for_each = auth_settings_v2.value.facebook_v2 != null ? [auth_settings_v2.value.facebook_v2] : []\n\n        content {\n          graph_api_version       = facebook_v2.value.graph_api_version\n          login_scopes            = toset(facebook_v2.value.login_scopes)\n          app_id                  = facebook_v2_value.app_id\n          app_secret_setting_name = facebook_v2.value.app_secret_setting_name\n        }\n      }\n\n      dynamic \"github_v2\" {\n        for_each = auth_settings_v2.value.github_v2 != null ? [auth_settings_v2.value.github_v2] : []\n\n        content {\n          client_id                  = github_v2.value.client_id\n          client_secret_setting_name = github_v2.value.client_secret_setting_name\n          login_scopes               = toset(github_v2.value.login_scopes)\n        }\n      }\n\n      dynamic \"google_v2\" {\n        for_each = auth_settings_v2.value.google_v2 != null ? [auth_settings_v2.value.google_v2] : []\n\n        content {\n          client_id                  = google_v2.value.client_id\n          client_secret_setting_name = google_v2.value.client_secret_setting_name\n          allowed_audiences          = toset(google_v2.value.allowed_audiences)\n          login_scopes               = toset(google_v2.value.login_scopes)\n        }\n      }\n\n      dynamic \"microsoft_v2\" {\n        for_each = auth_settings_v2.value.microsoft_v2 != null ? [auth_settings_v2.value.microsoft_v2] : []\n\n        content {\n          client_id                  = microsoft_v2.value.client_id\n          client_secret_setting_name = microsoft_v2.value.client_secret_setting_name\n          allowed_audiences          = toset(microsoft_v2.value.allowed_audiences)\n          login_scopes               = toset(microsoft_v2.value.login_scopes)\n        }\n      }\n\n      dynamic \"twitter_v2\" {\n        for_each = auth_settings_v2.value.twitter_v2 != null ? [auth_settings_v2.value.twitter_v2] : []\n        content {\n          consumer_key                 = twitter_v2.value.consumer_key\n          consumer_secret_setting_name = twitter_v2.value.consumer_secret_setting_name\n        }\n      }\n\n      dynamic \"login\" {\n        for_each = auth_settings_v2.value.login != null ? [auth_settings_v2.value.login] : []\n\n        content {\n          logout_endpoint                   = login.value.logout_endpoint\n          token_store_enabled               = login.value.token_store_enabled\n          token_refresh_extension_time      = login.value.token_refresh_extension_time\n          token_store_path                  = login.value.token_store_path\n          token_store_sas_setting_name      = login.value.token_store_sas_setting_name\n          preserve_url_fragments_for_logins = login.value.preserve_url_fragments_for_logins\n          allowed_external_redirect_urls    = toset(login.value.allowed_external_redirect_urls)\n          cookie_expiration_convention      = login.value.cookie_expiration_convention\n          cookie_expiration_time            = login.value.cookie_expiration_time\n          validate_nonce                    = login.value.validate_nonce\n          nonce_expiration_time             = login.value.nonce_expiration_time\n        }\n      }\n    }\n  }\n\n\n  dynamic \"site_config\" {\n    for_each = each.value.site_config != null ? [each.value.site_config] : []\n\n    content {\n      api_definition_url                            = site_config.value.api_definition_url\n      api_management_api_id                         = site_config.value.api_management_api_id\n      app_command_line                              = site_config.value.app_command_line\n      application_insights_connection_string        = site_config.value.application_insights_connection_string\n      application_insights_key                      = site_config.value.application_insights_key\n      container_registry_managed_identity_client_id = site_config.value.container_registry_managed_identity_client_id\n      container_registry_use_managed_identity       = site_config.value.container_registry_use_managed_identity\n      elastic_instance_minimum                      = site_config.value.elastic_instance_minimum\n      health_check_path                             = site_config.value.health_check_path\n      health_check_eviction_time_in_min             = site_config.value.health_check_eviction_time_in_min\n      http2_enabled                                 = site_config.value.http2_enabled\n      load_balancing_mode                           = site_config.value.load_balancing_mode\n      managed_pipeline_mode                         = site_config.value.managed_pipeline_mode\n      minimum_tls_version                           = site_config.value.minimum_tls_version\n      remote_debugging_enabled                      = site_config.value.remote_debugging_enabled\n      remote_debugging_version                      = site_config.value.remote_debugging_version\n      runtime_scale_monitoring_enabled              = site_config.value.runtime_scale_monitoring_enabled\n      scm_minimum_tls_version                       = site_config.value.scm_minimum_tls_version\n      scm_use_main_ip_restriction                   = site_config.value.scm_use_main_ip_restriction\n      use_32_bit_worker                             = site_config.value.use_32_bit_worker\n      websockets_enabled                            = site_config.value.websockets_enabled\n      worker_count                                  = site_config.value.worker_count\n      default_documents                             = toset(site_config.value.default_documents)\n\n      dynamic \"app_service_logs\" {\n        for_each = site_config.value.app_service_logs != null ? [site_config.value.app_service_logs] : []\n        content {\n          disk_quota_mb         = app_service_logs.value.disk_quota_mb\n          retention_period_days = app_service_logs.value.retention_period_days\n        }\n      }\n\n      dynamic \"cors\" {\n        for_each = site_config.value.cors != null ? [site_config.value.cors] : []\n        content {\n          allowed_origins     = cors.value.allowed_origins\n          support_credentials = cors.value.support_credentials\n        }\n      }\n\n      dynamic \"ip_restriction\" {\n        for_each = site_config.value.ip_restriction != null ? site_config.value.ip_restriction : []\n\n        content {\n          ip_address                = ip_restriction.value.ip_address\n          service_tag               = ip_restriction.value.service_tag\n          virtual_network_subnet_id = ip_restriction.value.virtual_network_subnet_id\n          name                      = ip_restriction.value.name\n          priority                  = ip_restriction.value.priority\n          action                    = ip_restriction.value.action\n\n          dynamic \"headers\" {\n            for_each = ip_restriction.value.headers != null ? [ip_restriction.value.headers] : []\n\n            content {\n              x_azure_fdid      = headers.value.x_azure_fdid\n              x_fd_health_probe = headers.value.x_fd_health_prob\n              x_forwarded_for   = headers.value.x_forwarded_for\n              x_forwarded_host  = headers.value.x_forwarded_host\n            }\n          }\n        }\n      }\n\n      dynamic \"scm_ip_restriction\" {\n        for_each = site_config.value.scm_ip_restriction != null ? site_config.value.scm_ip_restriction : []\n\n        content {\n          ip_address                = scm_ip_restriction.value.ip_address\n          service_tag               = scm_ip_restriction.value.service_tag\n          virtual_network_subnet_id = scm_ip_restriction.value.virtual_network_subnet_id\n          name                      = scm_ip_restriction.value.name\n          priority                  = scm_ip_restriction.value.priority\n          action                    = scm_ip_restriction.value.action\n\n          dynamic \"headers\" {\n            for_each = scm_ip_restriction.value.headers != null ? [scm_ip_restriction.value.headers] : []\n\n            content {\n              x_azure_fdid      = headers.value.x_azure_fdid\n              x_fd_health_probe = headers.value.x_fd_health_prob\n              x_forwarded_for   = headers.value.x_forwarded_for\n              x_forwarded_host  = headers.value.x_forwarded_host\n            }\n          }\n        }\n      }\n    }\n  }\n\n  lifecycle {\n    ignore_changes = [\n      tags[\"hidden-link: /app-insights-conn-string\"],\n      tags[\"hidden-link: /app-insights-instrumentation-key\"],\n      tags[\"hidden-link: /app-insights-resource-id\"],\n    ]\n  }\n}\n```\n## Requirements\n\nNo requirements.\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_azurerm\"\u003e\u003c/a\u003e [azurerm](#provider\\_azurerm) | n/a |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [azurerm_application_insights.app_insights_workspace](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/application_insights) | resource |\n| [azurerm_function_app_flex_consumption.function_app](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/function_app_flex_consumption) | resource |\n| [azurerm_service_plan.service_plan](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/service_plan) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_flex_function_apps\"\u003e\u003c/a\u003e [flex\\_function\\_apps](#input\\_flex\\_function\\_apps) | List of FlexΓÇæConsumption Function Apps (keeps original style) | \u003cpre\u003elist(object({\u003cbr/\u003e    # ΓöÇΓöÇ Core identity ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ\u003cbr/\u003e    name     = string\u003cbr/\u003e    rg_name  = string\u003cbr/\u003e    location = string\u003cbr/\u003e\u003cbr/\u003e    # ΓöÇΓöÇ Plan creation ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ\u003cbr/\u003e    create_new_app_service_plan = optional(bool, true)\u003cbr/\u003e    app_service_plan_name       = optional(string)\u003cbr/\u003e    service_plan_id             = optional(string)\u003cbr/\u003e    os_type                     = optional(string, \"Linux\")\u003cbr/\u003e    sku_name                    = optional(string, \"FC1\")\u003cbr/\u003e\u003cbr/\u003e    # ΓöÇΓöÇ FlexΓÇæspecific mandatory fields ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ\u003cbr/\u003e    runtime_name                      = string # \"dotnet-isolated\" | \"python\" | \"node\" | \"java\"\u003cbr/\u003e    runtime_version                   = string # e.g. \"8.0\", \"3.11\"\u003cbr/\u003e    storage_container_type            = optional(string, \"blobContainer\")\u003cbr/\u003e    storage_user_assigned_identity_id = optional(string)\u003cbr/\u003e    storage_container_endpoint        = string                                     # \"https://\u003caccount\u003e.blob.core.windows.net/\u003ccontainer\u003e\"\u003cbr/\u003e    storage_authentication_type       = optional(string, \"SystemAssignedIdentity\") # or \"StorageAccountConnectionString\"\u003cbr/\u003e    storage_access_key                = optional(string)                           # only when auth type is connection string\u003cbr/\u003e    maximum_instance_count            = optional(number)                           # default from portal (100) if omitted\u003cbr/\u003e    instance_memory_in_mb             = optional(number, 2048)                     # must be 2048 or 4096\u003cbr/\u003e\u003cbr/\u003e    app_settings                                   = map(string)\u003cbr/\u003e    tags                                           = optional(map(string))\u003cbr/\u003e    client_certificate_enabled                     = optional(bool)\u003cbr/\u003e    client_certificate_exclusion_paths             = optional(string)\u003cbr/\u003e    client_certificate_mode                        = optional(string)\u003cbr/\u003e    enabled                                        = optional(bool, true)\u003cbr/\u003e    content_share_force_disabled                   = optional(bool)\u003cbr/\u003e    identity_type                                  = optional(string)\u003cbr/\u003e    public_network_access_enabled                  = optional(bool, true)\u003cbr/\u003e    virtual_network_subnet_id                      = optional(string)\u003cbr/\u003e    webdeploy_publish_basic_authentication_enabled = optional(bool, false)\u003cbr/\u003e    zip_deploy_file                                = optional(string)\u003cbr/\u003e\u003cbr/\u003e    identity_ids = optional(list(string))\u003cbr/\u003e\u003cbr/\u003e    # ΓöÇΓöÇ Application Insights options (unchanged) ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ\u003cbr/\u003e    create_new_app_insights                            = optional(bool, false)\u003cbr/\u003e    workspace_id                                       = optional(string)\u003cbr/\u003e    app_insights_name                                  = optional(string)\u003cbr/\u003e    app_insights_type                                  = optional(string, \"Web\")\u003cbr/\u003e    app_insights_daily_cap_in_gb                       = optional(number)\u003cbr/\u003e    app_insights_daily_data_cap_notifications_disabled = optional(bool, false)\u003cbr/\u003e    app_insights_internet_ingestion_enabled            = optional(bool)\u003cbr/\u003e    app_insights_internet_query_enabled                = optional(bool)\u003cbr/\u003e    app_insights_local_authentication_disabled         = optional(bool, true)\u003cbr/\u003e    app_insights_force_customer_storage_for_profile    = optional(bool, false)\u003cbr/\u003e    app_insights_sampling_percentage                   = optional(number, 100)\u003cbr/\u003e\u003cbr/\u003e    sticky_settings = optional(object({\u003cbr/\u003e      app_setting_names       = optional(list(string))\u003cbr/\u003e      connection_string_names = optional(list(string))\u003cbr/\u003e    }))\u003cbr/\u003e\u003cbr/\u003e    connection_string = optional(object({\u003cbr/\u003e      name  = optional(string)\u003cbr/\u003e      type  = optional(string)\u003cbr/\u003e      value = optional(string)\u003cbr/\u003e    }))\u003cbr/\u003e    auth_settings_v2 = optional(object({\u003cbr/\u003e      auth_enabled                            = optional(bool)\u003cbr/\u003e      runtime_version                         = optional(string)\u003cbr/\u003e      config_file_path                        = optional(string)\u003cbr/\u003e      require_authentication                  = optional(bool)\u003cbr/\u003e      unauthenticated_action                  = optional(string)\u003cbr/\u003e      default_provider                        = optional(string)\u003cbr/\u003e      excluded_paths                          = optional(list(string))\u003cbr/\u003e      require_https                           = optional(bool)\u003cbr/\u003e      http_route_api_prefix                   = optional(string)\u003cbr/\u003e      forward_proxy_convention                = optional(string)\u003cbr/\u003e      forward_proxy_custom_host_header_name   = optional(string)\u003cbr/\u003e      forward_proxy_custom_scheme_header_name = optional(string)\u003cbr/\u003e      apple_v2 = optional(object({\u003cbr/\u003e        client_id                  = string\u003cbr/\u003e        client_secret_setting_name = string\u003cbr/\u003e        login_scopes               = list(string)\u003cbr/\u003e      }))\u003cbr/\u003e      active_directory_v2 = optional(object({\u003cbr/\u003e        client_id                            = string\u003cbr/\u003e        tenant_auth_endpoint                 = string\u003cbr/\u003e        client_secret_setting_name           = optional(string)\u003cbr/\u003e        client_secret_certificate_thumbprint = optional(string)\u003cbr/\u003e        jwt_allowed_groups                   = optional(list(string))\u003cbr/\u003e        jwt_allowed_client_applications      = optional(list(string))\u003cbr/\u003e        www_authentication_disabled          = optional(bool)\u003cbr/\u003e        allowed_groups                       = optional(list(string))\u003cbr/\u003e        allowed_identities                   = optional(list(string))\u003cbr/\u003e        allowed_applications                 = optional(list(string))\u003cbr/\u003e        login_parameters                     = optional(map(string))\u003cbr/\u003e        allowed_audiences                    = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      azure_static_web_app_v2 = optional(object({\u003cbr/\u003e        client_id = string\u003cbr/\u003e      }))\u003cbr/\u003e      custom_oidc_v2 = optional(list(object({\u003cbr/\u003e        name                          = string\u003cbr/\u003e        client_id                     = string\u003cbr/\u003e        openid_configuration_endpoint = string\u003cbr/\u003e        name_claim_type               = optional(string)\u003cbr/\u003e        scopes                        = optional(list(string))\u003cbr/\u003e        client_credential_method      = string\u003cbr/\u003e        client_secret_setting_name    = string\u003cbr/\u003e        authorisation_endpoint        = string\u003cbr/\u003e        token_endpoint                = string\u003cbr/\u003e        issuer_endpoint               = string\u003cbr/\u003e        certification_uri             = string\u003cbr/\u003e      })))\u003cbr/\u003e      facebook_v2 = optional(object({\u003cbr/\u003e        app_id                  = string\u003cbr/\u003e        app_secret_setting_name = string\u003cbr/\u003e        graph_api_version       = optional(string)\u003cbr/\u003e        login_scopes            = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      github_v2 = optional(object({\u003cbr/\u003e        client_id                  = string\u003cbr/\u003e        client_secret_setting_name = string\u003cbr/\u003e        login_scopes               = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      google_v2 = optional(object({\u003cbr/\u003e        client_id                  = string\u003cbr/\u003e        client_secret_setting_name = string\u003cbr/\u003e        allowed_audiences          = optional(list(string))\u003cbr/\u003e        login_scopes               = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      microsoft_v2 = optional(object({\u003cbr/\u003e        client_id                  = string\u003cbr/\u003e        client_secret_setting_name = string\u003cbr/\u003e        allowed_audiences          = optional(list(string))\u003cbr/\u003e        login_scopes               = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      twitter_v2 = optional(object({\u003cbr/\u003e        consumer_key                 = string\u003cbr/\u003e        consumer_secret_setting_name = string\u003cbr/\u003e      }))\u003cbr/\u003e      login = optional(object({\u003cbr/\u003e        logout_endpoint                   = optional(string)\u003cbr/\u003e        token_store_enabled               = optional(bool)\u003cbr/\u003e        token_refresh_extension_time      = optional(number)\u003cbr/\u003e        token_store_path                  = optional(string)\u003cbr/\u003e        token_store_sas_setting_name      = optional(string)\u003cbr/\u003e        preserve_url_fragments_for_logins = optional(bool)\u003cbr/\u003e        allowed_external_redirect_urls    = optional(list(string))\u003cbr/\u003e        cookie_expiration_convention      = optional(string)\u003cbr/\u003e        cookie_expiration_time            = optional(string)\u003cbr/\u003e        validate_nonce                    = optional(bool)\u003cbr/\u003e        nonce_expiration_time             = optional(string)\u003cbr/\u003e      }))\u003cbr/\u003e    }))\u003cbr/\u003e    auth_settings = optional(object({\u003cbr/\u003e      enabled                        = optional(bool)\u003cbr/\u003e      additional_login_parameters    = optional(map(string))\u003cbr/\u003e      allowed_external_redirect_urls = optional(list(string))\u003cbr/\u003e      default_provider               = optional(string)\u003cbr/\u003e      issuer                         = optional(string)\u003cbr/\u003e      runtime_version                = optional(string)\u003cbr/\u003e      token_refresh_extension_hours  = optional(number)\u003cbr/\u003e      token_store_enabled            = optional(bool)\u003cbr/\u003e      unauthenticated_client_action  = optional(string)\u003cbr/\u003e      active_directory = optional(object({\u003cbr/\u003e        client_id         = optional(string)\u003cbr/\u003e        client_secret     = optional(string)\u003cbr/\u003e        allowed_audiences = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      facebook = optional(object({\u003cbr/\u003e        app_id       = optional(string)\u003cbr/\u003e        app_secret   = optional(string)\u003cbr/\u003e        oauth_scopes = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      google = optional(object({\u003cbr/\u003e        client_id     = optional(string)\u003cbr/\u003e        client_secret = optional(string)\u003cbr/\u003e        oauth_scopes  = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      microsoft = optional(object({\u003cbr/\u003e        client_id     = optional(string)\u003cbr/\u003e        client_secret = optional(string)\u003cbr/\u003e        oauth_scopes  = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e      twitter = optional(object({\u003cbr/\u003e        consumer_key    = optional(string)\u003cbr/\u003e        consumer_secret = optional(string)\u003cbr/\u003e      }))\u003cbr/\u003e      github = optional(object({\u003cbr/\u003e        client_id                  = optional(string)\u003cbr/\u003e        client_secret              = optional(string)\u003cbr/\u003e        client_secret_setting_name = optional(string)\u003cbr/\u003e        oauth_scopes               = optional(list(string))\u003cbr/\u003e      }))\u003cbr/\u003e    }))\u003cbr/\u003e    site_config = optional(object({\u003cbr/\u003e      api_definition_url                            = optional(string)\u003cbr/\u003e      api_management_api_id                         = optional(string)\u003cbr/\u003e      app_command_line                              = optional(string)\u003cbr/\u003e      application_insights_connection_string        = optional(string)\u003cbr/\u003e      application_insights_key                      = optional(string)\u003cbr/\u003e      container_registry_managed_identity_client_id = optional(string)\u003cbr/\u003e      container_registry_use_managed_identity       = optional(bool)\u003cbr/\u003e      elastic_instance_minimum                      = optional(number)\u003cbr/\u003e      health_check_path                             = optional(string)\u003cbr/\u003e      health_check_eviction_time_in_min             = optional(number)\u003cbr/\u003e      http2_enabled                                 = optional(bool)\u003cbr/\u003e      load_balancing_mode                           = optional(string)\u003cbr/\u003e      managed_pipeline_mode                         = optional(string)\u003cbr/\u003e      minimum_tls_version                           = optional(string)\u003cbr/\u003e      remote_debugging_enabled                      = optional(bool)\u003cbr/\u003e      remote_debugging_version                      = optional(string)\u003cbr/\u003e      runtime_scale_monitoring_enabled              = optional(bool)\u003cbr/\u003e      scm_minimum_tls_version                       = optional(string)\u003cbr/\u003e      scm_use_main_ip_restriction                   = optional(bool)\u003cbr/\u003e      use_32_bit_worker                             = optional(bool)\u003cbr/\u003e      websockets_enabled                            = optional(bool)\u003cbr/\u003e      worker_count                                  = optional(number)\u003cbr/\u003e      default_documents                             = optional(list(string))\u003cbr/\u003e      app_service_logs = optional(object({\u003cbr/\u003e        disk_quota_mb         = optional(number)\u003cbr/\u003e        retention_period_days = optional(number)\u003cbr/\u003e      }))\u003cbr/\u003e      cors = optional(object({\u003cbr/\u003e        allowed_origins     = optional(list(string))\u003cbr/\u003e        support_credentials = optional(bool)\u003cbr/\u003e      }))\u003cbr/\u003e      ip_restriction = optional(list(object({\u003cbr/\u003e        ip_address                = optional(string)\u003cbr/\u003e        service_tag               = optional(string)\u003cbr/\u003e        virtual_network_subnet_id = optional(string)\u003cbr/\u003e        name                      = optional(string)\u003cbr/\u003e        priority                  = optional(number)\u003cbr/\u003e        action                    = optional(string)\u003cbr/\u003e        headers = optional(object({\u003cbr/\u003e          x_azure_fdid      = optional(string)\u003cbr/\u003e          x_fd_health_probe = optional(string)\u003cbr/\u003e          x_forwarded_for   = optional(string)\u003cbr/\u003e          x_forwarded_host  = optional(string)\u003cbr/\u003e        }))\u003cbr/\u003e      })))\u003cbr/\u003e      scm_ip_restriction = optional(list(object({\u003cbr/\u003e        ip_address                = optional(string)\u003cbr/\u003e        service_tag               = optional(string)\u003cbr/\u003e        virtual_network_subnet_id = optional(string)\u003cbr/\u003e        name                      = optional(string)\u003cbr/\u003e        priority                  = optional(number)\u003cbr/\u003e        action                    = optional(string)\u003cbr/\u003e        headers = optional(object({\u003cbr/\u003e          x_azure_fdid      = optional(string)\u003cbr/\u003e          x_fd_health_probe = optional(string)\u003cbr/\u003e          x_forwarded_for   = optional(string)\u003cbr/\u003e          x_forwarded_host  = optional(string)\u003cbr/\u003e        }))\u003cbr/\u003e      })))\u003cbr/\u003e    }))\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_function_app_identities\"\u003e\u003c/a\u003e [function\\_app\\_identities](#output\\_function\\_app\\_identities) | The identities of the Storage Accounts. |\n| \u003ca name=\"output_function_app_names\"\u003e\u003c/a\u003e [function\\_app\\_names](#output\\_function\\_app\\_names) | The default name of the Linux Function Apps. |\n| \u003ca name=\"output_function_apps_custom_domain_verification_id\"\u003e\u003c/a\u003e [function\\_apps\\_custom\\_domain\\_verification\\_id](#output\\_function\\_apps\\_custom\\_domain\\_verification\\_id) | The custom domain verification IDs of the Linux Function Apps. |\n| \u003ca name=\"output_function_apps_default_hostnames\"\u003e\u003c/a\u003e [function\\_apps\\_default\\_hostnames](#output\\_function\\_apps\\_default\\_hostnames) | The default hostnames of the Linux Function Apps. |\n| \u003ca name=\"output_function_apps_outbound_ip_addresses\"\u003e\u003c/a\u003e [function\\_apps\\_outbound\\_ip\\_addresses](#output\\_function\\_apps\\_outbound\\_ip\\_addresses) | The outbound IP addresses of the Linux Function Apps. |\n| \u003ca name=\"output_function_apps_possible_outbound_ip_addresses\"\u003e\u003c/a\u003e [function\\_apps\\_possible\\_outbound\\_ip\\_addresses](#output\\_function\\_apps\\_possible\\_outbound\\_ip\\_addresses) | The possible outbound IP addresses of the Linux Function Apps. |\n| \u003ca name=\"output_function_apps_site_credentials\"\u003e\u003c/a\u003e [function\\_apps\\_site\\_credentials](#output\\_function\\_apps\\_site\\_credentials) | The site credentials for the Linux Function Apps. |\n| \u003ca name=\"output_linux_function_apps_ids\"\u003e\u003c/a\u003e [linux\\_function\\_apps\\_ids](#output\\_linux\\_function\\_apps\\_ids) | The IDs of the Linux Function Apps. |\n| \u003ca name=\"output_service_plans_ids\"\u003e\u003c/a\u003e [service\\_plans\\_ids](#output\\_service\\_plans\\_ids) | The IDs of the Service Plans. |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-flex-consumption-function-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibre-devops%2Fterraform-azurerm-flex-consumption-function-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-flex-consumption-function-app/lists"}