feat(ops/terraform): add trigger to deploy-nixos, remove target_name

This allows passing in custom triggers to trigger a (re)deploy.

For example, a caller can put an AWS instance ID into the triggers to
cause a redeploy whenever the instance ID has changed.

The `target_name` terraform variable was doing something similar, but
`triggers` is more generic, allowing multiple triggers, without having
to stringify them.

We also don't need to trigger on the attrpath - it can be changed, and
as long as it still evaluates to the same
`data.external.nixos_system.result.drv` (which is checked on every
plan), no redeploy needs to be made.

Change-Id: I94ce787a50830b87b6f53c08e042e4abe4036bdd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8191
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
Florian Klink 2023-03-01 15:11:01 +01:00 committed by clbot
parent c3750079f7
commit 774194652b
2 changed files with 8 additions and 10 deletions

View file

@ -21,7 +21,6 @@ deploy is necessary.
module "deploy_somehost" {
source = "git::https://code.tvl.fyi/depot.git:/ops/terraform/deploy-nixos.git"
attrpath = "ops.nixos.somehost"
target_name = "somehost"
target_host = "somehost.tvl.su"
target_user = "someone"
target_user_ssh_key = tls_private_key.somehost.private_key_pem

View file

@ -14,11 +14,6 @@ variable "attrpath" {
type = string
}
variable "target_name" {
description = "unique name of the target machine"
type = string
}
variable "target_host" {
description = "address (IP or hostname) at which the target is reachable"
type = string
@ -45,6 +40,12 @@ variable "target_user_ssh_key" {
sensitive = true
}
variable "triggers" {
type = map(string)
description = "Triggers for deploy"
default = {}
}
# Fetch the derivation hash for the NixOS system.
data "external" "nixos_system" {
program = ["${path.module}/nixos-eval.sh"]
@ -96,12 +97,10 @@ resource "null_resource" "nixos_deploy" {
]
}
triggers = {
triggers = merge({
nixos_drv = data.external.nixos_system.result.drv
attrpath = var.attrpath
target_host = var.target_host
target_name = var.target_name
}
}, var.triggers)
}
output "nixos_drv" {