Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
221 changes: 203 additions & 18 deletions cloudflare.tf
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,13 @@ locals {
demeter_providers = [
{
name = "blinklabs-us"
cardano_node = {
node = {
enabled = true
address = "blinklabs-us-cardano-node.blinklabs.io"
networks = {
cardano_preview = "blinklabs-us-cardano-node.blinklabs.io"
cardano_preprod = "blinklabs-us-cardano-node.blinklabs.io"
cardano_mainnet = "blinklabs-us-cardano-node.blinklabs.io"
}
}
kupo = {
enabled = true
Expand All @@ -47,9 +51,14 @@ locals {
},
{
name = "txpipe-m2"
cardano_node = {
node = {
enabled = true
address = "cnode-m1.demeter.run"
networks = {
cardano_preview = "txpipe.cardano-preview.cnode-m1.demeter.run"
cardano_preprod = "txpipe.cardano-preprod.cnode-m1.demeter.run"
cardano_mainnet = "txpipe.cardano-mainnet.cnode-m1.demeter.run"
vector_testnet = "txpipe.vector-testnet.cnode-m1.demeter.run"
}
}
kupo = {
enabled = true
Expand All @@ -65,6 +74,7 @@ locals {
cardano_preview = "preview-v6.ogmios-m1.demeter.run"
cardano_preprod = "preprod-v6.ogmios-m1.demeter.run"
cardano_mainnet = "mainnet-v6.ogmios-m1.demeter.run"
vector_testnet = "vector-testnet-v6.ogmios-m1.demeter.run"
}
}
tx_submit_api = {
Expand Down Expand Up @@ -170,7 +180,7 @@ resource "cloudflare_certificate_pack" "this" {
// Balius

// TRP
"*.trp-m1.dmtr.host",
"*.trp-m1.dmtr.host",

// Mumak
"*.mumak-m0.dmtr.host",
Expand All @@ -180,36 +190,119 @@ resource "cloudflare_certificate_pack" "this" {
validity_days = 90
}

# Cardano Node
# Node
resource "cloudflare_load_balancer_pool" "node_cardano_mainnet" {
name = "NodeCardanoMainnet"

account_id = var.cloudflare_account_id
monitor = cloudflare_load_balancer_monitor.node_cardano_mainnet.id

dynamic "origins" {
for_each = { for p in local.demeter_providers : p.name => p if p.node.enabled && can(p.node.networks.cardano_mainnet) }
content {
name = origins.value.name
address = origins.value.node.networks.cardano_mainnet
}
}
}

resource "cloudflare_load_balancer" "node_cardano_mainnet" {
zone_id = var.cloudflare_zone_id
name = "*.cardano-mainnet.cnode-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.node_cardano_mainnet.id]
fallback_pool_id = cloudflare_load_balancer_pool.node_cardano_mainnet.id
proxied = false
steering_policy = "off"
}

resource "cloudflare_load_balancer_monitor" "node_cardano_mainnet" {
account_id = var.cloudflare_account_id
type = "http"
description = "Health check for Cardano Mainnet node."
path = "/healthcheck"
interval = 60
timeout = 5
retries = 2
method = "GET"
expected_codes = "200"
allow_insecure = true

header {
header = "Host"
values = ["cardano-mainnet.cnode-m1.dmtr.host"]
}
}

resource "cloudflare_load_balancer_pool" "node_cardano_preprod" {
name = "NodeCardanoPreprod"

account_id = var.cloudflare_account_id
monitor = cloudflare_load_balancer_monitor.node_cardano_preprod.id

dynamic "origins" {
for_each = { for p in local.demeter_providers : p.name => p if p.node.enabled && can(p.node.networks.cardano_preprod) }
content {
name = origins.value.name
address = origins.value.node.networks.cardano_preprod
}
}
}

resource "cloudflare_load_balancer" "node_cardano_preprod" {
zone_id = var.cloudflare_zone_id
name = "*.cardano-preprod.cnode-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.node_cardano_preprod.id]
fallback_pool_id = cloudflare_load_balancer_pool.node_cardano_preprod.id
proxied = false
steering_policy = "off"
}

resource "cloudflare_load_balancer_monitor" "node_cardano_preprod" {
account_id = var.cloudflare_account_id
type = "http"
description = "Health check for Cardano preprod node."
path = "/healthcheck"
interval = 60
timeout = 5
retries = 2
method = "GET"
expected_codes = "200"
allow_insecure = true

header {
header = "Host"
values = ["cardano-preprod.cnode-m1.dmtr.host"]
}
}

resource "cloudflare_load_balancer_pool" "cardano_node_m1" {
name = "CardanoNodeM1"
resource "cloudflare_load_balancer_pool" "node_cardano_preview" {
name = "NodeCardanoPreview"

account_id = var.cloudflare_account_id
monitor = cloudflare_load_balancer_monitor.cardano_node_m1_monitor.id
monitor = cloudflare_load_balancer_monitor.node_cardano_preview.id

dynamic "origins" {
for_each = { for p in local.demeter_providers : p.name => p if p.cardano_node.enabled }
for_each = { for p in local.demeter_providers : p.name => p if p.node.enabled && can(p.node.networks.cardano_preview) }
content {
name = origins.value.name
address = origins.value.cardano_node.address != "" ? origins.value.cardano_node.address : "${origins.value.name}.${var.cloudflare_zone_name}"
address = origins.value.node.networks.cardano_preview
}
}
}

resource "cloudflare_load_balancer" "cardano_node_m1" {
resource "cloudflare_load_balancer" "node_cardano_preview" {
zone_id = var.cloudflare_zone_id
name = "*.cnode-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.cardano_node_m1.id]
fallback_pool_id = cloudflare_load_balancer_pool.cardano_node_m1.id
name = "*.cardano-preview.cnode-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.node_cardano_preview.id]
fallback_pool_id = cloudflare_load_balancer_pool.node_cardano_preview.id
proxied = false
steering_policy = "off"
}

resource "cloudflare_load_balancer_monitor" "cardano_node_m1_monitor" {
resource "cloudflare_load_balancer_monitor" "node_cardano_preview" {
account_id = var.cloudflare_account_id
type = "http"
description = "Health check for cardano_node_m1"
description = "Health check for Cardano preview node."
path = "/healthcheck"
interval = 60
timeout = 5
Expand All @@ -220,7 +313,49 @@ resource "cloudflare_load_balancer_monitor" "cardano_node_m1_monitor" {

header {
header = "Host"
values = ["cnode-m1.dmtr.host"]
values = ["cardano-preview.cnode-m1.dmtr.host"]
}
}

resource "cloudflare_load_balancer_pool" "node_vector_testnet" {
name = "NodeVectorTestnet"

account_id = var.cloudflare_account_id
monitor = cloudflare_load_balancer_monitor.node_vector_testnet.id

dynamic "origins" {
for_each = { for p in local.demeter_providers : p.name => p if p.node.enabled && can(p.node.networks.vector_testnet) }
content {
name = origins.value.name
address = origins.value.node.networks.vector_testnet
}
}
}

resource "cloudflare_load_balancer" "node_vector_testnet" {
zone_id = var.cloudflare_zone_id
name = "*.vector_testnet.cnode-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.node_cardano_preview.id]
fallback_pool_id = cloudflare_load_balancer_pool.node_cardano_preview.id
proxied = false
steering_policy = "off"
}

resource "cloudflare_load_balancer_monitor" "node_vector_testnet" {
account_id = var.cloudflare_account_id
type = "http"
description = "Health check for vector testnet node."
path = "/healthcheck"
interval = 60
timeout = 5
retries = 2
method = "GET"
expected_codes = "200"
allow_insecure = true

header {
header = "Host"
values = ["vector-testnet.cnode-m1.dmtr.host"]
}
}

Expand Down Expand Up @@ -515,6 +650,56 @@ resource "cloudflare_load_balancer_monitor" "ogmios_mainnet_monitor" {
}
}

resource "cloudflare_load_balancer_pool" "ogmios_vector_testnet" {
name = "OgmiosVectorTestnet"
account_id = var.cloudflare_account_id
monitor = cloudflare_load_balancer_monitor.ogmios_vector_testnet_monitor.id

dynamic "origins" {
for_each = { for p in local.demeter_providers : p.name => p if p.ogmios.enabled && can(p.ogmios.networks.vector_testnet) }
content {
name = origins.value.name
address = origins.value.ogmios.networks.vector_testnet
}
}
}

resource "cloudflare_load_balancer" "ogmios_vector_testnet" {
zone_id = var.cloudflare_zone_id
name = "vector-testnet-v6.ogmios-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.ogmios_vector_testnet.id]
fallback_pool_id = cloudflare_load_balancer_pool.ogmios_vector_testnet.id
proxied = true
steering_policy = "off"
}

resource "cloudflare_load_balancer" "ogmios_vector_testnet_splat" {
zone_id = var.cloudflare_zone_id
name = "*.vector-testnet-v6.ogmios-m1.${var.cloudflare_zone_name}"
default_pool_ids = [cloudflare_load_balancer_pool.ogmios_vector_testnet.id]
fallback_pool_id = cloudflare_load_balancer_pool.ogmios_vector_testnet.id
proxied = true
steering_policy = "off"
}

resource "cloudflare_load_balancer_monitor" "ogmios_vector_testnet_monitor" {
account_id = var.cloudflare_account_id
type = "https"
description = "Health check for OgmiosVectorTestnet"
path = "/healthz"
interval = 60
timeout = 5
retries = 2
method = "GET"
expected_codes = "200"
allow_insecure = true

header {
header = "Host"
values = ["health.vector-testnet-v6.ogmios-m1.dmtr.host"]
}
}

# Tx-Submit-API
resource "cloudflare_load_balancer_pool" "tx_submit_api_m1" {
name = "TxSubmitApiM1"
Expand Down