mirror of
https://github.com/2martens/cloud-configuration.git
synced 2026-10-18 00:56:51 +02:00
230 lines
5.6 KiB
Terraform
230 lines
5.6 KiB
Terraform
// data sources
|
|
|
|
data "hcloud_location" "falkenstein" {
|
|
name = "fsn1"
|
|
}
|
|
|
|
data "hcloud_location" "nuremberg" {
|
|
name = "nbg1"
|
|
}
|
|
|
|
data "hcloud_datacenter" "falkenstein" {
|
|
name = "fsn1-dc14"
|
|
}
|
|
|
|
data "hcloud_datacenter" "nuremberg" {
|
|
name = "nbg1-dc3"
|
|
}
|
|
|
|
data "hcloud_ssh_key" "macos" {
|
|
name = "2martens@Jims-Air.fritz.box"
|
|
}
|
|
|
|
data "hcloud_placement_group" "default" {
|
|
name = "default"
|
|
}
|
|
|
|
// common resources
|
|
|
|
resource "hcloud_network" "kubernetes-network" {
|
|
name = "kubernetes"
|
|
ip_range = "10.0.0.0/8"
|
|
}
|
|
|
|
resource "hcloud_network_subnet" "k8s-network-subnet" {
|
|
type = "cloud"
|
|
network_id = hcloud_network.kubernetes-network.id
|
|
network_zone = "eu-central"
|
|
ip_range = "10.0.0.0/16"
|
|
}
|
|
|
|
resource "hcloud_network_route" "k8s-route" {
|
|
network_id = hcloud_network.kubernetes-network.id
|
|
destination = "10.1.0.0/16"
|
|
gateway = "10.0.0.2"
|
|
depends_on = [hcloud_network_subnet.k8s-network-subnet]
|
|
}
|
|
|
|
resource "hcloud_firewall" "basic-firewall" {
|
|
name = "basic-firewall"
|
|
rule {
|
|
direction = "in"
|
|
protocol = "tcp"
|
|
port = "22"
|
|
description = "allow SSH"
|
|
source_ips = [
|
|
"0.0.0.0/0",
|
|
"::/0",
|
|
]
|
|
}
|
|
|
|
rule {
|
|
direction = "in"
|
|
protocol = "tcp"
|
|
port = "80"
|
|
description = "allow HTTP"
|
|
source_ips = [
|
|
"0.0.0.0/0",
|
|
"::/0",
|
|
]
|
|
}
|
|
|
|
rule {
|
|
direction = "in"
|
|
protocol = "tcp"
|
|
port = "443"
|
|
description = "allow HTTPS"
|
|
source_ips = [
|
|
"0.0.0.0/0",
|
|
"::/0",
|
|
]
|
|
}
|
|
|
|
rule {
|
|
direction = "in"
|
|
protocol = "icmp"
|
|
description = "allow ICMP"
|
|
source_ips = [
|
|
"0.0.0.0/0",
|
|
"::/0",
|
|
]
|
|
}
|
|
}
|
|
|
|
resource "hcloud_firewall_attachment" "basic-firewall_attachment" {
|
|
firewall_id = hcloud_firewall.basic-firewall.id
|
|
server_ids = [hcloud_server.server_devops.id, hcloud_server.server_k8s_test.id]
|
|
}
|
|
|
|
resource "hcloud_firewall" "k8s-firewall" {
|
|
name = "k8s-firewall"
|
|
rule {
|
|
direction = "in"
|
|
protocol = "tcp"
|
|
port = "16443"
|
|
description = "Access Kubernetes"
|
|
source_ips = [
|
|
"0.0.0.0/0",
|
|
"::/0",
|
|
]
|
|
}
|
|
}
|
|
|
|
resource "hcloud_firewall_attachment" "k8s-firewall_attachment" {
|
|
firewall_id = hcloud_firewall.k8s-firewall.id
|
|
server_ids = [hcloud_server.server_k8s_test.id]
|
|
}
|
|
|
|
// servers
|
|
resource "hcloud_primary_ip" "primary_ipv4_devops" {
|
|
name = "primary_ipv4_devops"
|
|
datacenter = data.hcloud_datacenter.falkenstein.name
|
|
type = "ipv4"
|
|
assignee_type = "server"
|
|
auto_delete = false
|
|
}
|
|
|
|
resource "hcloud_primary_ip" "primary_ipv6_devops" {
|
|
name = "primary_ipv6_devops"
|
|
datacenter = data.hcloud_datacenter.falkenstein.name
|
|
type = "ipv6"
|
|
assignee_type = "server"
|
|
auto_delete = false
|
|
}
|
|
|
|
resource "hcloud_server" "server_devops" {
|
|
name = "devops"
|
|
image = "ubuntu-22.04"
|
|
allow_deprecated_images = false
|
|
server_type = "cax21"
|
|
location = data.hcloud_location.falkenstein.name
|
|
public_net {
|
|
ipv4_enabled = true
|
|
ipv4 = hcloud_primary_ip.primary_ipv4_devops.id
|
|
ipv6_enabled = true
|
|
ipv6 = hcloud_primary_ip.primary_ipv6_devops.id
|
|
}
|
|
ignore_remote_firewall_ids = false
|
|
keep_disk = false
|
|
placement_group_id = data.hcloud_placement_group.default.id
|
|
labels = {
|
|
"apache" : "yes",
|
|
"docker" : "yes",
|
|
"drone" : "yes"
|
|
}
|
|
firewall_ids = [hcloud_firewall.basic-firewall.id]
|
|
ssh_keys = [data.hcloud_ssh_key.macos.id]
|
|
user_data = file("cloud-init.yaml")
|
|
shutdown_before_deletion = true
|
|
|
|
lifecycle {
|
|
ignore_changes = [ssh_keys, user_data]
|
|
}
|
|
}
|
|
|
|
resource "hcloud_primary_ip" "primary_ipv4_k8s_test" {
|
|
name = "primary_ipv4_applications"
|
|
datacenter = data.hcloud_datacenter.falkenstein.name
|
|
type = "ipv4"
|
|
assignee_type = "server"
|
|
auto_delete = false
|
|
}
|
|
|
|
resource "hcloud_primary_ip" "primary_ipv6_k8s_test" {
|
|
name = "primary_ipv6_applications"
|
|
datacenter = data.hcloud_datacenter.falkenstein.name
|
|
type = "ipv6"
|
|
assignee_type = "server"
|
|
auto_delete = false
|
|
}
|
|
|
|
resource "hcloud_server" "server_k8s_test" {
|
|
name = "applications"
|
|
image = "ubuntu-22.04"
|
|
allow_deprecated_images = false
|
|
server_type = "cax21"
|
|
location = data.hcloud_location.falkenstein.name
|
|
public_net {
|
|
ipv4_enabled = true
|
|
ipv4 = hcloud_primary_ip.primary_ipv4_k8s_test.id
|
|
ipv6_enabled = true
|
|
ipv6 = hcloud_primary_ip.primary_ipv6_k8s_test.id
|
|
}
|
|
ignore_remote_firewall_ids = false
|
|
keep_disk = false
|
|
placement_group_id = data.hcloud_placement_group.default.id
|
|
labels = {
|
|
"kubernetes" : "yes"
|
|
}
|
|
firewall_ids = [hcloud_firewall.basic-firewall.id, hcloud_firewall.k8s-firewall.id]
|
|
ssh_keys = [data.hcloud_ssh_key.macos.id]
|
|
user_data = file("cloud-init.yaml")
|
|
shutdown_before_deletion = true
|
|
|
|
network {
|
|
network_id = hcloud_network.kubernetes-network.id
|
|
ip = "10.0.0.2"
|
|
alias_ips = []
|
|
}
|
|
|
|
lifecycle {
|
|
ignore_changes = [ssh_keys, user_data]
|
|
}
|
|
|
|
depends_on = [hcloud_network_subnet.k8s-network-subnet]
|
|
}
|
|
|
|
module "drone_domain" {
|
|
source = "./modules/domain"
|
|
domain = "2martens.de"
|
|
subdomain = "ci"
|
|
ipv4 = "49.12.69.146"
|
|
ipv6 = "2a01:4f8:c012:1fef::1"
|
|
}
|
|
resource "inwx_nameserver_record" "twomartens_de_ci-ownercheck_txt" {
|
|
domain = "2martens.de"
|
|
name = "ownercheck.ci.2martens.de"
|
|
content = "e1eb600b"
|
|
type = "TXT"
|
|
ttl = 3600
|
|
} |