标签: terraform-aws-modules

Terraform 计划“应用后已知”- 如何知道我的插值是否成功?

这是我成功的摘录terraform plan

 ~ primary_network_interface_id = "eni-XXXXXXXXXXXXX -> (known after apply)
   ~ private_dns                  = "shshshshshshshshhs" -> (known after apply)
   ~ private_ip                   = "XXXXXXXXXXXXXXXXXX" -> (known after apply)
   + public_dns                   = (known after apply)
   + public_ip                    = (known after apply)
   ~ secondary_private_ips        = [] -> (known after apply)
   ~ security_groups              = [] -> (known after apply)
Run Code Online (Sandbox Code Playgroud)

以上是aws_instance作为内部模块导入的资源的一部分。我打算通过变量传递安全组 ID 列表,security_groups以便在资源创建期间,它将映射到vpc_security_group_ids. 然而,通过上述计划,我看不出它是如何成功映射的。

我的问题是 - 我怎么知道这apply会起作用?Known after apply在这种情况下是 50-50 吗?另外,我没有在 TF 文档中找到任何内容,所以如果有什么内容,如果有人能指出我的方向,我将不胜感激。

谢谢,

terraform terraform-provider-aws terraform-aws-modules

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

标记 EKS 创建的自动扩展组

我使用terraform-aws-eks 模块创建了一个 AWS EKS 集群。Terraform 版本是 1.0.6,aws 提供程序版本是 3.60.0。通过这些版本,我应该能够使用aws_autoscaling_group_tag资源来标记 EKS 创建的 ASG。

我的问题是模块中的节点组是地图的映射(此处描述),我不知道如何迭代我的节点组以标记其中的所有 ASG。这是来自 terraform 的示例:

resource "aws_eks_node_group" "example" {
  cluster_name    = "example"
  node_group_name = "example"

  # ... other configuration ...
}

resource "aws_autoscaling_group_tag" "example" {
  for_each = toset(
    [for asg in flatten(
      [for resources in aws_eks_node_group.example.resources : resources.autoscaling_groups]
    ) : asg.name]
  )

  autoscaling_group_name = each.value

  tag {
    key   = "k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType"
    value = "SPOT"

    propagate_at_launch = false
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,有一个特定的节点组。但就我而言,有 3 个节点组,我希望所有 ASG 都被标记。到目前为止,我还没有对 …

terraform amazon-eks terraform0.12+ terraform-aws-modules

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

MalformedPolicyDocument:策略文档不应指定主体

我正在尝试使用 terraform 创建一个状态函数。首先,我创建一个策略并将其分配给现有角色processing_lambda_role

\n
resource "aws_iam_role_policy" "sfn_policy" {\n  policy = jsonencode(\n{\n  "Version": "2012-10-17",\n  "Statement": [\n    {\n      "Effect": "Allow",\n      "Principal": {\n        "Service": "states.amazonaws.com"\n      },\n      "Action": "sts:AssumeRole"\n    },\n    {\n            "Sid": "VisualEditor0",\n            "Effect": "Allow",\n            "Action": [\n                "lambda:InvokeFunction",\n                "lambda:InvokeAsync"\n            ],\n            "Resource": "*"\n        }\n  ]\n}\n  )\n  role = aws_iam_role.processing_lambda_role.id\n}\n\n\nresource "aws_sfn_state_machine" "sfn_state_machine" {\n  name     = local.step_function_name\n  role_arn = aws_iam_role.processing_lambda_role.arn\n\n  definition = <<EOF\n{\n  "Comment": "Get Incoming Files",\n  "StartAt": "GetIncomingFiles",\n  "States": {\n    "GetIncomingFiles": {\n      "Type": "Task",\n      "Resource": "${aws_lambda_function.get_incoming_lambda.arn}",\n      "ResultPath": "$.Output",\n      "End": true\n    }\n  }\n}\nEOF\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我收到此错误: …

amazon-web-services terraform terraform-provider-aws aws-policies terraform-aws-modules

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

如何让 Terraform 读取 AWS 凭证文件?

我正在尝试使用 terraform 创建一个 AWS S3 存储桶,这是我的代码:

provider "aws" {
  profile = "default"
  region  = "ap-south-1"
}

resource "aws_s3_bucket" "first_tf" {
  bucket = "svk-pl-2909202022"
  acl    = "private"
}
Run Code Online (Sandbox Code Playgroud)

我使用记事本手动创建了“凭据”文件,并使用 Powershell 删除了“.txt”扩展名并将该文件存储在C:\Users\terraform\.aws.

[default]
aws_access_key_id=**************
aws_secret_access_key=************
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行时terraform plan,我收到一个错误消息

错误:配置 Terraform AWS Provider 时出错:找不到 Terraform AWS Provider 的有效凭证源

然后,我还尝试通过安装 AWS CLI 创建“凭据”文件,我运行了命令

aws configure --profile terraform
Run Code Online (Sandbox Code Playgroud)

terraform我的用户名在哪里。所以,它要求我输入aws_access_key_idaws_secret_access_key。输入所有凭据后,我运行了命令terraform init,该命令运行成功,但是当我运行时terraform plan,它再次显示错误,内容为:

错误:配置 Terraform AWS Provider 时出错:找不到 Terraform AWS Provider 的有效凭证源

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

4
推荐指数
2
解决办法
6214
查看次数

传输:拨打 dial tcp xx.xx.xx.xx15012 时出错:AWS-EKS + Terraform + Istio 的 i/o 超时

我使用terraform-aws-eks设置了一个(我认为)是沼泽标准 EKS 集群如下所示:

\n
module "eks" {\n  source  = "terraform-aws-modules/eks/aws"\n  version = "~> 18.0"\n\n  cluster_name    = "my-test-cluster"\n  cluster_version = "1.21"\n\n  cluster_endpoint_private_access = true\n  cluster_endpoint_public_access  = true\n\n  cluster_addons = {\n    coredns = {\n      resolve_conflicts = "OVERWRITE"\n    }\n    kube-proxy = {}\n    vpc-cni = {\n      resolve_conflicts = "OVERWRITE"\n    }\n  }\n\n  vpc_id     = var.vpc_id\n  subnet_ids = var.subnet_ids\n\n  eks_managed_node_group_defaults = {\n    disk_size      = 50\n    instance_types = ["m5.large"]\n  }\n\n  eks_managed_node_groups = {\n    green_test = {\n      min_size     = 1\n      max_size     = 2\n      desired_size = 2\n\n …
Run Code Online (Sandbox Code Playgroud)

terraform istio kubernetes-ingress amazon-eks terraform-aws-modules

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

如何在 terraform 中的同一文件中运行多个模块?

我曾经https://github.com/cloudposse/terraform-aws-acm-request-certificate使用 terraform 和 aws 生成证书。

如何在 terraform 中的同一文件中运行多个域?(不是子域)

我尝试这个但我有错误Error: Duplicate module call

module "acm_request_certificate" {
  source                            = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
  domain_name                       = "example.com"
  process_domain_validation_options = true
  ttl                               = "300"
}

module "acm_request_certificate" {
  source                            = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
  domain_name                       = "otherexample.com"
  process_domain_validation_options = true
  ttl                               = "300"
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似的解决方案:

const domains = ["example.com", "otherexample.com"]

foreach(domain of domains) {
 module "acm_request_certificate" {
  source                            = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
  domain_name                       = domain
  process_domain_validation_options = true
  ttl                               = "300"
 }
}
Run Code Online (Sandbox Code Playgroud)

terraform terraform-aws-modules

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

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
查看次数