Попытка передать переменные terraform через cli

Я пытаюсь передать переменные terraform через CLI, потому что они зависят от моего рабочего процесса действий GitHub. Итак, мой main.tf сейчас выглядит так.

      resource "aws_lambda_function" "etl_pipeline_test" {
  function_name = var.project_name
  image_uri = "${var.ecr_repo_uri}:${var.image_tag}"
  package_type = "Image"
  role = aws_iam_role.etl_pipeline_test.arn
}

Это просто файл terraform, который создает лямбда-функцию из образа докера ECR. Но я не использую файлvariable.tf, поэтому просто хочу передать ecr_repo_uri и image_tag через cli. Итак, в настоящее время я запускаю эту команду.terraform init && terraform apply -var "ecr_repo_uri=<ecr_repo_uri_var>" -var "image_tag=v0.0"Чтобы избежать путаницы, существует действительный ecr_repo_uri. Теперь я продолжаю получать эту ошибку.

      ╷
│ Error: Value for undeclared variable
│
│ A variable named "ecr_repo_uri" was assigned on the command line, but the root module does not declare a variable of that name. To use this value, add a "variable"    
│ block to the configuration.
╵
╷
│ Error: Value for undeclared variable
│
│ A variable named "image_tag" was assigned on the command line, but the root module does not declare a variable of that name. To use this value, add a "variable" block 
│ to the configuration.

Я думаю, проблема в моем main.tf, возможно, вам нужно обращаться к переменным через cli иначе, чем с помощьюenv.varкак я делаю прямо сейчас. Вся помощь очень ценится.

1 ответ

Я забыл создать файл, в котором вам нужно определить переменные, которые вы передаете с помощью cli. Для других людей, которые могут столкнуться с этой ошибкой, это мой файлvariable.tf.

      variable "image_tag" {
  type=string
}
variable "ecr_repo_uri" {
  type=string
}

Я думал, тебе нужно всего лишь создатьфайл, когда вы уже определили переменные, но вам также придется сделать это при передаче их через cli.

Другие вопросы по тегам