Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
56219fa
Add skeleton for linux_virtual_machines module
BorislavRaynov Jan 17, 2025
3730d61
Add locals
BorislavRaynov Jan 17, 2025
5b8e5ef
Add linux vm configs
BorislavRaynov Jan 17, 2025
2bdc639
Add network interface.
BorislavRaynov Jan 17, 2025
45df798
Fix variables resources in module
BorislavRaynov Jan 17, 2025
af16293
Refactor output
BorislavRaynov Jan 17, 2025
7de45fa
Refactor output
BorislavRaynov Jan 17, 2025
e268cce
Add public key
BorislavRaynov Jan 17, 2025
2442890
Refactor locals
BorislavRaynov Jan 17, 2025
9ab6ad6
Refactor subnet id in locals
BorislavRaynov Jan 17, 2025
cc90a8e
Refactor subnet id in locals
BorislavRaynov Jan 20, 2025
c2d54e3
Refactor subnet id in locals
BorislavRaynov Jan 20, 2025
a03558a
Refactor nic ip config
BorislavRaynov Jan 20, 2025
f95b529
Refactor locals
BorislavRaynov Jan 20, 2025
d910a36
Refactor subnet id in locals
BorislavRaynov Jan 20, 2025
4f30aef
Refactor code
BorislavRaynov Jan 20, 2025
ddbd352
Refactor locals
BorislavRaynov Jan 20, 2025
2722b63
Refactor public_key
BorislavRaynov Jan 20, 2025
0519fec
Refactor public key in locals
BorislavRaynov Jan 20, 2025
1321df9
Refactor nic in locals
BorislavRaynov Jan 20, 2025
e2a8c4c
Refactor nic in locals
BorislavRaynov Jan 20, 2025
1262415
Refactor nic in locals
BorislavRaynov Jan 20, 2025
1c004f5
Refactor nic in locals
BorislavRaynov Jan 20, 2025
9d1649b
Refactor public key in locals
BorislavRaynov Jan 20, 2025
9c2234c
Refactor public key in locals
BorislavRaynov Jan 20, 2025
94ef2f6
Refactor locals
BorislavRaynov Jan 20, 2025
2248f13
Add key creation for each vm
BorislavRaynov Jan 20, 2025
f06100e
Refactor to submodules
BorislavRaynov Jan 20, 2025
4f36b18
refactor nic module
BorislavRaynov Jan 20, 2025
8296df3
Refactored locals
BorislavRaynov Jan 20, 2025
ad7b077
Refactor locals
BorislavRaynov Jan 20, 2025
bda9595
Refactor locals
BorislavRaynov Jan 20, 2025
937daeb
Refactor module
BorislavRaynov Jan 20, 2025
e81d7d5
Refactor code
BorislavRaynov Jan 20, 2025
e0706b2
Refactor code
BorislavRaynov Jan 20, 2025
bd02b28
Refactor modules
BorislavRaynov Jan 20, 2025
875425a
Refactor module
BorislavRaynov Jan 20, 2025
53c55e8
Refactor code.
BorislavRaynov Jan 20, 2025
c9ee48e
Refactor code
BorislavRaynov Jan 21, 2025
41b9d3b
Refactoring
BorislavRaynov Jan 21, 2025
2a29197
Refactor subnet_id
BorislavRaynov Jan 21, 2025
76404b2
Refacotr ouputs
BorislavRaynov Jan 21, 2025
2fd2926
Refactor module
BorislavRaynov Jan 21, 2025
a122193
Refactor module
BorislavRaynov Jan 21, 2025
d53d35c
Refactor subnet id in loals network interfaces
BorislavRaynov Jan 21, 2025
25bc20a
Refactor code
BorislavRaynov Jan 21, 2025
76fb0ea
Refactor code
BorislavRaynov Jan 21, 2025
6ad1210
Refactor locals
BorislavRaynov Jan 21, 2025
6897993
Refactor resource
BorislavRaynov Jan 21, 2025
1fc003d
Refactor resource
BorislavRaynov Jan 21, 2025
7bdd82c
Refacotr modules
BorislavRaynov Jan 21, 2025
f2d61b6
Refactor code
BorislavRaynov Jan 21, 2025
b1240cf
Refactor code
BorislavRaynov Jan 21, 2025
a6ce10d
Refactor code
BorislavRaynov Jan 21, 2025
ea09620
Refactor code
BorislavRaynov Jan 21, 2025
ef2bb0f
Add all_settings for nic
BorislavRaynov Jan 21, 2025
3c2201f
Refactor code
BorislavRaynov Jan 21, 2025
9f3b0ac
Refactor linux vm module
BorislavRaynov Jan 21, 2025
952a203
Refactor locals
BorislavRaynov Jan 21, 2025
9aa7afe
Refactor code
BorislavRaynov Jan 21, 2025
57db050
Refactor code
BorislavRaynov Jan 21, 2025
4e91bb6
Refactor code
BorislavRaynov Jan 21, 2025
83b5b96
Refactor code
BorislavRaynov Jan 21, 2025
aff91fb
Refactor code
BorislavRaynov Jan 21, 2025
a77fd9d
Refactor ouputs
BorislavRaynov Jan 21, 2025
7a55a44
Refactor code
BorislavRaynov Jan 21, 2025
31bffe7
Remove comments
BorislavRaynov Jan 21, 2025
ece2c54
Add try on optional configs
BorislavRaynov Jan 21, 2025
4fe1ccd
Add windows virtual machine module
BorislavRaynov Jan 21, 2025
f5642b3
Refacotr settings in top level module
BorislavRaynov Jan 21, 2025
551bac4
Remove comments
BorislavRaynov Jan 21, 2025
8896194
Refactor modules
BorislavRaynov Jan 21, 2025
f72dfad
Add local global settings
BorislavRaynov Jan 22, 2025
66fa738
Add secret to keyvault
BorislavRaynov Jan 22, 2025
2a09c9a
Remove not needed resources
BorislavRaynov Jan 22, 2025
7165346
Refactor secret
BorislavRaynov Jan 22, 2025
d15467f
Refactor networking.tf
BorislavRaynov Jan 22, 2025
ebf6821
Refactor provider
BorislavRaynov Jan 22, 2025
4c16fe3
Refactor provider.tf
BorislavRaynov Jan 22, 2025
d2e31ca
Import data
BorislavRaynov Jan 22, 2025
8307272
Refactor code
BorislavRaynov Jan 22, 2025
fe92da7
Add keyvault module to vm module resources
BorislavRaynov Jan 22, 2025
0ca1100
Remove unnecessary resources
BorislavRaynov Jan 23, 2025
14fb30e
Remove unnecessary resource
BorislavRaynov Jan 23, 2025
0c55fb9
Add example for virtual_machines module
BorislavRaynov Jan 23, 2025
d5dd790
Add tags
BorislavRaynov Jan 24, 2025
2b5ccbc
Refactor tags
BorislavRaynov Jan 24, 2025
4c8ce4f
Refactor tags
BorislavRaynov Jan 24, 2025
940fe94
Refactor tags
BorislavRaynov Jan 24, 2025
1fb1b04
Change ip alocation default value
BorislavRaynov Jan 24, 2025
608a72a
Convert nics output to list
BorislavRaynov Jan 24, 2025
be5aba4
Remove try in network_interface_ids
BorislavRaynov Jan 24, 2025
121a841
Refactor locals
BorislavRaynov Jan 24, 2025
625fc55
Add access policy
BorislavRaynov Jan 24, 2025
46b7719
Refactor code
BorislavRaynov Jan 24, 2025
c751dbe
Merge branch 'main' into TC-17
BorislavRaynov Jan 27, 2025
6ab3bed
Restore module files
BorislavRaynov Jan 27, 2025
f18fc2c
Merge branch 'devli' into TC-17
BorislavRaynov Jan 27, 2025
e3b1ecd
Refactor code
BorislavRaynov Jan 27, 2025
55928e0
Fix linting
BorislavRaynov Jan 27, 2025
19bf3a0
Refacror code
BorislavRaynov Jan 27, 2025
5c85cd1
Add storage account module
BorislavRaynov Jan 27, 2025
571418c
Add dynamic block
BorislavRaynov Jan 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions examples/virtual_machines.tfvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
virtual_machines = {
machine_1 = {
type = "windows"
name = "vm-win-braytest-dv-ne-02"
resource_group_ref = "rg_test"
size = "Standard_F2"
admin_username = "adminuser"
admin_password = "P@$$w0rd1234!"

os_disk = {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}

source_image_reference = {
publisher = "MicrosoftWindowsServer"
offer = "WindowsServer"
sku = "2016-Datacenter"
version = "latest"
}

network_interfaces = {
nic_1 = {
name = "test_nic_1"
ip_configuration = {
name = "int-01"
subnet_ref = "vnet_test/snet_app"
}
}

nic_2 = {
name = "test_nic_2"
ip_configuration = {
name = "int-02"
subnet_ref = "vnet_test/snet_app"
}
}
}
}

machine_2 = {
type = "linux"
name = "vm-lin-braytest-dv-ne-02"
resource_group_ref = "rg_test"
size = "Standard_F2"
admin_username = "adminuser"
keyvault_ref = "kv-test"

network_interfaces = {
nic_3 = {
name = "test_nic_3"
ip_configuration = {
name = "int-03"
subnet_ref = "vnet_test/snet_app"
private_ip_address_allocation = "Dynamic"
}
}

nic_4 = {
name = "test_nic_4"
ip_configuration = {
name = "int-04"
subnet_ref = "vnet_test/snet_app"
}
}
}

public_key_openssh = {
test_key_1 = {
algorithm = "RSA"
rsa_bits = 4096
}
}

admin_ssh_key = {
username = "adminuser"
public_key_ref = "test_key_1"
}

os_disk = {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}

source_image_reference = {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts"
version = "latest"
}
}
}


# pre-requisites
resource_groups = {
rg_test = {
name = "rg-braytest-dv-ne-02"
location = "northeurope"
}
}

virtual_networks = {
vnet_test = {
name = "vnet-test-dv-ne-01"
resource_group_ref = "rg_test"
cidr = ["10.0.0.0/16"]
subnets = {
snet_app = {
name = "snet-test-dv-ne-01"
cidr = ["10.0.0.128/25"]
service_endpoints = ["Microsoft.Storage"]
}
}
}
}

keyvaults = {
kv-test = {
name = "kv-braytest-dv-ne-02"
resource_group_ref = "rg_test"

secrets = {
secret-test = {
ignore_changes = false
}
}
}
}
2 changes: 2 additions & 0 deletions src/_variables.resources.tf
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ variable "keyvaults" { default = {} }

variable "storage_accounts" { default = {} }

variable "virtual_machines" { default = {} }

variable "private_dns_zones" { default = {} }

variable "virtual_network_gateway_connections" { default = {} }
Expand Down
4 changes: 3 additions & 1 deletion src/_variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ variable "global_settings" {
})

default = {
tags = {}
tags = {

}
inherit_resource_group_tags = false
}
}
1 change: 1 addition & 0 deletions src/keyvault.tf
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module "keyvaults" {
settings = each.value
global_settings = local.global_settings
resources = {
resource_groups = module.resource_groups
virtual_networks = module.virtual_networks
resource_groups = module.resource_groups
managed_identities = module.managed_identities
Expand Down
3 changes: 0 additions & 3 deletions src/modules/_networking/virtual_network/_variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,5 @@ variable "settings" {
}

variable "resources" {
type = object({
resource_groups = map(any)
})
description = "All required resources"
}
2 changes: 1 addition & 1 deletion src/modules/_networking/virtual_network/virtual_network.tf
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ resource "azurerm_virtual_network" "main" {

address_space = var.settings.cidr

tags = try(local.tags, null)
tags = local.tags
}
2 changes: 1 addition & 1 deletion src/modules/compute/kubernetes/_outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
output "id" {
value = module.kubernetes_cluster.id
}
}
12 changes: 6 additions & 6 deletions src/modules/compute/kubernetes/aks.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ module "kubernetes_cluster" {
source = "./kubernetes_cluster"
settings = var.settings
global_settings = var.global_settings
resources = var.resources
resources = var.resources
}

module "kubernetes_cluster_node_pool" {
source = "./kubernetes_cluster_node_pool"
source = "./kubernetes_cluster_node_pool"
for_each = var.settings.additional_node_pools
cluster_id = module.kubernetes_cluster.id
all_settings = var.settings

cluster_id = module.kubernetes_cluster.id
all_settings = var.settings
settings = each.value
global_settings = var.global_settings
resources = var.resources
resources = var.resources
}
32 changes: 16 additions & 16 deletions src/modules/compute/kubernetes/kubernetes_cluster/_locals.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
locals {
resource_group = var.resources.resource_groups[var.settings.resource_group_ref]
resource_group = var.resources.resource_groups[var.settings.resource_group_ref]
resource_group_name = local.resource_group.name
location = local.resource_group.location
subnet_ids = [
Expand All @@ -11,8 +11,8 @@ locals {
var.resources.virtual_networks[split("/", var.settings.default_node_pool.subnet_ref)[0]].subnets[split("/", var.settings.default_node_pool.subnet_ref)[1]].id,
null
)
managed_identity = can(var.resources.managed_identities[var.settings.identity.managed_identity_ref]) ? var.resources.managed_identities[var.settings.identity.managed_identity_ref] : null
kubelet_identity = can(var.resources.managed_identities[var.settings.kubelet_identity.managed_identity_ref]) ? var.resources.managed_identities[var.settings.kubelet_identity.managed_identity_ref] : null
managed_identity = can(var.resources.managed_identities[var.settings.identity.managed_identity_ref]) ? var.resources.managed_identities[var.settings.identity.managed_identity_ref] : null
kubelet_identity = can(var.resources.managed_identities[var.settings.kubelet_identity.managed_identity_ref]) ? var.resources.managed_identities[var.settings.kubelet_identity.managed_identity_ref] : null
tags = merge(
var.global_settings.tags,
var.global_settings.inherit_resource_group_tags ? local.resource_group.tags : {},
Expand All @@ -25,17 +25,17 @@ locals {

locals {
effective_network_profile = {
network_plugin = try(var.settings.network_profile.network_plugin, "azure")
network_mode = try(var.settings.network_profile.network_mode, "transparent")
network_policy = try(var.settings.network_profile.network_policy, "calico")
load_balancer_sku = try(var.settings.network_profile.load_balancer_sku, "standard")
network_data_plane = try(var.settings.network_profile.network_data_plane, "azure")
network_plugin_mode = try(var.settings.network_profile.network_plugin_mode, null)
outbound_type = try(var.settings.network_profile.outbound_type, "loadBalancer")
dns_service_ip = try(var.settings.network_profile.dns_service_ip, null)
service_cidr = try(var.settings.network_profile.service_cidr, null)
service_cidrs = try(var.settings.network_profile.service_cidrs, null)
pod_cidr = try(var.settings.network_profile.pod_cidr, null)
network_plugin = try(var.settings.network_profile.network_plugin, "azure")
network_mode = try(var.settings.network_profile.network_mode, "transparent")
network_policy = try(var.settings.network_profile.network_policy, "calico")
load_balancer_sku = try(var.settings.network_profile.load_balancer_sku, "standard")
network_data_plane = try(var.settings.network_profile.network_data_plane, "azure")
network_plugin_mode = try(var.settings.network_profile.network_plugin_mode, null)
outbound_type = try(var.settings.network_profile.outbound_type, "loadBalancer")
dns_service_ip = try(var.settings.network_profile.dns_service_ip, null)
service_cidr = try(var.settings.network_profile.service_cidr, null)
service_cidrs = try(var.settings.network_profile.service_cidrs, null)
pod_cidr = try(var.settings.network_profile.pod_cidr, null)
}
validated_network_data_plane = local.effective_network_profile.network_policy == "cilium" && local.effective_network_profile.network_data_plane != "cilium" ? error("Error: When network_policy is set to 'cilium', the network_data_plane must also be set to 'cilium'.") : local.effective_network_profile.network_data_plane
}
validated_network_data_plane = local.effective_network_profile.network_policy == "cilium" && local.effective_network_profile.network_data_plane != "cilium" ? error("Error: When network_policy is set to 'cilium', the network_data_plane must also be set to 'cilium'.") : local.effective_network_profile.network_data_plane
}
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
resource "azurerm_kubernetes_cluster_node_pool" "main" {
name = var.settings.name
kubernetes_cluster_id = var.cluster_id
vm_size = try(var.settings.vm_size, "Standard_DS2_v2")
node_count = try(var.settings.node_count, 1)
auto_scaling_enabled = try(var.settings.auto_scaling_enabled, false)
min_count = try(var.settings.min_count, null)
max_count = try(var.settings.max_count, null)
max_pods = try(var.settings.max_pods, null)
zones = try(var.settings.zones, null)
node_labels = try(var.settings.node_labels, null)
node_taints = try(var.settings.node_taints, null)
os_disk_type = try(var.settings.os_disk_type, null)
os_disk_size_gb = try(var.settings.os_disk_size_gb, null)
os_sku = try(var.settings.os_sku, "Ubuntu")
pod_subnet_id = try(var.settings.pod_subnet_id, null)
vnet_subnet_id = try(local.vnet_subnet_id, null)
os_type = try(var.settings.os_type, null)
ultra_ssd_enabled = try(var.settings.ultra_ssd_enabled, false)
tags = local.tags
fips_enabled = try(var.settings.fips_enabled, false)
host_encryption_enabled = try(var.settings.host_encryption_enabled, false)
kubelet_disk_type = try(var.settings.kubelet_disk_type, "OS")
name = var.settings.name
kubernetes_cluster_id = var.cluster_id
vm_size = try(var.settings.vm_size, "Standard_DS2_v2")
node_count = try(var.settings.node_count, 1)
auto_scaling_enabled = try(var.settings.auto_scaling_enabled, false)
min_count = try(var.settings.min_count, null)
max_count = try(var.settings.max_count, null)
max_pods = try(var.settings.max_pods, null)
zones = try(var.settings.zones, null)
node_labels = try(var.settings.node_labels, null)
node_taints = try(var.settings.node_taints, null)
os_disk_type = try(var.settings.os_disk_type, null)
os_disk_size_gb = try(var.settings.os_disk_size_gb, null)
os_sku = try(var.settings.os_sku, "Ubuntu")
pod_subnet_id = try(var.settings.pod_subnet_id, null)
vnet_subnet_id = try(local.vnet_subnet_id, null)
os_type = try(var.settings.os_type, null)
ultra_ssd_enabled = try(var.settings.ultra_ssd_enabled, false)
tags = local.tags
fips_enabled = try(var.settings.fips_enabled, false)
host_encryption_enabled = try(var.settings.host_encryption_enabled, false)
kubelet_disk_type = try(var.settings.kubelet_disk_type, "OS")
node_public_ip_enabled = try(var.settings.node_public_ip_enabled, false)
orchestrator_version = try(var.settings.orchestrator_version, null)
orchestrator_version = try(var.settings.orchestrator_version, null)
}
8 changes: 0 additions & 8 deletions src/modules/keyvault/_variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,6 @@ variable "settings" {
description = "All the configuration for this resource"
}



variable "resources" {
type = object({
resource_groups = map(any)
virtual_networks = map(any)
managed_identities = map(any)
private_dns_zones = map(any)
})
description = "All required resources"
}
8 changes: 4 additions & 4 deletions src/modules/keyvault/access_policies.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module "initial_policy" {
source = "./keyvault_access_policy"
for_each = try(var.settings.access_policies, {})

settings = var.settings
global_settings = var.global_settings

keyvault_id = azurerm_key_vault.main.id
access_policies = each.value
policy_name = each.key
global_settings = var.global_settings
policy_name = each.key

resources = var.resources
}

6 changes: 3 additions & 3 deletions src/modules/keyvault/keyvault.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ resource "azurerm_key_vault" "main" {
resource_group_name = local.resource_group_name
location = local.location
tags = local.tags
tenant_id = var.global_settings.tenant_id

tenant_id = var.global_settings.tenant_id
sku_name = try(var.settings.sku_name, "standard")

sku_name = try(var.settings.sku_name, "standard")
enabled_for_disk_encryption = try(var.settings.enabled_for_disk_encryption, null)
soft_delete_retention_days = try(var.settings.soft_delete_retention_days, null)
purge_protection_enabled = try(var.settings.purge_protection_enabled, null)
enable_rbac_authorization = try(var.settings.enable_rbac_authorization, false)

public_network_access_enabled = try(var.settings.public_network_access_enabled, false)

network_acls {
Expand Down
2 changes: 1 addition & 1 deletion src/modules/keyvault/keyvault_access_policy/_locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,6 @@ locals {


locals {
debug_settings = var.settings
debug_settings = var.settings
has_logged_in_key = contains(keys(var.settings), "managed_identity")
}
Loading
Loading