{"id":18579010,"url":"https://github.com/libre-devops/terraform-azurerm-aks","last_synced_at":"2026-04-13T20:31:38.022Z","repository":{"id":118714186,"uuid":"482133529","full_name":"libre-devops/terraform-azurerm-aks","owner":"libre-devops","description":"A module used to simplify the deployment of an Azure Kubernetes Cluster based on some parameters :whale:","archived":false,"fork":false,"pushed_at":"2022-05-18T00:23:49.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-01T22:40:34.600Z","etag":null,"topics":["azure","azurerm","azurerm-terraform-provider","kubernetes","module","terraform","terraform-module"],"latest_commit_sha":null,"homepage":"","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}},"created_at":"2022-04-16T02:18:27.000Z","updated_at":"2022-04-19T19:04:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"3519a0f9-9887-4cb7-a86f-52fff96f563b","html_url":"https://github.com/libre-devops/terraform-azurerm-aks","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/libre-devops/terraform-azurerm-aks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-aks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-aks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-aks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-aks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libre-devops","download_url":"https://codeload.github.com/libre-devops/terraform-azurerm-aks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-devops%2Fterraform-azurerm-aks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31770718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"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":["azure","azurerm","azurerm-terraform-provider","kubernetes","module","terraform","terraform-module"],"created_at":"2024-11-06T23:38:37.644Z","updated_at":"2026-04-13T20:31:37.986Z","avatar_url":"https://github.com/libre-devops.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"```hcl\r\nmodule \"rg\" {\r\n  source = \"registry.terraform.io/libre-devops/rg/azurerm\"\r\n\r\n  rg_name  = \"rg-${var.short}-${var.loc}-${terraform.workspace}-build\" // rg-ldo-euw-dev-build\r\n  location = local.location                                            // compares var.loc with the var.regions var to match a long-hand name, in this case, \"euw\", so \"westeurope\"\r\n  tags     = local.tags\r\n\r\n  #  lock_level = \"CanNotDelete\" // Do not set this value to skip lock\r\n}\r\n\r\nmodule \"network\" {\r\n  source = \"registry.terraform.io/libre-devops/network/azurerm\"\r\n\r\n  rg_name  = module.rg.rg_name // rg-ldo-euw-dev-build\r\n  location = module.rg.rg_location\r\n  tags     = local.tags\r\n\r\n  vnet_name     = \"vnet-${var.short}-${var.loc}-${terraform.workspace}-01\" // vnet-ldo-euw-dev-01\r\n  vnet_location = module.network.vnet_location\r\n\r\n  address_space   = [\"10.0.0.0/16\"]\r\n  subnet_prefixes = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\r\n  subnet_names    = [\"sn1-${module.network.vnet_name}\", \"sn2-${module.network.vnet_name}\", \"sn3-${module.network.vnet_name}\"] //sn1-vnet-ldo-euw-dev-01\r\n  subnet_service_endpoints = {\r\n    \"sn1-${module.network.vnet_name}\" = [\"Microsoft.Storage\"]                   // Adds extra subnet endpoints to sn1-vnet-ldo-euw-dev-01\r\n    \"sn2-${module.network.vnet_name}\" = [\"Microsoft.Storage\", \"Microsoft.Sql\"], // Adds extra subnet endpoints to sn2-vnet-ldo-euw-dev-01\r\n    \"sn3-${module.network.vnet_name}\" = [\"Microsoft.AzureActiveDirectory\"]      // Adds extra subnet endpoints to sn3-vnet-ldo-euw-dev-01\r\n  }\r\n}\r\n\r\nmodule \"aks\" {\r\n  source = \"registry.terraform.io/libre-devops/aks/azurerm\"\r\n\r\n  rg_name  = module.rg.rg_name\r\n  location = module.rg.rg_location\r\n  tags     = module.rg.rg_tags\r\n\r\n  aks_name                = \"aks-${var.short}-${var.loc}-${terraform.workspace}-01\"\r\n  admin_username          = \"LibreDevOpsAdmin\"\r\n  ssh_public_key          = data.azurerm_ssh_public_key.mgmt_ssh_key.public_key\r\n  kubernetes_version      = \"1.22\"\r\n  dns_prefix              = \"ldo\"\r\n  sku_tier                = \"Free\"\r\n  private_cluster_enabled = true\r\n\r\n  default_node_enable_auto_scaling  = false\r\n  default_node_orchestrator_version = \"1.22\"\r\n  default_node_pool_name            = \"lbdo-pool\"\r\n  default_node_vm_size              = \"Standard_B2ms\"\r\n  default_node_os_disk_size_gb      = \"127\"\r\n  default_node_subnet_id            = element(values(module.network.subnets_ids), 2)\r\n  default_node_availability_zones   = [\"1\"]\r\n  default_node_count                = \"1\"\r\n  default_node_agents_min_count     = null\r\n  default_node_agents_max_count     = null\r\n  enable_rbac                       = true\r\n  identity_type                     = \"SystemAssigned\"\r\n}\r\n\r\n```\r\n\r\nFor a full example build, check out the [Libre DevOps Website](https://www.libredevops.org/quickstart/utils/terraform/using-lbdo-tf-modules-example.html)\r\n\r\n## Requirements\r\n\r\nNo requirements.\r\n\r\n## Providers\r\n\r\n| Name | Version |\r\n|------|---------|\r\n| \u003ca name=\"provider_azurerm\"\u003e\u003c/a\u003e [azurerm](#provider\\_azurerm) | n/a |\r\n\r\n## Modules\r\n\r\nNo modules.\r\n\r\n## Resources\r\n\r\n| Name | Type |\r\n|------|------|\r\n| [azurerm_kubernetes_cluster.main_aks](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) | resource |\r\n\r\n## Inputs\r\n\r\n| Name | Description | Type | Default | Required |\r\n|------|-------------|------|---------|:--------:|\r\n| \u003ca name=\"input_admin_username\"\u003e\u003c/a\u003e [admin\\_username](#input\\_admin\\_username) | The admin username of the cluster | `string` | n/a | yes |\r\n| \u003ca name=\"input_aks_name\"\u003e\u003c/a\u003e [aks\\_name](#input\\_aks\\_name) | The name of the resource to be created | `string` | n/a | yes |\r\n| \u003ca name=\"input_client_id\"\u003e\u003c/a\u003e [client\\_id](#input\\_client\\_id) | The ID of the service principle, if one is to be used, defaults to empty string as it is not used | `string` | `\"\"` | no |\r\n| \u003ca name=\"input_client_secret\"\u003e\u003c/a\u003e [client\\_secret](#input\\_client\\_secret) | The client secret of the service principle, if one is to used, defaults to empty string as it is not used | `string` | `\"\"` | no |\r\n| \u003ca name=\"input_default_node_agents_max_count\"\u003e\u003c/a\u003e [default\\_node\\_agents\\_max\\_count](#input\\_default\\_node\\_agents\\_max\\_count) | The maximum count of agent that are deployed to the default node, defaults to 1 | `number` | `\"1\"` | no |\r\n| \u003ca name=\"input_default_node_agents_min_count\"\u003e\u003c/a\u003e [default\\_node\\_agents\\_min\\_count](#input\\_default\\_node\\_agents\\_min\\_count) | The minimum count of agents that are deployed to the default node, defaults to 1 | `number` | n/a | yes |\r\n| \u003ca name=\"input_default_node_agents_type\"\u003e\u003c/a\u003e [default\\_node\\_agents\\_type](#input\\_default\\_node\\_agents\\_type) | Sets the default agent type | `string` | `\"VirtualMachineScaleSets\"` | no |\r\n| \u003ca name=\"input_default_node_availability_zones\"\u003e\u003c/a\u003e [default\\_node\\_availability\\_zones](#input\\_default\\_node\\_availability\\_zones) | The default nodes availability zones, in list format | `list(string)` | n/a | yes |\r\n| \u003ca name=\"input_default_node_count\"\u003e\u003c/a\u003e [default\\_node\\_count](#input\\_default\\_node\\_count) | The default amount of nodes to be provisioned, defaults to 1 | `number` | `1` | no |\r\n| \u003ca name=\"input_default_node_enable_auto_scaling\"\u003e\u003c/a\u003e [default\\_node\\_enable\\_auto\\_scaling](#input\\_default\\_node\\_enable\\_auto\\_scaling) | If auto scaling should be enabled for the default node, defaults to false | `bool` | `false` | no |\r\n| \u003ca name=\"input_default_node_enable_manually_scaling\"\u003e\u003c/a\u003e [default\\_node\\_enable\\_manually\\_scaling](#input\\_default\\_node\\_enable\\_manually\\_scaling) | If manually scaling should be enabled for the default node, defaults to false | `bool` | `true` | no |\r\n| \u003ca name=\"input_default_node_orchestrator_version\"\u003e\u003c/a\u003e [default\\_node\\_orchestrator\\_version](#input\\_default\\_node\\_orchestrator\\_version) | The orchestrator version of the default node | `string` | n/a | yes |\r\n| \u003ca name=\"input_default_node_os_disk_size_gb\"\u003e\u003c/a\u003e [default\\_node\\_os\\_disk\\_size\\_gb](#input\\_default\\_node\\_os\\_disk\\_size\\_gb) | The size of the disk of the VM | `number` | n/a | yes |\r\n| \u003ca name=\"input_default_node_pool_name\"\u003e\u003c/a\u003e [default\\_node\\_pool\\_name](#input\\_default\\_node\\_pool\\_name) | The default pool name of the default node | `string` | n/a | yes |\r\n| \u003ca name=\"input_default_node_subnet_id\"\u003e\u003c/a\u003e [default\\_node\\_subnet\\_id](#input\\_default\\_node\\_subnet\\_id) | The subnet ID for the kubernetes cluster | `string` | n/a | yes |\r\n| \u003ca name=\"input_default_node_vm_size\"\u003e\u003c/a\u003e [default\\_node\\_vm\\_size](#input\\_default\\_node\\_vm\\_size) | The VM size of the default node, e.g. Standard\\_B4ms | `string` | n/a | yes |\r\n| \u003ca name=\"input_dns_prefix\"\u003e\u003c/a\u003e [dns\\_prefix](#input\\_dns\\_prefix) | The DNS prefix to be assigned to the kubernetes cluster | `string` | n/a | yes |\r\n| \u003ca name=\"input_enable_auto_scaling\"\u003e\u003c/a\u003e [enable\\_auto\\_scaling](#input\\_enable\\_auto\\_scaling) | Whether auto scaling should be enabled, defaults to false | `bool` | `false` | no |\r\n| \u003ca name=\"input_enable_azure_policy\"\u003e\u003c/a\u003e [enable\\_azure\\_policy](#input\\_enable\\_azure\\_policy) | Whether or not an Azure policy needs to be assigned, defaults to false | `bool` | `false` | no |\r\n| \u003ca name=\"input_enable_http_application_routing\"\u003e\u003c/a\u003e [enable\\_http\\_application\\_routing](#input\\_enable\\_http\\_application\\_routing) | Whether or not http routing is allowed, defaults to false | `bool` | `false` | no |\r\n| \u003ca name=\"input_enable_ingress_application_gateway\"\u003e\u003c/a\u003e [enable\\_ingress\\_application\\_gateway](#input\\_enable\\_ingress\\_application\\_gateway) | Whether or not a application gateway should be enabled for ingress controller, defaults to null | `any` | `null` | no |\r\n| \u003ca name=\"input_enable_node_public_ip\"\u003e\u003c/a\u003e [enable\\_node\\_public\\_ip](#input\\_enable\\_node\\_public\\_ip) | (Optional) Should nodes in this Node Pool have a Public IP Address? Defaults to false. | `bool` | `false` | no |\r\n| \u003ca name=\"input_identity_type\"\u003e\u003c/a\u003e [identity\\_type](#input\\_identity\\_type) | The type of identity to be used, defaults to system-assigned | `string` | `\"SystemAssigned\"` | no |\r\n| \u003ca name=\"input_kubernetes_version\"\u003e\u003c/a\u003e [kubernetes\\_version](#input\\_kubernetes\\_version) | The kubernetes version in floating point | `string` | n/a | yes |\r\n| \u003ca name=\"input_location\"\u003e\u003c/a\u003e [location](#input\\_location) | The location for this resource to be put in | `string` | n/a | yes |\r\n| \u003ca name=\"input_net_profile_dns_service_ip\"\u003e\u003c/a\u003e [net\\_profile\\_dns\\_service\\_ip](#input\\_net\\_profile\\_dns\\_service\\_ip) | (Optional) IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created. | `string` | `null` | no |\r\n| \u003ca name=\"input_net_profile_docker_bridge_cidr\"\u003e\u003c/a\u003e [net\\_profile\\_docker\\_bridge\\_cidr](#input\\_net\\_profile\\_docker\\_bridge\\_cidr) | (Optional) IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created. | `string` | `null` | no |\r\n| \u003ca name=\"input_net_profile_outbound_type\"\u003e\u003c/a\u003e [net\\_profile\\_outbound\\_type](#input\\_net\\_profile\\_outbound\\_type) | (Optional) The outbound (egress) routing method which should be used for this Kubernetes Cluster. Possible values are loadBalancer and userDefinedRouting. Defaults to loadBalancer. | `string` | `\"loadBalancer\"` | no |\r\n| \u003ca name=\"input_net_profile_pod_cidr\"\u003e\u003c/a\u003e [net\\_profile\\_pod\\_cidr](#input\\_net\\_profile\\_pod\\_cidr) | (Optional) The CIDR to use for pod IP addresses. This field can only be set when network\\_plugin is set to kubenet. Changing this forces a new resource to be created. | `string` | `null` | no |\r\n| \u003ca name=\"input_net_profile_service_cidr\"\u003e\u003c/a\u003e [net\\_profile\\_service\\_cidr](#input\\_net\\_profile\\_service\\_cidr) | (Optional) The Network Range used by the Kubernetes service. Changing this forces a new resource to be created. | `string` | `null` | no |\r\n| \u003ca name=\"input_network_plugin\"\u003e\u003c/a\u003e [network\\_plugin](#input\\_network\\_plugin) | Network plugin to use for networking. | `string` | `\"kubenet\"` | no |\r\n| \u003ca name=\"input_network_policy\"\u003e\u003c/a\u003e [network\\_policy](#input\\_network\\_policy) | (Optional) Sets up network policy to be used with Azure CNI. Network policy allows us to control the traffic flow between pods. Currently supported values are calico and azure. Changing this forces a new resource to be created. | `string` | `null` | no |\r\n| \u003ca name=\"input_private_cluster_enabled\"\u003e\u003c/a\u003e [private\\_cluster\\_enabled](#input\\_private\\_cluster\\_enabled) | If true cluster API server will be exposed only on internal IP address and available only in cluster vnet. | `bool` | `true` | no |\r\n| \u003ca name=\"input_rg_name\"\u003e\u003c/a\u003e [rg\\_name](#input\\_rg\\_name) | The name of the resource group, this module does not create a resource group, it is expecting the value of a resource group already exists | `string` | n/a | yes |\r\n| \u003ca name=\"input_sku_tier\"\u003e\u003c/a\u003e [sku\\_tier](#input\\_sku\\_tier) | The SKU tier of the kubernetes cluster, default is Free.  Difference only is if there is an SLA | `string` | `\"Free\"` | no |\r\n| \u003ca name=\"input_ssh_public_key\"\u003e\u003c/a\u003e [ssh\\_public\\_key](#input\\_ssh\\_public\\_key) | The public key for the admin user | `string` | n/a | yes |\r\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | The tags assigned to the resource | `map(string)` | n/a | yes |\r\n| \u003ca name=\"input_user_assigned_identity_id\"\u003e\u003c/a\u003e [user\\_assigned\\_identity\\_id](#input\\_user\\_assigned\\_identity\\_id) | The ID of the user assigned managed identity | `string` | n/a | yes |\r\n\r\n## Outputs\r\n\r\n| Name | Description |\r\n|------|-------------|\r\n| \u003ca name=\"output_cluster_api_service_authorised_ranges\"\u003e\u003c/a\u003e [cluster\\_api\\_service\\_authorised\\_ranges](#output\\_cluster\\_api\\_service\\_authorised\\_ranges) | The list of authorised IPs |\r\n| \u003ca name=\"output_cluster_fqdn\"\u003e\u003c/a\u003e [cluster\\_fqdn](#output\\_cluster\\_fqdn) | The FQDN of the cluster |\r\n| \u003ca name=\"output_cluster_id\"\u003e\u003c/a\u003e [cluster\\_id](#output\\_cluster\\_id) | The id of the cluster |\r\n| \u003ca name=\"output_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#output\\_cluster\\_name) | The name of the cluster |\r\n| \u003ca name=\"output_kube_admin_config\"\u003e\u003c/a\u003e [kube\\_admin\\_config](#output\\_kube\\_admin\\_config) | The name of full kube\\_admin config, is a sensitive value |\r\n| \u003ca name=\"output_kube_client_certificate\"\u003e\u003c/a\u003e [kube\\_client\\_certificate](#output\\_kube\\_client\\_certificate) | The client certificate within the kube config, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kube_client_key\"\u003e\u003c/a\u003e [kube\\_client\\_key](#output\\_kube\\_client\\_key) | The client secret within the kube conifg, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kube_cluster_ca_certificate\"\u003e\u003c/a\u003e [kube\\_cluster\\_ca\\_certificate](#output\\_kube\\_cluster\\_ca\\_certificate) | The client ca certificate located within the kube config, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kube_config\"\u003e\u003c/a\u003e [kube\\_config](#output\\_kube\\_config) | The full kube\\_config block, is a sensitive value |\r\n| \u003ca name=\"output_kube_config_host\"\u003e\u003c/a\u003e [kube\\_config\\_host](#output\\_kube\\_config\\_host) | The name of the config host within kube config, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kube_password\"\u003e\u003c/a\u003e [kube\\_password](#output\\_kube\\_password) | The user password within kube config, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kube_username\"\u003e\u003c/a\u003e [kube\\_username](#output\\_kube\\_username) | The username within kube config, needed for terraform kubernetes provider |\r\n| \u003ca name=\"output_kublet_identity\"\u003e\u003c/a\u003e [kublet\\_identity](#output\\_kublet\\_identity) | The first element of the identity object |\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-aks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibre-devops%2Fterraform-azurerm-aks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-devops%2Fterraform-azurerm-aks/lists"}