标签: terraform

使用 bool 进行 Terraform 计数?

count是能够在 Terraform 中有条件地供应资源的一个很好的元论点。根据我以前的经验,我们做了类似的事情my_var = "1"并使用它以编程方式控制资源创建count

因为count在这种情况下接受一个 string "1",但也可以解释一个number类型(例如1),我想知道:

a) Terraformcount在幕后做什么;它首先将字符串解析为数字吗?
b) 它还可以接受其他数据类型,例如bool

我希望有一个其中.tfvars有 a my_var = true,然后将其传递到count受影响资源的元参数中,例如count = var.my_var。这可能吗?


我还恳请一些信息,这些信息通常涉及如何在 Terraform 中解释数据类型的“真实性”。如果您有文档或博客文章可以分享,我们将不胜感激!

syntax if-statement terraform

1
推荐指数
1
解决办法
7127
查看次数

AWS S3 存储桶的 Terraform 文件不断收到错误:提供程序配置无效

编辑:我现在已经修改了问题以显示整个 main.tf 文件。

\n

我有一个 Terraform 文件,该文件应该创建一个 AWS S3 存储桶,但每次运行时我不断收到的错误之一terraform plan是:

\n
\xe2\x94\x82 Error: Invalid provider configuration\n\xe2\x94\x82 Provider "registry.terraform.io/hashicorp/aws" requires explicit configuration. Add a provider block to the root module and configure the provider's required arguments as described in the provider documentation.\n
Run Code Online (Sandbox Code Playgroud)\n

main.tf 文件:

\n
terraform {\n    backend  "s3" {\n    region         = "us-east-1"\n    bucket         = "bucketname"\n    key            = "path/terraform.tfstate" \n    dynamodb_table = "tf-state-lock" \n    access_key = "<access_key>"\n    secret_key = "<secret_key"\n    }\n\n    required_providers {\n      aws = {\n        version …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services terraform terraform-provider-aws

1
推荐指数
1
解决办法
9001
查看次数

使用 terraform 部署 kubernetes ingress

我正在尝试使用 terraform 部署 kubernetes ingress。\n如此处所述链接和我自己的变体:

\n
resource "kubernetes_ingress" "node" {\n  metadata {\n    name = "node"\n  }\n  spec {\n    ingress_class_name = "nginx"\n    rule {\n      host = "backend.io"\n      http {\n        path {\n          path = "/"\n          backend {\n            service_name = kubernetes_service.node.metadata.0.name\n            service_port = 3000\n          }\n        }\n      }\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

错误:

\n
\xe2\x95\xb7\n\xe2\x94\x82 Error: Failed to create Ingress \'default/node\' because: the server could not find the requested resource (post ingresses.extensions)\n\xe2\x94\x82 \n\xe2\x94\x82   with kubernetes_ingress.node,\n\xe2\x94\x82   on node.tf line 86, in resource "kubernetes_ingress" "node":\n\xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

kubernetes terraform

1
推荐指数
1
解决办法
3499
查看次数

如何编写 Terraform 模块在同一个谷歌云存储桶中创建多个文件夹?

需要在 Google 云存储桶中创建多个文件夹。我知道可以创建存储桶,但不确定如何在同一个存储桶中创建多个文件夹。

我认为下面的代码适用于存储桶中的一个文件夹。

resource "google_storage_bucket" "storage_bucket" {
  name          = "my-test-bucket"
  location      = "us-east4"

  project       = "my-project"
}

resource "google_storage_bucket_object" "my_folder" {
  name          = "fold/"
  bucket        = "${google_storage_bucket.storage_bucket.name}"
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何对多个文件夹执行此操作?

google-cloud-storage google-cloud-platform terraform terraform-provider-gcp

1
推荐指数
1
解决办法
1881
查看次数

在哪里可以获取用于使用 Terraform 的 Azure MySQL DB 的可用 sku_names 列表

我正在编写一个用于创建 Azure MySQL 的 Terraform 脚本。在选择 sku_name 部分时,我找不到如何选择这些名称。我发现这个链接描述了定价等级。有什么地方可以在单个链接或页面上获取 sku_name 及其详细信息的列表吗?

值得注意的是,sku_name 的形式如下:

sku_name -(必需)指定此 MySQL 服务器的 SKU 名称。SKU 的名称遵循层 + 系列 + 核心模式(例如 B_Gen4_1、GP_Gen5_8)。

但是,我们从哪里获得选项列表呢?

mysql azure terraform

1
推荐指数
1
解决办法
5801
查看次数

如何在 Terraform 中按标签获取所有 AWS Lambda

我有带有 Name=product 标签的 Lambda。

我想使用 Terraform 获取它们,查看aws_lambda_function,我只能通过 function_name 获取单个 lambda

data "aws_lambda_function" "existing" {
   function_name = var.function_name
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform devops terraform-provider-aws

1
推荐指数
1
解决办法
1244
查看次数

容量提供程序实例未添加到集群

我是 AWS 新手,我正在尝试通过 Terraform 为 ECS 集群提供容量提供程序。我的计划目前执行没有错误,我可以看到容量提供程序创建了我的实例,但这些实例没有注册到集群中,即使可以在 Web 控制台的集群编辑页面中看到提供程序。

这是我的集群配置:

resource "aws_ecs_cluster" "cluster" {
  name = "main"

  depends_on = [
    null_resource.iam_wait
  ]
}

data "aws_ami" "amazon_linux_2" {
  most_recent = true
  owners      = ["amazon"]

  filter {
    name   = "name"
    values = ["amzn2-ami-ecs-hvm-*-x86_64-ebs"]
  }
}

resource "aws_launch_configuration" "cluster" {
  name = "cluster-${aws_ecs_cluster.cluster.name}"
  image_id = data.aws_ami.amazon_linux_2.image_id
  instance_type = "t2.small"

  security_groups = [module.vpc.default_security_group_id]
  iam_instance_profile = aws_iam_instance_profile.cluster.name
}

resource "aws_autoscaling_group" "cluster" {
  name = aws_ecs_cluster.cluster.name
  launch_configuration = aws_launch_configuration.cluster.name
  vpc_zone_identifier = module.vpc.private_subnets

  min_size = 3
  max_size …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs terraform

1
推荐指数
1
解决办法
1350
查看次数

如何在 terraform apply 中移动 terraform 资源

我在 terraform 模块中定义了自定义资源:

resource "aws_alb_target_group" "whatever" 
{
   ....
}
Run Code Online (Sandbox Code Playgroud)

事实证明whatever这个名字不好,我需要更新它。

经典的方法是登录到每个环境并执行terraform state mv,但是我有很多环境,并且没有自动化执行此类操作。

如何在不手动移动状态的情况下更改资源名称(仅通过编辑 terraform 模块和应用计划)?

amazon-web-services terraform terraform-provider-aws

1
推荐指数
1
解决办法
2129
查看次数

如何调试 terraform

我试图测试运行我公司的 terraform 模块。

\n

然后运行 ​​terraform apply 出现以下错误。

\n
\xe2\x95\xb7\n\xe2\x94\x82 Error: Missing required argument\n\xe2\x94\x82\n\xe2\x94\x82 The argument "domain" is required, but was not set.\n\n
Run Code Online (Sandbox Code Playgroud)\n

我搜索了所有项目文件夹,包括文件夹中的文件.terraform,但找不到该变量。

\n

我如何知道哪个 terraform 脚本给出了该错误?

\n

terraform terraform-modules

1
推荐指数
1
解决办法
1万
查看次数

如何从 BASH 脚本中选择 vars.tf 中的变量

我使用 Terraform 配置 EC2 实例。它还有一个启动脚本。我有 vars.tf,我在其中指定了所有变量。在我的 bash.sh 脚本中,它应该从 vars.tf 中获取一个变量

是否可以从 bash 脚本引用 vars.tf 中的变量?以下是我的用例。

bash

#!/bin/bash

docker login -u username -p token docker.io
Run Code Online (Sandbox Code Playgroud)

变量.tf

variable "username" {
  default = "myuser"
}

variable "token" {
  default = "mytoken"
}
Run Code Online (Sandbox Code Playgroud)

我的 bash 脚本应该从 vars.tf 中选择变量

如果这不可能,有什么解决方法吗?

bash terraform

1
推荐指数
1
解决办法
1147
查看次数