标签: terraform

如何通过 Terraform 获取 Vault 秘密?

我已经使用 Vault UI 创建了密钥/秘密对。

如何通过 Terraform 从 Vault 获取秘密?

terraform hashicorp-vault

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

如何在 terraform 变量中传递 json?

我正在尝试通过 terraform 创建一个 AWS 参数存储,它也可以使用 JSON 格式传递默认值。这是代码示例。

resource "aws_ssm_parameter" "secret" {
  name        = "/something/env"
  description = "This is a something values"
  type        = "SecureString"
  value       = "test"
  
  tags = {
    environment = "production"
  }
} 
Run Code Online (Sandbox Code Playgroud)

我如何将 json one 传递到值一内,而不是将单个值作为值的“测试”传递。

这样AWS参数存储值就会像

{
   "key": "value"
}
Run Code Online (Sandbox Code Playgroud)

terraform aws-ssm

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

Terraform 在单个条件中匹配多个条件

我有 4 个 env,qa 和 dev 使用一个 ID,uat 和 prod 使用另一个 ID。我正在尝试执行 if else,基本上,如果 env 是 dev 或 qa,则使用 id1,否则使用 id2。这是我尝试过的:

\n
locals{\n  endpoint_id = "${var.env == "dev" || "qa" ? "id1" : "id2"}"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这就是我得到的:

\n
Error: Invalid operand\n\xe2\x94\x82 \n\xe2\x94\x82   on ssm-parameters.tf line 2, in locals:\n\xe2\x94\x82    2:   endpoint_id = "${var.env == "dev" || "qa" ? "id1" : "id2"}"\n\xe2\x94\x82 \n\xe2\x94\x82 Unsuitable value for right operand: a bool is required.\n
Run Code Online (Sandbox Code Playgroud)\n

显然我不能在这里做“或”。我该怎么办呢?谢谢。

\n

if-statement terraform hcl

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

使用 Terraform 的 aws 子网的子网范围无效

当我尝试使用 terraform 创建子网时,不断收到以下错误。使用 aws 控制台创建子网没有问题。有人可以帮助我吗?

\n

Error: error creating subnet: InvalidSubnet.Range: The CIDR '10.2.0.128/26' is invalid. \xe2\x94\x82 status code: 400

\n

Error: error creating subnet: InvalidSubnet.Range: The CIDR '10.2.0.64/26' is invalid. \xe2\x94\x82 status code: 400

\n

Error: error creating subnet: InvalidSubnet.Range: The CIDR '10.2.0.0/26' is invalid. \xe2\x94\x82 status code: 400

\n

我对 VPC 和子网使用以下 CIDR 范围

\n
variable "cidr_block" {\ndefault       = "10.1.0.0/21"\ndescription   = "VPC CIDR Block"\ntype          = string\n}\n\nvariable "public_subnet_cidr_blocks" {\ndefault     = ["10.1.0.0/26","10.2.0.0/26","10.1.0.64/26","10.2.0.64/26","10.1.0.128/26","10.2.0.128/26"]\ntype        = list\ndescription = "List of public subnet CIDR …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc terraform terraform-provider-aws

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

给定的键不标识此集合值中的元素:terraform

我正在尝试使用 terraform 部署 lambda 函数,代码是用 python 编写的。这是执行该操作的 terraform 代码。

data archive_file UpdateSeqNumInLedgerSummary {
  count       = (var.environment_id == var.prd_environment) ? 1 : 0
  ..
  ..
  ..
  #
}

resource aws_lambda_function update_seqnum_in_indexedledgersummary {
  count            = (var.environment_id == var.prd_environment) ? 1 : 0
  ..
  ..
  ..
  #
}
Run Code Online (Sandbox Code Playgroud)

在部署期间,我还尝试使用aws_lambda_inspiration调用 lambda 函数。这就是我正在做的

data aws_lambda_invocation update_seqnum_invocation {
  count         = (var.environment_id == var.prd_environment) ? 1 : 0
  function_name = aws_lambda_function.update_seqnum_in_indexedledgersummary[count.index].function_name
  input = <<JSON
  {}
  JSON
}
Run Code Online (Sandbox Code Playgroud)

但在部署期间我收到以下错误

Error: Invalid index

  on seqnum-update.tf line 124, …
Run Code Online (Sandbox Code Playgroud)

python terraform terraform-provider-aws

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

如何使用 Terraform 输出 Azure 应用服务的 URL?

我已经使用 Terraform 在 Azure 应用服务上部署了一个 NodeJS 应用程序。

现在我想输出此应用程序服务的 URL。但我在数据源中找不到这个属性。我该怎么做?例如:

output "url" {
    value = azurerm_app_service.example.url
}
Run Code Online (Sandbox Code Playgroud)

这是更新后的main.tf文件:

terraform {
  required_version = ">= 1.1.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 2.91"
    }
  }
}

provider "azurerm" {
  features {}
}

variable "location" {
  type    = string
  default = "brazilsouth"
}

resource "azurerm_resource_group" "resource_group_demo" {
  name     = "terraform-webapp-demo"
  location = var.location
}

resource "azurerm_app_service_plan" "service_plan_demo" {
  name                = "webapp-demo"
  location            = azurerm_resource_group.resource_group_demo.location
  resource_group_name = azurerm_resource_group.resource_group_demo.name …
Run Code Online (Sandbox Code Playgroud)

azure terraform

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

Terraform:根据值从地图中删除重复项

我有一个映射到局部变量的元组

locals {
  my_val = [
    {
      region = "us-east-1"
      value  = 1000
      data = 3000
    },
    {
      region = "us-east-1"
      value = 1001
      data = 4000
    },
    {
      region = "us-east2"
      value = 1002
      data = 5000
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我需要根据该对的值删除重复项,在这里我想放置区域条件us-east-1,输出应该是

{
my_val = [
    {
      region = "us-east-1"
      value  = 1000
      data = 3000
    },
    {
      region = "us-east2"
      value = 1002
      data = 5000
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

需要帮助在地图对象的值上应用不同值。

tuples terraform

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

基于默认组在 AWS Elasticache 中创建自定义参数组

我正在尝试在 AWS Elasticache 中创建自定义参数组。

我想使用默认参数组作为基础(名为 default.redis5.0.cluster.on 的组,因为这里有我需要的其他所有内容,但只有一个我想更改的属性),请参阅https:// docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.Redis.html有关默认参数组的更多详细信息

我的基本假设是,我需要将默认参数组值复制到 Terraform 资源,然后只修改我需要更改的唯一参数。然而,这会产生大量参数,而且似乎不是最简单的方法。

如果我需要在default.redis5.0.cluster.on参数组中复制参数,那么我需要将这些参数放在 Terraform 中。有没有办法将默认资源组导入为 Terraform 配置?

amazon-web-services amazon-elasticache terraform terraform-provider-aws

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

获取包含子字符串 Terraform 的项目

我的代码中有以下变量:

variable "mylist" {
  default = ["cardigan.com", "crazy-apple.com", "blue-pen.com"]
}
Run Code Online (Sandbox Code Playgroud)

在创建给定资源时,我必须根据子字符串传递此列表中元素的名称。例如,如何检索此列表中包含子字符串“apple”的元素?

terraform

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

为什么我无法部署到 Cloud Functions?

我已经能够部署几个月了,现在今天早上我突然收到此错误。

\n
\xe2\x94\x82 Error: Error while updating cloudfunction configuration: Error waiting for Updating CloudFunctions Function: Error code 3, message: Build failed: curl: (22) The requested URL returned error: 404 \n\xe2\x94\x82 \n\xe2\x94\x82 gzip: stdin: unexpected end of file\n\xe2\x94\x82 tar: Child returned status 1\n\xe2\x94\x82 tar: Error is not recoverable: exiting now; Error ID: 637fe2a4\n\xe2\x94\x82 \n\xe2\x94\x82   with google_cloudfunctions_function.syncFiles,\n\xe2\x94\x82   on functions.tf line 396, in resource "google_cloudfunctions_function" "syncFiles":\n\xe2\x94\x82  396: resource "google_cloudfunctions_function" "syncFiles" {\n\xe2\x94\x82 \n
Run Code Online (Sandbox Code Playgroud)\n

这是地形配置。我们压缩该目录并将其交给云函数进行部署

\n
data "archive_file" "source-zip" {\n  type        = "zip"\n  source_dir …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform terraform google-cloud-functions terraform-provider-gcp

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