标签: terraform

AWS Terraform:通过匹配标签名称中的子字符串来过滤特定子网

我有 6 个子网,我想从中过滤 3 个子网匹配子字符串internal并在 rds 中使用。

标签名称有内部词,并希望以此为基础进行过滤。

有人可以帮我吗?

data "aws_vpc" "vpc_nonprod-sctransportationops-vpc" {
  tags {
    Name = "vpc_nonprod-sctransportationops-vpc"
  }
}
    
data "aws_subnet_ids" "all" {
  vpc_id = "${data.aws_vpc.vpc_nonprod-sctransportationops-vpc.id}"
}
    
output "aws_subnet_ids" {
  value = "${data.aws_subnet_ids.all.ids}"
}
# 6 subnets
# Now look up details for each subnet
     

data "aws_subnet" "filtered_subnets" {
  count = "${length(data.aws_subnet_ids.all.ids)}"
  id    = "${data.aws_subnet_ids.all.ids[count.index]}"

  filter {
    name   = "tag:Name"
    values = ["*internal*"]
  }
}
Run Code Online (Sandbox Code Playgroud)

一些标签名称有internal子串

需要获取标签名称具有内部子字符串的所有子网ID

values = ["*"]6但是,返回IDvalues = ["any …

amazon-web-services terraform

13
推荐指数
2
解决办法
8807
查看次数

Terraform 后端到 azure blob 存储错误

我一直在使用以下内容在 Azure 存储中为 terraform 成功创建后端状态文件,但由于某种原因它停止工作。我已经为存储回收了密码,尝试了两个密钥并每次都得到相同的错误

后端.tf

    terraform {
    backend "azurerm" {
        storage_account_name    = "terraformstorage"
        resource_group_name     = "automation"
        container_name          = "terraform" 
        key                     = "testautomation.terraform.tfstate"
        access_key              = "<storage key>"
    }
}
Run Code Online (Sandbox Code Playgroud)

返回错误

terraform init 正在
初始化后端...
成功配置后端“azurerm”!除非后端配置更改,否则 Terraform 将自动使用此后端。
错误刷新状态:存储:服务返回错误:StatusCode=403,ErrorCode=AuthenticationFailed,ErrorMessage=服务器无法验证请求。确保 Authorization 标头的值形成正确,包括签名。RequestId:665e0067-b01e-007a-6084-97da67000000
时间:2018-12-19T10:18:18.7148241Z, RequestInitiated=2018 年 12 月 19 日星期三 10:18:186060707007000000000000000000000000000000008000008G API 版本=, QueryParameterName=, QueryParameterValue=

任何想法我做错了什么?

azure terraform

13
推荐指数
3
解决办法
7418
查看次数

如何使用 if, else, elsif 语句创建 Terraform?

我正在设置一个 terraform 模块来创建一个 Aurora 集群。
我需要有一个跨区域复制的选项,所以我需要决定与源区域相关的副本区域。
有没有办法在 terraform 中做一个有条件的多选项?

terraform terraform-provider-aws

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

在不同订阅下拥有 Terraform azure 状态文件

我在 Azure 中有两个订阅。我们称它们为 sub-dev 和 sub-prod。在 sub-dev 下,我有用于开发的资源(在资源组 rg-dev 中)和用于生产的 sub-prod 资源(在资源组 rg-prod 中)。

现在,我只想为开发和生产只有一个状态文件。我可以这样做,因为我使用 Terraform 工作区(开发和生产)。在 sub-dev (rg-dev) 下有一个名为 tfsate 的存储帐户。它有一个容器等。Azure 后端配置如下:

terraform {
  backend "azurerm" {
    resource_group_name  = "rg-dev"
    storage_account_name = "tfstate"
    container_name       = "tfcontainer"
    key                  = "terraform.tfstate" 
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我想申请开发环境,我必须将 Az Cli 切换到子开发环境。同样,对于生产,我将不得不使用 sub-prod。我使用 az cli 切换默认订阅:

az account set -s sub-prod
Run Code Online (Sandbox Code Playgroud)

问题是状态的存储帐户在 sub-dev 而不是 sub-prod 下。terraform init当默认订阅设置为 sub-prod 时,我会在尝试(或应用)时遇到访问错误。

Error: Failed to get existing workspaces: Error retrieving keys for Storage Account "tfstate": storage.AccountsClient#ListKeys: Failure …
Run Code Online (Sandbox Code Playgroud)

azure terraform terraform-provider-azure

13
推荐指数
2
解决办法
8568
查看次数

无法获取现有工作区:查询 Cloud Storage 失败:存储:存储桶不存在

在云构建中使用 terraform,但在这一步失败了

steps:
  # Terraform
  - id: 'configure_terraform'
    name: node:10.16.3
    entrypoint: "node"
    args: ["./create_terraform_config.js",
           "../terraform/override.tf",
           "${_TERRAFORM_BUCKET_NAME}",
           "${_TERRAFORM_BUCKET_PATH}"]
    dir: "app/scripts"
  - id: 'init_terraform'
    name: hashicorp/terraform:light
    args: ["init"]
    dir: "app/terraform"
Run Code Online (Sandbox Code Playgroud)

正在初始化后端...

成功配置后端“gcs”!除非后端配置更改,否则 Terraform 将自动使用此后端。

错误:无法获取现有工作区:查询 Cloud Storage 失败:存储:存储桶不存在

terraform google-cloud-build

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

如何使用 terraform 在 AWS 上启用 CORS

我正在尝试在我的 aws 项目上启用 CORS,该项目由API GatewayLambda功能组成。我正在使用GETOPTIONS方法创建一个 API 网关。 OPTIONS旨在成为根据 aws文档启用 CORS 的模拟端点。有一个 lambda 函数 ( aws_lambda_function.app_lambda) 由方法调用GET,并且在响应标头中具有:

"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
Run Code Online (Sandbox Code Playgroud)

但我仍然无法通过 CORS。

resource "aws_api_gateway_rest_api" "rest_api" {
  name        = "appAPIGateway"
  description = "App App App"
}

resource "aws_api_gateway_resource" "rest_api_resource" {
  depends_on = ["aws_api_gateway_rest_api.rest_api"]
  rest_api_id = "${aws_api_gateway_rest_api.rest_api.id}"
  parent_id = "${aws_api_gateway_rest_api.rest_api.root_resource_id}"
  path_part = "playground"
}

resource "aws_api_gateway_method" "opt" {
  rest_api_id   = "${aws_api_gateway_rest_api.rest_api.id}"
  resource_id   = "${aws_api_gateway_resource.rest_api_resource.id}"
  http_method   = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services cors terraform aws-api-gateway

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

我可以在 Terraform Cloud 上使用 Terragrunt 吗

我有一个包含 Terraform Cloud 的供应管道,我们的领导层要求我们使用 Terragrunt 来提高 Terraform 代码质量。

Terragrunt 是一个很好的工具,但我没有看到任何证据表明有人在 Terraform Cloud 上成功使用过它。

任何人都可以解决这个问题吗?请只回答如果你

  1. 自己做过这件事,或者
  2. 可以提供文件证明这是可行的,或
  3. 提供文件证明这不是一个好主意或
  4. Terraform Cloud 无法实现。

terraform terragrunt terraform-cloud

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

Terraform 在应用时从远程 URL 下载本地文件并在销毁时删除文件

在创建实际的 lambda 资源之前,我需要从 URL 下载 lambda 存档文件,并且在运行 terraform destroy 时需要删除该文件。基本上是从远程 URL 创建的本地文件资源。我目前已使用如下所示的配置程序完成此null_resource操作local-exec。但是,当我运行 terraform destroy 时,这不会删除该文件。有没有更好的办法?

resource "null_resource" "lambda_jar" {
  triggers = {
    on_version_change = "${var.lambda_archive_version}"
  }

  provisioner "local-exec" {
    command = "curl -o lambda.jar ${var.server_url}/${var.lambda_archive_version}.jar"
  }
}
Run Code Online (Sandbox Code Playgroud)

terraform

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

如何在 terraform 中创建 aws lambda 触发器?

任何人都可以参考或向我展示如何使用 Terraform 创建 AWS Lambda 触发器的示例吗?

在AWS控制台中,单击函数名称并选择配置选项卡后,您可以创建触发器,例如SNS触发器

aws-lambda terraform

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

我们可以通过电子邮件订阅从 Terraform 添加 SNS 主题吗

您好,我想知道我们是否可以通过电子邮件订阅从 Terraform 添加 SNS 主题。

\n

因此,使用一个 \xe2\x80\x9cTerraform apply\xe2\x80\x9d 命令可以轻松设置警报并创建 SNS 主题以将警报发送到电子邮件。

\n

谢谢

\n

terraform terraform-provider-aws

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