Проблема с local-exe c и передачей в него значений - PullRequest
0 голосов
/ 18 июня 2020

У меня проблема с передачей строковых значений в мой ресурс local-exe c в Terraform.

Вот локальный exe c, который я предоставляю:

resource "null_resource" "sftp_server_update" {
  provisioner "local-exec" {
    command = <<EOF
    aws transfer update-server --server-id ${aws_transfer_server.aws_transfer_service.id} --endpoint-details 
      AddressAllocationIds= ${toset(aws_eip.sftp.*.public_ip)}, \
      SubnetIds= ${toset(var.subnet_ids)}, \
      VPCEndpointID= ${aws_vpc_endpoint.sftp.id}, \
      VpcId= ${var.vpc_id}, \
    --endpoint-type VPC --identity-provider SERVICE_MANAGED --logging-role ${aws_iam_role.aws_transfer_role.arn} --protocols SFTP /
    --profile ${var.account} --region ${var.region}
    EOF
  }
  depends_on = [
    null_resource.sftp_server_off
  ]
}

Я думаю, что это может иметь отношение к ресурсу aws_eip или переменной subnet_ids, поэтому вот блок кода для них:

aws_eip:

resource "aws_eip" "sftp" {
  count = 3

  vpc = true
}

переменная subnet_ids:

subnet_ids = ["subnet-id1","subnet-id2","subnet-id3"]

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 26 августа 2020

Вероятно, вам нужно использовать комбинацию join и toset для AllocationIds и просто join для SubnetIds. Попробуйте ниже:

resource "null_resource" "sftp_server_update" {
  provisioner "local-exec" {
    command = <<EOF
    aws transfer update-server --server-id ${aws_transfer_server.aws_transfer_service.id} --endpoint-details AddressAllocationIds="${join("\", \"", toset(aws_eip.sftp.*.id))}", SubnetIds="${join("\", \"", var.subnet_ids)}", VPCEndpointID= ${aws_vpc_endpoint.sftp.id}, VpcId= ${var.vpc_id}, --endpoint-type VPC --identity-provider SERVICE_MANAGED --logging-role ${aws_iam_role.aws_transfer_role.arn} --protocols SFTP --profile ${var.account} --region ${var.region}
    EOF
  }
  depends_on = [
    null_resource.sftp_server_off
  ]
}
0 голосов
/ 20 июня 2020

Было бы полезно немного подробнее узнать, в чем именно заключается ваша «проблема», но сразу же в этой строке

   --endpoint-type VPC --identity-provider SERVICE_MANAGED --logging-role ${aws_iam_role.aws_transfer_role.arn} --protocols SFTP /

для продолжения используется '/' вместо '\'.

...