36 lines
1.5 KiB
Terraform
36 lines
1.5 KiB
Terraform
output "hosts" {
|
|
description = "Hostname, public IPv4, VPC IPv4 and (vpn hosts) wg address, loopback and public key per host."
|
|
value = merge(
|
|
{ for k, v in binarylane_server.edge : k => {
|
|
hostname = v.name
|
|
public_ipv4 = v.public_ipv4_addresses[0]
|
|
vpc_ipv4 = local.edges[k].vpc_ip
|
|
} },
|
|
{ for k, v in binarylane_server.vpn : k => {
|
|
hostname = v.name
|
|
public_ipv4 = v.public_ipv4_addresses[0]
|
|
vpc_ipv4 = local.vpns[k].vpc_ip
|
|
wg_address = local.vpns[k].wg_address
|
|
loopback = local.vpns[k].loopback
|
|
wg_pubkey = wireguard_asymmetric_key.vpn[k].public_key
|
|
} },
|
|
)
|
|
}
|
|
|
|
output "router_links" {
|
|
description = "Per-region p2p wg/ospf link as prodnxsr0020 sees it; vpc_cidr arrives via ospf. Consumed by its Puppet config."
|
|
value = { for k, v in local.vpns : v.region => {
|
|
interface = "wg-${v.region}"
|
|
listen_port = v.router_port
|
|
router_address = "${v.router_address}/31"
|
|
peer_address = "${v.wg_address}/31"
|
|
peer_loopback = "${v.loopback}/32"
|
|
allowed_ips = ["${v.wg_address}/32", "${v.loopback}/32", local.vpcs[v.region], local.ospf_allspf]
|
|
peer_public_key = wireguard_asymmetric_key.vpn[k].public_key
|
|
peer_endpoint = "${binarylane_server.vpn[k].public_ipv4_addresses[0]}:${local.wg_port}"
|
|
vpc_cidr = local.vpcs[v.region]
|
|
private_key_vault_path = "kv/${vault_kv_secret_v2.router[k].name}"
|
|
peer_key_vault_path = "kv/${vault_kv_secret_v2.vpn[k].name}"
|
|
} }
|
|
}
|