-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.tf
74 lines (68 loc) · 1.82 KB
/
main.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
locals {
network_ipv4_subnets = [
for index in range(256) : cidrsubnet(var.network_ipv4_cidr, 8, index)
]
firewall_rules = concat(
var.firewall_ssh_source == null ? [] : [
{
description = "Allow Incoming SSH Traffic"
direction = "in"
protocol = "tcp"
port = var.ssh_port
source_ips = var.firewall_ssh_source
},
],
var.firewall_kube_api_source == null ? [] : [
{
description = "Allow Incoming Requests to Kube API Server"
direction = "in"
protocol = "tcp"
port = "6443"
source_ips = var.firewall_kube_api_source
}
],
[
{
description = "Allow Incoming ICMP Ping Requests"
direction = "in"
protocol = "icmp"
port = ""
source_ips = ["0.0.0.0/0", "::/0"]
}
]
)
}
resource "random_password" "k3s_token" {
length = 48
special = false
}
resource "hcloud_network" "k3s" {
name = var.cluster_name
ip_range = var.network_ipv4_cidr
}
resource "hcloud_network_subnet" "control_plane" {
network_id = hcloud_network.k3s.id
type = "cloud"
network_zone = var.network_zone
ip_range = local.network_ipv4_subnets[255]
}
resource "hcloud_network_subnet" "agent" {
count = length(var.agent_nodepools)
network_id = hcloud_network.k3s.id
type = "cloud"
network_zone = var.network_zone
ip_range = local.network_ipv4_subnets[count.index]
}
resource "hcloud_firewall" "k3s" {
name = var.cluster_name
dynamic "rule" {
for_each = local.firewall_rules
content {
description = rule.value.description
direction = rule.value.direction
protocol = rule.value.protocol
port = rule.value.port
source_ips = rule.value.source_ips
}
}
}