-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
By default use_ssm = false. This causes template rendering to fail (in terraform v0.15.0+ at least).
│ Error: Error in function call
│
│ on .terraform/modules/wireguard/main.tf line 58, in resource "aws_launch_configuration" "wireguard_launch_config":
│ 58: user_data = templatefile("${path.module}/templates/user-data.txt", {
│ 59: wg_server_private_key = var.use_ssm ? "AWS_SSM_PARAMETER" : var.wg_server_private_key,
│ 60: wg_server_private_key_aws_ssm_name = var.use_ssm ? aws_ssm_parameter.wireguard_server_private_key[0].name : null,
│ 61: wg_server_net = var.wg_server_net,
│ 62: wg_server_port = var.wg_server_port,
│ 63: peers = join("\n", data.template_file.wg_client_data_json.*.rendered),
│ 64: use_eip = var.use_eip ? "enabled" : "disabled",
│ 65: eip_id = aws_eip.wireguard.id,
│ 66: use_ssm = var.use_ssm ? "true" : "false",
│ 67: wg_server_interface = var.wg_server_interface
│ 68: })
│ ├────────────────
│ │ aws_eip.wireguard.id is "eipalloc-2fb2cd18"
│ │ aws_ssm_parameter.wireguard_server_private_key is empty tuple
│ │ data.template_file.wg_client_data_json is tuple with 1 element
│ │ path.module is ".terraform/modules/wireguard"
│ │ var.use_eip is false
│ │ var.use_ssm is false
│ │ var.wg_server_interface is "eth0"
│ │ var.wg_server_net is "172.25.5.0/24"
│ │ var.wg_server_port is 51820
│ │ var.wg_server_private_key is "<redacted>"
│
│ Call to function "templatefile" failed:
│ .terraform/modules/wireguard/templates/user-data.txt:60,47-81: Invalid
│ template interpolation value; The expression result is null. Cannot include
│ a null value in a string template., and 1 other diagnostic(s).
Solution
Use empty string instead of null when passing in template variables even if the variable isn't actually used in the user-data script.
user_data = templatefile("${path.module}/templates/user-data.txt", {
wg_server_private_key = var.use_ssm ? "AWS_SSM_PARAMETER" : var.wg_server_private_key,
wg_server_private_key_aws_ssm_name = var.use_ssm ? aws_ssm_parameter.wireguard_server_private_key[0].name : "",
wg_server_net = var.wg_server_net,
wg_server_port = var.wg_server_port,
peers = join("\n", data.template_file.wg_client_data_json.*.rendered),
use_eip = var.use_eip ? "enabled" : "disabled",
eip_id = aws_eip.wireguard.id,
use_ssm = var.use_ssm ? "true" : "false",
wg_server_interface = var.wg_server_interface
})
xkortex and louisnk
Metadata
Metadata
Assignees
Labels
No labels