标签: terraform

如何在 terraform EC2 启动模板用户数据中使用 templatefile?

我正在使用用户数据 powershell 脚本设置 EC2 启动模板,并且希望能够在脚本本身中使用 templatefile。我能够通过自动缩放启动配置来做到这一点,因为它接受用户数据作为字符串。对于 EC2 启动模板,它要求它是一个 base64 编码的字符串,但它似乎不接受这一点:

user_data = "${base64encode(<<EOF
  <powershell>
  $file_content = @"
  ${templatefile("myfile.txt", var.myfilevars)}
  "@
  </powershell>
EOF"
)}"
Run Code Online (Sandbox Code Playgroud)

上述内容是否有可行的变体?或者另一种方式来实现这一点?

terraform

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

如何将现有的 GCP 云基础设施导出到 terraform 代码

搜索后,我发现我可以使用Terraforming Tool来将 AWS 云基础设施导出为 terraform 代码。

如何将我现有的 Google 云基础设施导出到 terraform?GCP 是否有任何类似或本机工具?

google-cloud-platform terraform

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

Terraform - 无法使用 terraform-aws-modules/security-group/aws 定义安全组

我正在尝试此模块中的示例 https://registry.terraform.io/modules/terraform-aws-modules/security-group/aws/3.10.0

主要.tf:

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "${var.environment}-project-vpc"
  cidr = "10.0.0.0/16"

  #
  # Important!
  # https://github.com/terraform-aws-modules/terraform-aws-vpc/issues/403
  # Only append or delete from the end of the list
  #
  azs             = ["us-east-2a", "us-east-2b", "us-east-2c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway     = true
  single_nat_gateway     = true
  one_nat_gateway_per_az = false

  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = module.project_config.tags
}


module "bastion_sg" {
  source = "terraform-aws-modules/security-group/aws"

  name        = "bastion-service"
  description = "Security group for …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws terraform0.12+ terraform-aws-modules

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

安全规则的端口范围 terraform 无效

无法使用 terraform 在 azure 中为 nsg 安全规则提供目标端口范围。Terraform v0.12.28provider.azurerm v2.18.0

security_rule {
    name                       = "databricks-control-plane-inbound-rule"
    priority                   = 110
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = 225557
  }
Run Code Online (Sandbox Code Playgroud)

错误:发送请求失败:StatusCode=400 -- 原始错误:
代码 =“SecurityRuleInvalidPortRange”消息 =“安全规则的端口范围无效。提供的值:225557。值应为整数或带有“-”分隔符的整数范围。有效范围0-65535。” 详情=[]

terraform terraform-provider-azure

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

如何在 Terraform 中的列表(对象)变量上执行嵌套 for 循环

我正在编写一个 terraform 模块,它接受一个list实体,每个实体都entity与一个别名列表相关联。我在访问别名对象并传入 时遇到问题each.key。非常感谢任何帮助。

resource "vault_identity_entity_alias" "alias" {
  provider = vault.this

  for_each = [
    for entity in var.entities : {
      for alias in entity.aliases :
      alias.name => alias
    }
  ]

  name           = each.key
  mount_accessor = lookup(vault_auth_backend.b[each.key], "accessor", null)
  canonical_id   = vault_identity_entity.entity[each.value.entity].id
}
Run Code Online (Sandbox Code Playgroud)

变量定义

variable "entities" {
  description = "A collection of entities where each entity is associated with a list aliases "
  type = list(object({
    name     = string
    policies = list(string)
    metadata = map(string) …
Run Code Online (Sandbox Code Playgroud)

terraform hashicorp-vault

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

如何使用 Terraform 模块增加 GCP 上的配额?

当我使用 Terraform 代码自动创建具有各种资源(例如 Redis、SQL、GKE 等)的新 GCP 项目时,出现以下错误:

Error: error creating NodePool: googleapi: Error 403:
    (1) insufficient regional quota to satisfy request: resource "CPUS": request requires '35.0' and is short '24.0'. project has a quota of '24.0' with '24.0' available. View and manage quotas at https://console.cloud.google.com/iam-admin/quotas?usage=USED&project=<PROJECT_ID>
    (2) insufficient regional quota to satisfy request: resource "IN_USE_ADDRESSES": request requires '10.0' and is short '4.0'. project has a quota of '8.0' with '8.0' available. View and manage quotas at https://console.cloud.google.com/iam-admin/quotas?usage=USED&project=<PROJECT_ID>., forbidden
Run Code Online (Sandbox Code Playgroud)

我尝试运行的 Terraform 代码: …

google-cloud-platform terraform terraform-provider-gcp

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

通过 terraform 为任务状态更改创建 Cloudwatch 事件规则

我想通过 terraform 根据 ECS 集群的任务状态更改设置 Cloudwatch 事件规则。当任务进入“已停止”或“正在运行”状态时,我希望收到通知。

每当任一事件发生时,这条规则都会起作用并匹配吗?然后,我将相应地创建资源“aws_cloudwatch_event_target”:

resource "aws_cloudwatch_event_rule" "ecs-sns-rule" {
  name = "ecs task state change"
  
  event_pattern = <<PATTERN
{
  "source": [
    "aws.ecs"
    ],
  "detail-type": [
    "ECS Task State Change"
    ],
  "detail": {

    "lastStatus": [
      "STOPPED",
      "RUNNING"
    ],
   "clusterArn": "arn:aws:ecs:us-west-2:XXXXXXXXX:Cluster/XXXXXXXX"
}
}
PATTERN
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs amazon-cloudwatch terraform

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

Terraform AWS - 路由表关联 - 添加多个子网

我在我的 vpc 中创建了 4 个子网,其中 2 个是公共子网,2 个是私有子网。我需要将 2 个公共子网关联到一个路由表,将 2 个私有子网关联到另一个路由表。查看文档,aws_route_table_association似乎只接受一个subnet_id.

如何添加多个,subnets如图所示?

在此输入图像描述

将路由表关联到子网

resource "aws_route_table_association" "public-test" {
  subnet_id =                                         -> I need to add 2 public subnets here
  route_table_id = aws_route_table.public-test.id
}

resource "aws_route_table_association" "private-test" {
  subnet_id =                                          -> I need to add 2 private subnets here
  route_table_id = aws_route_table.private-test.id
}
Run Code Online (Sandbox Code Playgroud)

以下是子网和路由:

创建子网

resource "aws_subnet" "public-test-a" {
  vpc_id = aws_vpc.vpc-test-02.id
  cidr_block = "10.0.0.0/28"
  map_public_ip_on_launch = true
  availability_zone = var.AZ[0]

  tags = {
    Name …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc terraform

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

AWS:AWS HTTPS API 网关的资源策略,用于限制对特定 IP 的访问

最近AWS发布了基于HTTPS的API网关(不是REST)。我们使用 Terraform 来管理 AWS 资源,并且我们有一个服务来创建 AWS HTTPS API 网关资源,存在一个安全问题,即我们允许任何 IP/系统调用 API,因此我们计划添加一个策略(资源策略)以限制仅访问特定 IP。对于 REST API 网关来说,实现这一点很容易,因为我们有aws_api_gateway_rest_api_policy资源来通过 Terraform 创建策略并将其附加到网关,但对于 HTTPS API 网关却无法实现同样的效果。我们使用aws_apigatewayv2_api创建 HTTPS 网关资源,但找不到附加策略的资源,或者在创建网关本身时没有指定策略的选项。如果您能了解如何将策略附加到基于 HTTPS 的 API,我们将不胜感激。谢谢。

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

0
推荐指数
2
解决办法
3141
查看次数

ElasticBeanstalk 在与 Terraform 共享的 ALB 中使用 HTTPS:443 而不是 HTTP:80 创建默认侦听器规则

在 terraform 中创建具有共享负载均衡的 ElasticBeanstalk 环境时,是否可以将默认侦听器规则设置为使用 HTTPS:443 侦听器而不是 HTTP:80 侦听器?

我的 ALB 将端口 80 作为侦听器,将流量从 http 重定向到 https。现在,当 beanstalk 创建环境时,它会在 HTTP:80 侦听器中创建侦听器规则,但我不希望它这样做。在控制台中,我可以创建一个具有共享 ALB 的环境,并选择默认侦听器端口为 443(HTTPS),并将在 443 侦听器中创建默认规则,这正是我想要发生的情况。

我正在使用 terraform 构建此项目,并且在 ElasticBeanstalk常规选项的常规选项中,我没有看到将默认侦听器规则设置为使用 HTTPS:443 作为 elbv2 设置的选项。

amazon-web-services amazon-elastic-beanstalk terraform aws-application-load-balancer

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