-
Notifications
You must be signed in to change notification settings - Fork 4
/
variables.tf
226 lines (184 loc) · 7.72 KB
/
variables.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
##############################################################################
# Module Variables
##############################################################################
variable "prefix" {
description = "The prefix that you would like to prepend to your resources"
type = string
}
variable "tags" {
description = "List of Tags for the resource created"
type = list(string)
default = null
}
variable "resource_group_id" {
description = "Resource group ID for the VSI"
type = string
default = null
}
variable "zone" {
description = "Zone where the VSI and Block Storage will be provisioned"
type = string
}
##############################################################################
##############################################################################
# VPC Variables
##############################################################################
variable "vpc_id" {
description = "ID of the VPC where VSI will be provisioned"
type = string
}
##############################################################################
##############################################################################
# Subnet Variables
##############################################################################
variable "primary_subnet_id" {
description = "ID of the subnet where the VSI will be provisioned."
type = string
}
variable "primary_security_group_ids" {
description = "(Optional) List of security group ids to add to the primary network interface. Using an empty list will assign the default VPC security group."
type = list(string)
default = []
}
variable "secondary_subnets" {
description = "(Optional) List of secondary subnets to connect to the instance"
type = list(
object({
name = string # arbitrary name for attaching floating IPs
id = string # subnet id
shortname = optional(string) # shortname of secondary interface used to attach fips
security_groups = optional(list(string)) # list of security groups to add
allow_ip_spoofing = optional(bool) # allow ip spoofing
})
)
default = []
}
##############################################################################
##############################################################################
# VSI Variables
##############################################################################
variable "name" {
description = "Name of the server instance"
type = string
}
variable "image_id" {
description = "ID of the server image to use for VSI creation"
type = string
}
variable "profile" {
description = "Type of machine profile for VSI. Use the command `ibmcloud is instance-profiles` to find available profiles in your region"
type = string
default = "bx2-2x8"
}
variable "ssh_key_ids" {
description = "List of SSH Key Ids. At least one SSH key must be provided"
type = list(string)
validation {
error_message = "To provision VSI at least one VPC SSH Ket must be provided."
condition = length(var.ssh_key_ids) > 0
}
}
##############################################################################
##############################################################################
# Common Optional Variables
##############################################################################
variable "boot_volume_encryption_key" {
description = "(Optional) Boot volume encryption key"
type = string
default = null
}
variable "user_data" {
description = "(Optional) Data to transfer to instance"
type = string
default = null
}
variable "allow_ip_spoofing" {
description = "Allow IP spoofing on primary network interface"
type = bool
default = false
}
variable "add_floating_ip" {
description = "Add a floating IP to the primary network interface."
type = bool
default = false
}
variable "block_storage_volumes" {
description = "List describing the block storage volumes that will be attached to the VSI. Storage volumes will be provisoned in the same resource group as the server instance."
type = list(
object({
name = string # Name of the storage volume
profile = string # Profile to use for the volume
capacity = optional(number) # Capacity in gigabytes. If null, will default to `100`
iops = optional(number) # The total input/ output operations per second (IOPS) for your storage. This value is required for custom storage profiles onli
encryption_key = optional(string) # ID of the key to use to encrypt volume
delete_all_snapshots = optional(bool) # Deletes all snapshots created from this volume.
})
)
default = []
validation {
error_message = "Each block storage volume must have a unique name."
condition = length(distinct(var.block_storage_volumes.*.name)) == length(var.block_storage_volumes)
}
}
##############################################################################
##############################################################################
# Uncommon Optional Variables
##############################################################################
variable "secondary_floating_ips" {
description = "List of secondary interface shortnames to add floating ips"
type = list(string)
default = []
validation {
error_message = "Secondary floating IPs must contain a unique list of interfaces."
condition = length(var.secondary_floating_ips) == length(distinct(var.secondary_floating_ips))
}
}
variable "availability_policy_host_failure" {
description = "(Optional) The availability policy to use for this virtual server instance. The action to perform if the compute host experiences a failure. Supported values are `restart` and `stop`."
type = string
default = null
validation {
error_message = "Availability Policy Host Failure can be `null`, `stop`, or `restart`."
condition = (
var.availability_policy_host_failure == null
? true
: contains(["stop", "restart"], var.availability_policy_host_failure)
)
}
}
variable "boot_volume_name" {
description = "(Optional) Name of the boot volume"
type = string
default = null
}
variable "boot_volume_size" {
description = "(Optional) The size of the boot volume.(The capacity of the volume in gigabytes. This defaults to minimum capacity of the image and maximum to 250"
type = number
default = null
}
variable "dedicated_host" {
description = "(Optional) The placement restrictions to use the virtual server instance. Unique ID of the dedicated host where the instance id placed."
type = string
default = null
}
variable "dedicated_host_group" {
description = "(Optional) The placement restrictions to use for the virtual server instance. Unique ID of the dedicated host group where the instance is placed."
type = string
default = null
}
variable "default_trusted_profile_target" {
description = "(Optional) The unique identifier or CRN of the default IAM trusted profile to use for this virtual server instance."
type = string
default = null
}
variable "metadata_service_enabled" {
description = "(Optional) Indicates whether the metadata service endpoint is available to the virtual server instance. Default value : false"
type = bool
default = null
}
variable "placement_group" {
description = "(Optional) Unique Identifier of the Placement Group for restricting the placement of the instance"
type = string
default = null
}
##############################################################################