【问题标题】:Invalid value for "v" parameter: cannot convert "" to number; given string terraform eks modules“v”参数的值无效:无法将“”转换为数字;给定字符串 terraform eks 模块
【发布时间】:2020-10-06 13:42:01
【问题描述】:

我使用 terraform eks 模块创建了以下 eks 集群。

module "myeks" {
  source          = "terraform-aws-modules/eks/aws"
  cluster_name    = var.project
  version         = "7.0.1"
  cluster_version = var.eks_version
  subnets         = data.aws_subnet_ids.subnet_ids.ids
  vpc_id          = var.vpc_id

  worker_groups = [
    {
      name          = "worker-group-1"
      instance_type = "m5.large"
      asg_max_size  = 2
    }
  ]
}

但问题是当我在 gitlabci 中运行该代码时,我遇到了以下错误消息。

Error: Invalid function argument
  on .terraform/modules/myeks/data.tf line 6, in locals:
   6:     var.worker_ami_name_filter_windows : "Windows_Server-2019-English-Core-EKS_Optimized-${tonumber(var.cluster_version) >= 1.14 ? var.cluster_version : 1.14}-*"
    |----------------
    | var.cluster_version is ""
Invalid value for "v" parameter: cannot convert "" to number; given string
must be a decimal representation of a number.
Error: Your query returned no results. Please change your search criteria and try again.
  on .terraform/modules/myeks/data.tf line 25, in data "aws_ami" "eks_worker":
  25: data "aws_ami" "eks_worker" {

但是当我在本地机器上执行terraform plan 时,它工作正常。

那是我的 tfvar。

vpc_id        = "vpc-xxxxx"
environment   = "dev"
eks_version   = "1.17"
project       = "mypro"

【问题讨论】:

  • 你的var.eks_version 是什么?好像是空的
  • @Marcin 我已经编辑了我的问题。
  • 如果它在本地工作并且在 gitlabci 中存在问题,那么您可能在某处有一个重复的变量 eks_version 并且传递了一个空值。您可以交叉检查一次配置,或者您可以注释掉模块代码并尝试输出 eks_version 的值以查看传递的内容
  • @Marcin 我发现忘记在 gitlabci 中映射 .tfvars 的问题?你可以发表你的评论作为答案,我会标记为正确的吗?

标签: terraform gitlab-ci terraform-provider-aws


【解决方案1】:

基于 cmets。

问题是因为var.eks_version 是空的。这是由未映射 .tfvars in gitlabci 引起的。

解决方案是在gitlabci 中添加缺少的映射。

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2012-09-30
    • 1970-01-01
    • 2012-09-27
    • 2021-06-07
    • 1970-01-01
    • 2020-03-31
    • 2020-12-10
    • 2016-02-14
    相关资源
    最近更新 更多