Skip to content

raswinraaj/terraform-azurerm-api-management

 
 

Repository files navigation

Azure API Management feature

Changelog Notice Apache V2 License TF Registry

This Terraform module creates an Azure API Management.

Requirements

Global versioning rule for Claranet Azure modules

Module version Terraform version AzureRM version
>= 5.x.x 0.15.x & 1.0.x >= 2.0
>= 4.x.x 0.13.x >= 2.0
>= 3.x.x 0.12.x >= 2.0
>= 2.x.x 0.12.x < 2.0
< 2.x.x 0.11.x < 2.0

Usage

This module is optimized to work with the Claranet terraform-wrapper tool which set some terraform variables in the environment needed by this module. More details about variables set by the terraform-wrapper available in the documentation.

module "azure_region" {
  source  = "claranet/regions/azurerm"
  version = "x.x.x"

  azure_region = var.azure_region
}

module "rg" {
  source  = "claranet/rg/azurerm"
  version = "x.x.x"

  location    = module.azure_region.location
  client_name = var.client_name
  environment = var.environment
  stack       = var.stack
}

module "logs" {
  source  = "claranet/run-common/azurerm//modules/logs"
  version = "x.x.x"

  client_name         = var.client_name
  environment         = var.environment
  stack               = var.stack
  location            = module.azure_region.location
  location_short      = module.azure_region.location_short
  resource_group_name = module.rg.resource_group_name
}

module "apim" {
  source  = "claranet/api-management/azurerm"
  version = "x.x.x"

  location       = module.azure_region.location
  location_short = module.azure_region.location_short
  client_name    = var.client_name
  environment    = var.environment
  stack          = var.stack

  resource_group_name = module.rg.resource_group_name

  sku_name        = "Standard_1"
  publisher_name  = "Contoso ApiManager"
  publisher_email = "[email protected]"

  named_values = [
    {
      name   = "my_named_value"
      value  = "my_secret_value"
      secret = true
    },
    {
      display_name = "My second value explained"
      name         = "my_second_value"
      value        = "my_not_secret_value"
    }
  ]

  additional_location = [
    {
      location  = "eastus2"
      subnet_id = var.subnet_id
    },
  ]

  logs_destinations_ids = [
    module.logs.logs_storage_account_id,
    module.logs.log_analytics_workspace_id
  ]
}

Providers

Name Version
azurerm ~> 2.29

Modules

Name Source Version
diagnostics claranet/diagnostic-settings/azurerm 5.0.0

Resources

Name Type
azurerm_api_management.apim resource
azurerm_api_management_group.group resource
azurerm_api_management_named_value.named_values resource
azurerm_api_management_product.product resource
azurerm_api_management_product_group.product_group resource
azurerm_network_security_rule.management_apim resource

Inputs

Name Description Type Default Required
additional_location List of the name of the Azure Region in which the API Management Service should be expanded to. list(map(string)) [] no
certificate_configuration List of certificate configurations list(map(string)) [] no
client_name Client name/account used in naming string n/a yes
create_management_rule Whether to create the NSG rule for the management port of the APIM. If true, nsg_name variable must be set bool false no
create_product_group_and_relationships Create local APIM groups with name identical to products and create a relationship between groups and products bool false no
custom_diagnostic_settings_name Custom name of the diagnostics settings, name will be 'default' if not set. string "default" no
custom_name Custom API Management name, generated if not set string "" no
default_tags_enabled Option to enable or disable default tags bool true no
developer_portal_hostname_configuration Developer portal hostname configurations list(map(string)) [] no
enable_http2 Should HTTP/2 be supported by the API Management Service? bool false no
enable_sign_in Should anonymous users be redirected to the sign in page? bool false no
enable_sign_up Can users sign up on the development portal? bool false no
environment Project environment string n/a yes
extra_tags Extra tags to add map(string) {} no
identity_ids A list of IDs for User Assigned Managed Identity resources to be assigned. This is required when type is set to UserAssigned or SystemAssigned, UserAssigned. list(string) [] no
identity_type Type of Managed Service Identity that should be configured on this API Management Service string "SystemAssigned" no
location Azure location for Eventhub. string n/a yes
location_short Short string for Azure location. string n/a yes
logs_categories Log categories to send to destinations. list(string) null no
logs_destinations_ids List of destination resources Ids for logs diagnostics destination. Can be Storage Account, Log Analytics Workspace and Event Hub. No more than one of each can be set. Empty list to disable logging. list(string) n/a yes
logs_metrics_categories Metrics categories to send to destinations. list(string) null no
logs_retention_days Number of days to keep logs on storage account number 30 no
management_hostname_configuration List of management hostname configurations list(map(string)) [] no
management_nsg_rule_priority Priority of the NSG rule created for the management port of the APIM number 101 no
name_prefix Optional prefix for the generated name string "" no
name_suffix Optional suffix for the generated name string "" no
named_values Map containing the name of the named values as key and value as values list(map(string)) [] no
notification_sender_email Email address from which the notification will be sent string null no
nsg_name NSG name of the subnet hosting the APIM to add the rule to allow management if the APIM is private string null no
nsg_rg_name Name of the RG hosting the NSG if it's different from the one hosting the APIM string null no
policy_configuration Map of policy configuration map(string) {} no
portal_hostname_configuration Legacy portal hostname configurations list(map(string)) [] no
products List of products to create list(string) [] no
proxy_hostname_configuration List of proxy hostname configurations list(map(string)) [] no
publisher_email The email of publisher/company. string n/a yes
publisher_name The name of publisher/company. string n/a yes
resource_group_name Name of the resource group string n/a yes
scm_hostname_configuration List of scm hostname configurations list(map(string)) [] no
security_configuration Map of security configuration map(string) {} no
sku_name String consisting of two parts separated by an underscore. The fist part is the name, valid values include: Developer, Basic, Standard and Premium. The second part is the capacity string "Basic_1" no
stack Project stack name string n/a yes
terms_of_service_configuration Map of terms of service configuration list(map(string))
[
{
"consent_required": false,
"enabled": false,
"text": ""
}
]
no
virtual_network_configuration The id(s) of the subnet(s) that will be used for the API Management. Required when virtual_network_type is External or Internal list(string) [] no
virtual_network_type The type of virtual network you want to use, valid values include: None, External, Internal. string null no

Outputs

Name Description
api_management_additional_location Map listing gateway_regional_url and public_ip_addresses associated
api_management_gateway_regional_url The Region URL for the Gateway of the API Management Service
api_management_gateway_url The URL of the Gateway for the API Management Service
api_management_id The ID of the API Management Service
api_management_identity The identity of the API Management
api_management_management_api_url The URL for the Management API associated with this API Management service
api_management_name The name of the API Management Service
api_management_portal_url The URL for the Publisher Portal associated with this API Management service
api_management_private_ip_addresses The Private IP addresses of the API Management Service
api_management_public_ip_addresses The Public IP addresses of the API Management Service
api_management_scm_url The URL for the SCM Endpoint associated with this API Management service

Related documentation

Microsoft Azure documentation: https://docs.microsoft.com/en-us/azure/api-management/

About

Terraform module for Azure API Management

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HCL 100.0%