verbena: configure IPv6 from tofu outputs

This commit is contained in:
2025-11-21 21:15:35 +01:00
parent 3834f215f0
commit abaf429a38
4 changed files with 58 additions and 0 deletions

View File

@@ -19,3 +19,8 @@ tofu import hcloud_firewall.hcloud_firewall YYY
``` ```
For Hetzner Cloud, the resource IDs can be found in the URL of the admin console. For Hetzner Cloud, the resource IDs can be found in the URL of the admin console.
## Outputs
The nix configuration reads some values from the `outputs.json` file.
When modifying these, the file should be regenerated with `tofu output -json > outputs.json`.

17
infra/outputs.json Normal file
View File

@@ -0,0 +1,17 @@
{
"verbena_gateway6": {
"sensitive": false,
"type": "string",
"value": "2001:41d0:305:2100::1"
},
"verbena_ipv4": {
"sensitive": false,
"type": "string",
"value": "51.68.122.153"
},
"verbena_ipv6": {
"sensitive": false,
"type": "string",
"value": "2001:41d0:305:2100::271e"
}
}

20
infra/verbena.tf Normal file
View File

@@ -0,0 +1,20 @@
output "verbena_ipv4" {
value = local.verbena_ipv4_addresses[0]
}
output "verbena_ipv6" {
value = local.verbena_ipv6_addresses[0]
}
output "verbena_gateway6" {
value = local.gateway6
}
locals {
hextets = 4
parts = split(":", local.verbena_ipv6_addresses[0])
prefix_parts = slice(local.parts, 0, local.hextets)
prefix_str = join(":", local.prefix_parts)
gateway6 = "${local.prefix_str}::1"
}

View File

@@ -1,4 +1,7 @@
{ self, lib, ... }: { self, lib, ... }:
let
tf_outputs = builtins.fromJSON (builtins.readFile ../../infra/outputs.json);
in
{ {
imports = [ imports = [
self.nixosModules.nix-defaults self.nixosModules.nix-defaults
@@ -16,6 +19,19 @@
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
networking.defaultGateway6 = {
address = tf_outputs.verbena_gateway6.value;
interface = "ens3";
};
networking.interfaces."ens3" = {
ipv6.addresses = [
{
address = tf_outputs.verbena_ipv6.value;
prefixLength = 64;
}
];
};
clan.core.settings.state-version.enable = true; clan.core.settings.state-version.enable = true;
services.nginx = { services.nginx = {