-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathip.tf
84 lines (81 loc) · 3.01 KB
/
ip.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
#____________________________________________________________
#
# Intersight IP Pool Resource
# GUI Location: Pools > Create Pool
#____________________________________________________________
resource "intersight_ippool_pool" "map" {
for_each = local.ip
assignment_order = each.value.assignment_order
description = each.value.description != "" ? each.value.description : "${each.value.name} IP Pool."
name = each.value.name
dynamic "ip_v4_blocks" {
for_each = { for v in each.value.ipv4_blocks : v.from => v }
content {
from = ip_v4_blocks.value.from
ip_v4_config {
gateway = ip_v4_blocks.value.gateway
netmask = ip_v4_blocks.value.netmask
object_type = "ippool.IpV4Config"
primary_dns = ip_v4_blocks.value.primary_dns
secondary_dns = ip_v4_blocks.value.secondary_dns
}
size = ip_v4_blocks.value.size
to = ip_v4_blocks.value.to
}
}
dynamic "ip_v4_config" {
for_each = { for v in each.value.ipv4_config : "default" => v if v.gateway != null }
content {
gateway = ip_v4_config.value.gateway
netmask = ip_v4_config.value.netmask
primary_dns = ip_v4_config.value.primary_dns
secondary_dns = ip_v4_config.value.secondary_dns
}
}
dynamic "ip_v6_blocks" {
for_each = { for v in each.value.ipv6_blocks : v.from => v }
content {
from = ip_v6_blocks.value.from
ip_v6_config {
gateway = ip_v6_blocks.value.gateway
object_type = "ippool.IpV6Config"
prefix = ip_v6_blocks.value.prefix
primary_dns = ip_v6_blocks.value.primary_dns
secondary_dns = ip_v6_blocks.value.secondary_dns
}
size = ip_v6_blocks.value.size
to = ip_v6_blocks.value.to
}
}
dynamic "ip_v6_config" {
for_each = { for v in each.value.ipv6_config : "default" => v if v.gateway != null }
content {
gateway = ip_v6_config.value.gateway
prefix = ip_v6_config.value.prefix
primary_dns = ip_v6_config.value.primary_dns
secondary_dns = ip_v6_config.value.secondary_dns
}
}
organization { moid = var.orgs[each.value.org] }
dynamic "tags" {
for_each = { for v in each.value.tags : v.key => v }
content {
key = tags.value.key
value = tags.value.value
}
}
}
resource "intersight_ippool_reservation" "map" {
depends_on = [intersight_ippool_pool.map]
for_each = { for v in local.reservations : "${v.pool_name}/${v.identity}" => v if v.identity_type == "ip" }
allocation_type = each.value.allocation_type # dynamic|static
identity = each.value.identity
ip_type = each.value.ip_type
organization { moid = var.orgs[each.value.org] }
dynamic "pool" {
for_each = { for v in [each.value.pool_name] : v => v if each.value.allocation_type == "dynamic" }
content {
moid = contains(local.pools.ip.moids, pool.value) ? intersight_ippool_pool.map[pool.value].moid : local.pools_data.ip[pool.value].moid
}
}
}