Add the Ansible README and expand prod bootstrap coverage for StorageBox keys, DB labels, DB stack configuration, and act runner setup. Update MongoDB configuration for replica set support and refresh prod roadmap/setup documentation for Swarm labels, StorageBox-backed cert paths, and recovery guidance.
77 lines
1.8 KiB
HCL
77 lines
1.8 KiB
HCL
resource "hcloud_ssh_key" "admin" {
|
|
name = "${local.name_prefix}-admin-key"
|
|
public_key = file(var.admin_ssh_public_key_path)
|
|
}
|
|
|
|
resource "hcloud_server" "app" {
|
|
for_each = local.app_private_ips
|
|
|
|
name = each.key
|
|
server_type = var.server_type_swarm
|
|
image = var.image
|
|
location = var.location
|
|
ssh_keys = [hcloud_ssh_key.admin.id]
|
|
placement_group_id = hcloud_placement_group.app_spread.id
|
|
|
|
labels = {
|
|
environment = local.environment
|
|
role = "app"
|
|
type = "service"
|
|
}
|
|
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
}
|
|
|
|
resource "hcloud_server" "db" {
|
|
for_each = local.db_private_ips
|
|
|
|
name = each.key
|
|
server_type = var.server_type_db
|
|
image = var.image
|
|
location = var.location
|
|
ssh_keys = [hcloud_ssh_key.admin.id]
|
|
placement_group_id = hcloud_placement_group.db_spread.id
|
|
|
|
labels = {
|
|
environment = local.environment
|
|
role = "db"
|
|
type = "db"
|
|
}
|
|
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
}
|
|
|
|
resource "hcloud_server_network" "app" {
|
|
for_each = local.app_private_ips
|
|
|
|
server_id = hcloud_server.app[each.key].id
|
|
network_id = hcloud_network.main.id
|
|
ip = each.value
|
|
|
|
depends_on = [hcloud_network_subnet.app]
|
|
}
|
|
|
|
resource "hcloud_server_network" "db" {
|
|
for_each = local.db_private_ips
|
|
|
|
server_id = hcloud_server.db[each.key].id
|
|
network_id = hcloud_network.main.id
|
|
ip = each.value
|
|
|
|
depends_on = [hcloud_network_subnet.db]
|
|
}
|
|
|
|
resource "hcloud_firewall_attachment" "app" {
|
|
firewall_id = hcloud_firewall.app.id
|
|
server_ids = [for s in hcloud_server.app : s.id]
|
|
}
|
|
|
|
resource "hcloud_firewall_attachment" "db" {
|
|
firewall_id = hcloud_firewall.db.id
|
|
server_ids = [for s in hcloud_server.db : s.id]
|
|
}
|