forked from aws-ia/terraform-aws-ipam
-
Notifications
You must be signed in to change notification settings - Fork 0
/
variables.tf
95 lines (81 loc) · 3.71 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
variable "pool_configurations" {
description = "A multi-level, nested map describing nested IPAM pools. Can nest up to three levels with the top level being outside the `pool_configurations`. This attribute is quite complex, see README.md for further explanation."
type = any
# Below is an example of the actual expected structure for `pool_configurations`. type = any is currently being used, may adjust in the future
# type = object({
# cidr = optional(list(string))
# ram_share_principals = optional(list(string))
# locale = optional(string)
# allocation_default_netmask_length = optional(string)
# allocation_max_netmask_length = optional(string)
# allocation_min_netmask_length = optional(string)
# auto_import = optional(string)
# aws_service = optional(string)
# description = optional(string)
# name = optional(string)
# publicly_advertisable = optional(bool)
# allocation_resource_tags = optional(map(string))
# tags = optional(map(string))
# cidr_authorization_context = optional(map(string))
# sub_pools = (repeat of pool_configuration object above )
# })
default = {}
# Validate no more than 3 layers of sub_pools specified
# TODO: fix validation, fails if less than 2 layers of pools
# validation {
# error_message = "Sub pools (sub_pools) is defined in the 3rd level of a nested pool. Sub pools can only be defined up to 3 levels."
# condition = flatten([for k, v in var.pool_configurations : [for k2, v2 in v.sub_pools : [for k3, v3 in try(v2.sub_pools, []) : "${k}/${k2}/${k3}" if try(v3.sub_pools, []) != []]]]) == []
# }
}
variable "top_cidr" {
description = "Top-level CIDR blocks."
type = list(string)
}
variable "top_ram_share_principals" {
description = "Principals to create RAM shares for top-level pool."
type = list(string)
default = null
}
variable "top_auto_import" {
description = "`auto_import` setting for top-level pool."
type = bool
default = null
}
variable "top_description" {
description = "Description of top-level pool."
type = string
default = ""
}
variable "top_cidr_authorization_context" {
description = "A signed document that proves that you are authorized to bring the specified IP address range to Amazon using BYOIP. Document is not stored in the state file. For more information, refer to https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc_ipam_pool_cidr#cidr_authorization_context."
type = any
default = null
}
variable "address_family" {
description = "IPv4/6 address family."
type = string
default = "ipv4"
validation {
condition = var.address_family == "ipv4" || var.address_family == "ipv6"
error_message = "Only valid options: \"ipv4\", \"ipv6\"."
}
}
variable "create_ipam" {
description = "Determines whether to create an IPAM. If `false`, you must also provide a var.ipam_scope_id."
type = bool
default = true
}
variable "ipam_scope_id" {
description = "(Optional) Required if `var.ipam_id` is set. Determines which scope to deploy pools into."
type = string
default = null
}
variable "ipam_scope_type" {
description = "Which scope type to use. Valid inputs include `public` or `private`. You can alternatively provide your own scope ID."
type = string
default = "private"
validation {
condition = var.ipam_scope_type == "public" || var.ipam_scope_type == "private"
error_message = "Scope type must be either public or private."
}
}