Skip to content

Commit 79f5b36

Browse files
Add Azure Linux Virtual Machine Terraform Module (#22)
* terraform fmt * azure vm inux module * fix coudinit file path issue * vm fix * terrform installation * DEVOPS-312 vm terraform module
1 parent f20c9a1 commit 79f5b36

File tree

16 files changed

+476
-140
lines changed

16 files changed

+476
-140
lines changed

api-management/apim.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ resource "azurerm_resource_group" "rg" {
66
Orchestrator = "Terraform"
77
DisplayName = upper(var.resource_group_name)
88
ApplicationName = lower(var.application_name)
9-
Temporary = upper(var.temporary)
9+
Temporary = upper(var.temporary)
1010
}
1111
}
1212

@@ -16,12 +16,12 @@ resource "azurerm_api_management" "apim" {
1616
resource_group_name = azurerm_resource_group.rg.name
1717
publisher_name = tostring(var.publisher_name)
1818
publisher_email = tostring(var.publisher_email)
19-
sku_name = "${var.sku_name_part1}_${var.sku_name_part2}"
19+
sku_name = "${var.sku_name_part1}_${var.sku_name_part2}"
2020
tags = {
2121
Environment = upper(var.environment)
2222
Orchestrator = "Terraform"
2323
DisplayName = upper(var.resource_group_name)
2424
ApplicationName = lower(var.application_name)
25-
Temporary = upper(var.temporary)
25+
Temporary = upper(var.temporary)
2626
}
2727
}

container-registry/acr.tf

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,41 @@ resource "azurerm_resource_group" "acr_rg" {
1212

1313

1414
resource "azurerm_container_registry" "acr" {
15-
name = var.container_registry_name
15+
name = var.container_registry_name
1616
resource_group_name = azurerm_resource_group.acr_rg.name
17-
location = azurerm_resource_group.acr_rg.location
18-
sku = var.sku_name
17+
location = azurerm_resource_group.acr_rg.location
18+
sku = var.sku_name
1919

2020
dynamic "georeplications" {
2121
for_each = var.georeplications
2222
content {
2323
location = georeplications.value.location
2424
zone_redundancy_enabled = var.sku_name == "Premium" ? georeplications.value.zone_redundancy_enabled : false
2525
tags = {
26-
Environment = upper(var.environment)
27-
Orchestrator = "Terraform"
28-
DisplayName = "replication-${upper(var.container_registry_name)}"
29-
ApplicationName = lower(var.application_name)
30-
Temporary = upper(var.temporary)
31-
}
26+
Environment = upper(var.environment)
27+
Orchestrator = "Terraform"
28+
DisplayName = "replication-${upper(var.container_registry_name)}"
29+
ApplicationName = lower(var.application_name)
30+
Temporary = upper(var.temporary)
31+
}
3232
}
3333
}
3434

35-
retention_policy_in_days = var.sku_name == "Premium" ? var.container_registry_config.retention_policy_in_days : null
36-
public_network_access_enabled = var.container_registry_config.public_network_access_enabled
37-
quarantine_policy_enabled = var.sku_name == "Premium" ? var.container_registry_config.quarantine_policy_enabled : false
38-
zone_redundancy_enabled = var.sku_name == "Premium" ? var.container_registry_config.zone_redundancy_enabled : false
39-
admin_enabled = var.container_registry_config.admin_enabled
40-
anonymous_pull_enabled = var.sku_name != "Basic" ? var.container_registry_config.anonymous_pull_enabled : false
41-
data_endpoint_enabled = var.sku_name == "Premium" ? var.container_registry_config.data_endpoint_enabled : false
42-
trust_policy_enabled = var.sku_name == "Premium" ? var.container_registry_config.trust_policy_enabled : false
35+
retention_policy_in_days = var.sku_name == "Premium" ? var.container_registry_config.retention_policy_in_days : null
36+
public_network_access_enabled = var.container_registry_config.public_network_access_enabled
37+
quarantine_policy_enabled = var.sku_name == "Premium" ? var.container_registry_config.quarantine_policy_enabled : false
38+
zone_redundancy_enabled = var.sku_name == "Premium" ? var.container_registry_config.zone_redundancy_enabled : false
39+
admin_enabled = var.container_registry_config.admin_enabled
40+
anonymous_pull_enabled = var.sku_name != "Basic" ? var.container_registry_config.anonymous_pull_enabled : false
41+
data_endpoint_enabled = var.sku_name == "Premium" ? var.container_registry_config.data_endpoint_enabled : false
42+
trust_policy_enabled = var.sku_name == "Premium" ? var.container_registry_config.trust_policy_enabled : false
4343

44-
network_rule_bypass_option = var.azure_services_bypass
45-
tags = {
46-
Environment = upper(var.environment)
47-
Orchestrator = "Terraform"
48-
DisplayName = upper(var.container_registry_name)
49-
ApplicationName = lower(var.application_name)
50-
Temporary = upper(var.temporary)
51-
}
44+
network_rule_bypass_option = var.azure_services_bypass
45+
tags = {
46+
Environment = upper(var.environment)
47+
Orchestrator = "Terraform"
48+
DisplayName = upper(var.container_registry_name)
49+
ApplicationName = lower(var.application_name)
50+
Temporary = upper(var.temporary)
51+
}
5252
}

container-registry/outputs.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ output "acr_admin_password" {
2828
description = " Password associated with the Container Registry Admin account - if the admin account is enabled"
2929
value = nonsensitive(azurerm_container_registry.acr.admin_password)
3030
depends_on = [azurerm_container_registry.acr]
31-
sensitive = false
31+
sensitive = false
3232
}
3333

3434
output "acr_anonymous_pull_enabled" {

keyvault-nonprod/keyvault.tf

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,36 @@ resource "azurerm_resource_group" "keyvault_rg" {
1111
}
1212

1313
resource "azurerm_key_vault" "kv" {
14-
name = var.keyvault_name
15-
resource_group_name = azurerm_resource_group.keyvault_rg.name
16-
location = azurerm_resource_group.keyvault_rg.location
17-
tenant_id = data.azurerm_client_config.current.tenant_id
18-
sku_name = var.sku_name
19-
20-
enable_rbac_authorization = var.enable_rbac_authorization
21-
enabled_for_deployment = var.azure_vms_can_access_certs_stored_as_secrets
22-
enabled_for_disk_encryption = var.azure_disk_encryption_can_retrieve_secrets
14+
name = var.keyvault_name
15+
resource_group_name = azurerm_resource_group.keyvault_rg.name
16+
location = azurerm_resource_group.keyvault_rg.location
17+
tenant_id = data.azurerm_client_config.current.tenant_id
18+
sku_name = var.sku_name
19+
20+
enable_rbac_authorization = var.enable_rbac_authorization
21+
enabled_for_deployment = var.azure_vms_can_access_certs_stored_as_secrets
22+
enabled_for_disk_encryption = var.azure_disk_encryption_can_retrieve_secrets
2323
enabled_for_template_deployment = var.azure_resource_manager_can_retrieve_secrets
2424

25-
purge_protection_enabled = var.purge_protection_enabled
25+
purge_protection_enabled = var.purge_protection_enabled
2626
soft_delete_retention_days = var.soft_delete_retention_days
2727

2828
public_network_access_enabled = var.public_network_access_enabled
2929

3030
access_policy {
3131
tenant_id = data.azurerm_client_config.current.tenant_id
3232
object_id = data.azurerm_client_config.current.object_id
33-
33+
3434
key_permissions = [
3535
"Get", "List", "Create", "Recover", "Purge", "UnwrapKey", "Update", "WrapKey", "Rotate", "GetRotationPolicy", "SetRotationPolicy"
3636
]
3737

3838
secret_permissions = [
39-
"Get","Set", "List", "Delete", "Recover"
39+
"Get", "Set", "List", "Delete", "Recover"
4040
]
4141

4242
storage_permissions = [
43-
"Get", "Delete", "List", "Recover", "RegenerateKey","Restore","Set" , "SetSAS", "Update"
43+
"Get", "Delete", "List", "Recover", "RegenerateKey", "Restore", "Set", "SetSAS", "Update"
4444
]
4545

4646
certificate_permissions = [

keyvault-nonprod/variables.tf

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ variable "sku_name" {
1919
default = "standard"
2020
description = "Keyvault SKUs available in azure. Valid options are standard and premium"
2121
validation {
22-
condition = contains(["standard", "premium"], var.sku_name)
22+
condition = contains(["standard", "premium"], var.sku_name)
2323
error_message = "Keyvault SKU should be one among standard or premium"
2424
}
2525
}
@@ -52,47 +52,47 @@ variable "temporary" {
5252
}
5353

5454
variable "azure_vms_can_access_certs_stored_as_secrets" {
55-
default = false
56-
type = bool
55+
default = false
56+
type = bool
5757
description = "Boolean flag to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault"
5858
}
5959

60-
variable "azure_disk_encryption_can_retrieve_secrets"{
61-
default = false
62-
type = bool
60+
variable "azure_disk_encryption_can_retrieve_secrets" {
61+
default = false
62+
type = bool
6363
description = "Boolean flag to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys"
6464
}
6565

66-
variable "azure_resource_manager_can_retrieve_secrets"{
67-
default = false
68-
type = bool
66+
variable "azure_resource_manager_can_retrieve_secrets" {
67+
default = false
68+
type = bool
6969
description = "Boolean flag to specify whether Azure Resource Manager is permitted to retrieve secrets from the vault"
7070
}
7171

7272
variable "enable_rbac_authorization" {
73-
default = false
74-
type = bool
73+
default = false
74+
type = bool
7575
description = "Boolean flag to specify whether Azure Key Vault uses Role Based Access Control (RBAC) for authorization of data actions"
7676
}
7777

7878
variable "purge_protection_enabled" {
79-
type = bool
80-
default = false
79+
type = bool
80+
default = false
8181
description = "Purge Protection enabled or not"
8282
}
8383

8484
variable "public_network_access_enabled" {
85-
default = true
86-
type = bool
85+
default = true
86+
type = bool
8787
description = "Whether public network access is allowed for this Key Vault"
8888
}
8989

9090
variable "soft_delete_retention_days" {
91-
default = 90
92-
type = number
91+
default = 90
92+
type = number
9393
description = " The number of days that items should be retained for once soft-deleted. This value can be between 7 and 90"
9494
validation {
95-
condition = var.soft_delete_retention_days >= 7 && var.soft_delete_retention_days <=90
95+
condition = var.soft_delete_retention_days >= 7 && var.soft_delete_retention_days <= 90
9696
error_message = "This value should be between 7 and 90 both included."
9797
}
9898
}

kubernetes-cluster/kubernetes.tf

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,23 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" {
1717
location = var.location
1818
resource_group_name = azurerm_resource_group.rg.name
1919
automatic_upgrade_channel = var.automatic_upgrade_channel
20-
kubernetes_version = var.kubernetes_version
21-
sku_tier = var.kubernetes_sku_tier
22-
node_resource_group = var.aks_node_resource_group_name
20+
kubernetes_version = var.kubernetes_version
21+
sku_tier = var.kubernetes_sku_tier
22+
node_resource_group = var.aks_node_resource_group_name
2323

2424
dns_prefix = var.aks_cluster_name
2525

2626
azure_active_directory_role_based_access_control {
2727
tenant_id = data.azurerm_client_config.current.tenant_id
2828
admin_group_object_ids = data.azuread_groups.cluster_admin.object_ids
2929
}
30-
30+
3131
network_profile {
3232
network_plugin = var.network_plugin
3333
network_plugin_mode = var.network_plugin_mode
3434
network_policy = var.network_policy
3535
pod_cidr = var.pod_cidr_range
36-
service_cidr = var.service_cidr_subnet
36+
service_cidr = var.service_cidr_subnet
3737
load_balancer_sku = var.load_balancer_sku
3838
dns_service_ip = cidrhost((var.service_cidr_subnet), 5) # 5th ip on service cidr subnet
3939
}
@@ -48,13 +48,13 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" {
4848
dynamic "service_principal" {
4949
for_each = var.authentication_method == "service_principal" ? [1] : []
5050
content {
51-
client_id = data.azurerm_key_vault_secret.appid.value
51+
client_id = data.azurerm_key_vault_secret.appid.value
5252
client_secret = data.azurerm_key_vault_secret.secret.value
5353
}
5454
}
5555

5656
workload_identity_enabled = var.workload_identity_enabled
57-
oidc_issuer_enabled = var.workload_identity_enabled ? true : false
57+
oidc_issuer_enabled = var.workload_identity_enabled ? true : false
5858

5959
support_plan = var.support_plan
6060

@@ -70,12 +70,12 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" {
7070
auto_scaling_enabled = var.default_nodepool_autoscaling
7171
type = "VirtualMachineScaleSets"
7272
node_public_ip_enabled = var.node_public_ip_enabled
73-
orchestrator_version = var.kubernetes_version
73+
orchestrator_version = var.kubernetes_version
7474
max_pods = var.max_pods_per_node
7575
vnet_subnet_id = data.azurerm_subnet.vnet_subnet_cidr.id
7676
os_sku = var.os_sku
77-
max_count = var.default_nodepool_max_count
78-
min_count = var.default_nodepool_min_count
77+
max_count = var.default_nodepool_max_count
78+
min_count = var.default_nodepool_min_count
7979
tags = {
8080
Environment = upper(var.environment)
8181
DisplayName = upper(var.default_nodepool_name)
@@ -85,7 +85,7 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" {
8585

8686
}
8787

88-
depends_on = [ azurerm_resource_group.rg ]
88+
depends_on = [azurerm_resource_group.rg]
8989

9090
key_vault_secrets_provider {
9191
secret_rotation_enabled = var.key_vault_secrets_provider
@@ -104,25 +104,25 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" {
104104

105105
# Create worker nodepool
106106
resource "azurerm_kubernetes_cluster_node_pool" "workernodes" {
107-
name = var.worker_nodepool_name
108-
kubernetes_cluster_id = azurerm_kubernetes_cluster.aks_cluster.id
107+
name = var.worker_nodepool_name
108+
kubernetes_cluster_id = azurerm_kubernetes_cluster.aks_cluster.id
109109
vm_size = var.worker_nodepool_sku
110-
auto_scaling_enabled = var.worker_nodepool_autoscaling
110+
auto_scaling_enabled = var.worker_nodepool_autoscaling
111111
node_public_ip_enabled = var.node_public_ip_enabled
112-
priority = var.worker_node_spot ? "Spot" : "Regular"
113-
scale_down_mode = var.worker_node_scaledown_mode
114-
vnet_subnet_id = data.azurerm_subnet.vnet_subnet_cidr.id
115-
min_count = var.worker_nodepool_min_count
116-
max_count = var.worker_nodepool_max_count
117-
eviction_policy = var.worker_nodepool_eviction_policy
118-
os_sku = var.os_sku
119-
os_disk_size_gb = var.os_disk_size_in_gb
120-
orchestrator_version = var.kubernetes_version
121-
max_pods = var.max_pods_per_node
112+
priority = var.worker_node_spot ? "Spot" : "Regular"
113+
scale_down_mode = var.worker_node_scaledown_mode
114+
vnet_subnet_id = data.azurerm_subnet.vnet_subnet_cidr.id
115+
min_count = var.worker_nodepool_min_count
116+
max_count = var.worker_nodepool_max_count
117+
eviction_policy = var.worker_nodepool_eviction_policy
118+
os_sku = var.os_sku
119+
os_disk_size_gb = var.os_disk_size_in_gb
120+
orchestrator_version = var.kubernetes_version
121+
max_pods = var.max_pods_per_node
122122
tags = {
123-
Environment = upper(var.environment)
124-
DisplayName = upper(var.worker_nodepool_name)
125-
ApplicationName = lower(var.application_name)
126-
Temporary = upper(var.temporary)
127-
}
123+
Environment = upper(var.environment)
124+
DisplayName = upper(var.worker_nodepool_name)
125+
ApplicationName = lower(var.application_name)
126+
Temporary = upper(var.temporary)
127+
}
128128
}

kubernetes-cluster/output.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ output "aks_cluster_name" {
55

66
output "aks_cluster_control_plane_url" {
77
description = "FQDN of the Azure Kubernetes Managed Cluster"
8-
value = azurerm_kubernetes_cluster.aks_cluster.fqdn
8+
value = azurerm_kubernetes_cluster.aks_cluster.fqdn
99
}

0 commit comments

Comments
 (0)