From 774194652b57f47197e270c62dabf863e7aa8241 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Wed, 1 Mar 2023 15:11:01 +0100 Subject: 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 Autosubmit: flokli --- ops/terraform/deploy-nixos/README.md | 1 - ops/terraform/deploy-nixos/main.tf | 17 ++++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/ops/terraform/deploy-nixos/README.md b/ops/terraform/deploy-nixos/README.md index a51e6bdb5f1e..ae876b45b93a 100644 --- a/ops/terraform/deploy-nixos/README.md +++ b/ops/terraform/deploy-nixos/README.md @@ -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 diff --git a/ops/terraform/deploy-nixos/main.tf b/ops/terraform/deploy-nixos/main.tf index d39610327a0e..4a3dc08f6c85 100644 --- a/ops/terraform/deploy-nixos/main.tf +++ b/ops/terraform/deploy-nixos/main.tf @@ -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" { -- cgit 1.4.1