-
Notifications
You must be signed in to change notification settings - Fork 2
/
virtual_servers.tf
109 lines (92 loc) · 3.76 KB
/
virtual_servers.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
##############################################################################
# SSH Keys
##############################################################################
resource "ibm_is_ssh_key" "ssh_key" {
count = var.use_ssh_key_data == null && length(var.vsi_vpcs) > 0 ? 1 : 0
name = "${var.prefix}-ssh-key"
public_key = var.ssh_public_key
}
data "ibm_is_ssh_key" "ssh_key" {
count = var.use_ssh_key_data == null ? 0 : 1
name = var.use_ssh_key_data
}
locals {
template_ssh_key_id = (
length(var.vsi_vpcs) == 0
? null
: var.use_ssh_key_data == null
? ibm_is_ssh_key.ssh_key[0].id
: data.ibm_is_ssh_key.ssh_key[0].id
)
}
##############################################################################
##############################################################################
# Create a map of VSI deployments
##############################################################################
module "vsi_deployment_map" {
source = "github.com/Cloud-Schematics/list-to-map"
list = flatten([
for network in var.vsi_vpcs :
[
for tier in var.vsi_subnet_tier :
{
network = network
tier = tier
name = "${network}-${tier}"
}
]
])
}
##############################################################################
##############################################################################
# Get VSI Subnets
##############################################################################
module "vsi_subnets" {
source = "github.com/Cloud-Schematics/get-subnets"
for_each = module.vsi_deployment_map.value
subnet_zone_list = module.icse_vpc_network.vpc_networks[each.value.network].subnet_zone_list
regex = join("|",
[
for zone in range(1, var.vsi_zones + 1) :
"-${each.value.tier}-${zone}"
]
)
}
##############################################################################
##############################################################################
# Create VSI KMS Key
##############################################################################
resource "ibm_kms_key" "vsi_key" {
instance_id = module.icse_vpc_network.key_management_guid
key_name = "${var.prefix}-vsi-key"
standard_key = false
endpoint_type = var.key_management_endpoint_type
}
##############################################################################
##############################################################################
# VSI Deployment
##############################################################################
data "ibm_is_image" "image" {
name = var.image_name
}
module "vsi_deployment" {
source = "github.com/Cloud-Schematics/icse-vsi-deployment"
for_each = module.vsi_deployment_map.value
prefix = var.prefix
tags = var.tags
image_id = true
image_name = data.ibm_is_image.image.id # Prevent force deletion when scaling
vsi_per_subnet = var.vsi_per_subnet
profile = var.profile
resource_group_id = local.resource_group_vpc_map[each.value.network]
vpc_id = module.icse_vpc_network.vpc_networks[each.value.network].id
subnet_zone_list = module.vsi_subnets[each.key].subnets
deployment_name = "${each.key}-vsi"
boot_volume_encryption_key = ibm_kms_key.vsi_key.crn
primary_security_group_ids = [module.security_groups[each.key].groups[0].id]
ssh_key_ids = [local.template_ssh_key_id]
# force await of additional security group rules to ensure network connectivity
# is set up before virtual server creation.
depends_on = [module.advanced_setup]
}
##############################################################################