feat(terraform/vault): support for tokens generation

We create the first machine-level token for bagel-box which has the
policy CI.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
This commit is contained in:
raito 2025-01-01 02:43:56 +01:00
parent 1a5e5a6adb
commit b267cffc0e
3 changed files with 36 additions and 0 deletions

View file

@ -17,6 +17,22 @@
infra.vault = {
provider = "vault.floral";
tokens = {
bagel_box = {
policies = [ "ci" ];
renewable = true;
ttl = "7d";
# As long as the token is renewed every 14 days, its TTL can be extended of 7 more days.
period = "14d";
# A machine-wide token cannot live longer than 365 days, all of this is temporary anyway until we get proper machine identity.
explicit_max_ttl = "365d";
display_name = "bagel-box@infra.forkos.org machine-wide token";
metadata = {
purpose = "machine-account";
};
};
};
};
infra.pki = {

View file

@ -13,5 +13,6 @@ in
imports = [
./policy.nix
./sub-ca.nix
./tokens.nix
];
}

View file

@ -0,0 +1,19 @@
{ config, lib, ... }:
let
cfg = config.infra.vault.tokens;
inherit (lib) mkOption types mapAttrs;
mkToken = name: value: value // {
provider = config.infra.vault.provider;
};
in
{
options.infra.vault.tokens = mkOption {
# TODO: harden with freeformType json.
type = types.attrsOf types.unspecified;
default = { };
};
config = {
resource.vault_token = mapAttrs mkToken cfg;
};
}