标签: terraform-provider-aws

如何将现有 AWS 资源导入 Terraspace?

使用“terraform import”语法可以直接从 Terraform 导入资源。然而, terraspace没有关于此事的文档。他们的文档仅讨论如何通过将现有的 Terraform 状态文件移动到 S3 并配置后端来将其导入 Terraspace,以便 Terraspace 可以无缝地获取已经存在的 tfstate 文件。

有谁知道如何将现有基础设施导入 Terraspace?我在 AWS 中有一些现有的基础设施,我希望今后将其导入并由 Terraspace 管理。

terraform terraform-provider-aws terraspace

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

如何在 Terraform 中迭代“计数”资源?

在此示例中,我尝试创建 3 个 EC2 实例,每个实例都分配有一个弹性 IP。我想通过以下内容来实现这一目标。

resource "aws_instance" "web_servers" {
  ami                         = "ami-09e67e426f25ce0d7"
  instance_type               = "t3.micro"
  ...
  count = 3
}
Run Code Online (Sandbox Code Playgroud)

并且,与其他网络实例一起,

resource "aws_eip" "elastic_ip" {
  for_each = aws_instance.web_servers
  instance = each.key
  vpc      = true
}
Run Code Online (Sandbox Code Playgroud)

然而,这说明了以下几点:

The given "for_each" argument value is unsuitable: the "for_each" argument must be a map, or set of strings, and you have provided a value of type tuple.
Run Code Online (Sandbox Code Playgroud)

我尝试将其包装for_each在 a 中toset(),其中还表示存在未知数量的实例的问题 - 但我知道有 3 个。count我在&关键字周围遗漏了什么吗for_each

loops amazon-web-services terraform terraform-provider-aws

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

Terraform RDS实例monitoring_role_arn不起作用

我正在尝试使用Terraform创建AWS RDS 数据库实例。我正在尝试使用PostgreSQL 12作为数据库。除了监控部分之外,一切似乎都很好,我无法在脚本中指定“ monitoring_role_arn ”。

\n

以下是我用于创建 PostgreSQL 数据库实例的 Terraform 脚本:

\n

rds.tf

\n
# AWS PSQL RDS Instance \nresource "aws_db_instance" "test-DB" {\n\n  depends_on = [aws_security_group.test-PSQL-DB-SG, aws_iam_role.test-IAM-Role-RDS]\n\n  // General Configurations\n  name                 = "testdb"\n  identifier = "am-poc-spoke1-db"\n  engine               = "postgres"\n  engine_version       = "12.5"\n  instance_class       = "db.t2.micro" \n  parameter_group_name = "default.postgres12"\n  port = "5432"\n\n  // Authentication\n  username             = "postgres"\n  password             = "postgres"\n\n  // Storage Configurations\n  storage_type = "gp2"\n  allocated_storage    = 20\n  max_allocated_storage = 100\n\n  // …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds amazon-iam terraform terraform-provider-aws

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

无法检索提供商 hashicorp/eks 的可用版本列表

我已按照 hashCorp 教程进行部署和 EKS 集群。当使用他们的 tf 文件时,它会成功初始化。如果我使用下面的 tf 文件,它会引发 terraform-aws-modules/eks 错误,并且它为什么这样做是没有意义的。

\n
variable "region" {\n  default     = "us-west-2"\n  description = "AWS region"\n}\n\nprovider "aws" {\n  region = "us-west-2"\n}\n\nprovider "kubernetes" {\n  host                   = data.eks_cluster.cluster.endpoint\n  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)\n  token                  = data.eks_cluster_auth.cluster.token\n  load_config_file       = false\n}\n\ndata "aws_availability_zones" "available" {}\n\ndata "eks_cluster" "cluster" {\n  name = module.eks.cluster_id\n}\n\ndata "eks_cluster_auth" "cluster" {\n  name = module.eks.cluster_id\n}\n\nlocals {\n  cluster_name = "development-eks-${random_string.suffix.result}"\n}\n\nresource "random_string" "suffix" {\n  length  = 8\n  special = false\n}\n\n\nmodule "eks" {\n  source          = "terraform-aws-modules/eks/aws"\n  cluster_name    = local.cluster_name\n  cluster_version = "1.17"\n …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws

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

将 terraform 的输出作为 bash 脚本的输入变量

我正在编写一个脚本,负责运行 terraform 文件并创建基础设施。我有一个要求,我需要将 terraform 的输出放入同一脚本中以创建数据库架构。我需要获取端点、用户名、密码和数据库名称,并将其作为脚本的输入来登录数据库并创建架构。我需要从已创建的 terraform 中获取 aws_db_instance 的输出,并将其作为输入推送到 bash 脚本中。任何有关我们如何实现这一目标的帮助将不胜感激。提前致谢。下面是我将在脚本中使用的架构代码,并且需要来自 terraform 的这些输入。

RDS_MYSQL_USER="Username";
RDS_MYSQL_PASS="password";
RDS_MYSQL_BASE="DB-Name";

mysql -h $RDS_MYSQL_ENDPOINT -P $PORT -u $RDS_MYSQL_USER -p $RDS_MYSQL_PASS -D $RDS_MYSQL_BASE -e 'quit';```
Run Code Online (Sandbox Code Playgroud)

bash shell terraform terraform-provider-aws

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

有没有办法从 Terraform 中的另一个帐户检索数据?

我想将 Terraform 中的资源“数据”用于 sns 主题,但我不想在 aws-account 中寻找资源,因为我正在为其部署其他资源。它应该查找我的其他 aws 帐户(在同一组织中)并在那里找到资源。有办法实现这一点吗?

data "aws_sns_topic" "topic_alarms_data" {
  name = "topic_alarms"
}
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws

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

为什么 TF 构建失败并显示“刷新状态错误:HTTP 远程状态端点需要身份验证”?

我的管道构建、计划和应用都很好地适合我的开发分支。当我推送到主分支时,我收到“刷新状态错误:HTTP 远程状态端点需要身份验证”。查看管道日志:(既然有人会问,令牌“$onbaord_cloud_account_into_monitoring”对范围内的项目 API 具有完整的读/写访问权限。)...

Running with gitlab-runner 13.4.1 (REDACTED)
  on runner-gitlab-runner-REDACTED-REDACTED REDACTED
Resolving secrets
00:00
Preparing the "kubernetes" executor
00:00
Using Kubernetes namespace: gitlab-managed-apps
Using Kubernetes executor with image my-gitlab.io:5005/team-cloud-platform-team/terraform-modules/root-module-deployment/python-terraform14 ...
Preparing environment
00:03
Waiting for pod gitlab-managed-apps/runner-REDACTED-project-REDACTED-concurrent-REDACTED to be running, status is Pending
Running on runner-REDACTED-project-REDACTED-concurrent-REDACTED via runner-gitlab-runner-REDACTED-REDACTED...
Getting source from Git repository
00:02
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/team-cloud-platform-team/teamcloudv2/workers/onboard-cloud-account-into-monitoring/.git/
Created fresh repository.
Checking out REDACTED as master...
Skipping Git submodules …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci terraform terraform-provider-aws

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

terraform aws_acm_certificate_validation.cert_api:仍在创建... [已过去 4 分 21 秒] 直到超时

ACM 证书验证从未完成,大约 45 分钟后超时,查看该域的 AWS 托管区域,它有一个 cname 记录。它永远不会到达创建 Api 网关域部分。

主.tf

resource "aws_acm_certificate" "cert_api" {
  domain_name       = var.api_domain
  validation_method = "DNS"

  tags = {
    Name = var.api_domain
  }
}

resource "aws_acm_certificate_validation" "cert_api" {
  certificate_arn         = aws_acm_certificate.cert_api.arn
  validation_record_fqdns = aws_route53_record.cert_api_validations.*.fqdn
}


resource "aws_route53_zone" "api" {
  name = var.api_domain
}

resource "aws_route53_record" "cert_api_validations" {
  allow_overwrite = true
  count           = length(aws_acm_certificate.cert_api.domain_validation_options)

  zone_id = aws_route53_zone.api.zone_id
  name    = element(aws_acm_certificate.cert_api.domain_validation_options.*.resource_record_name, count.index)
  type    = element(aws_acm_certificate.cert_api.domain_validation_options.*.resource_record_type, count.index)
  records = [element(aws_acm_certificate.cert_api.domain_validation_options.*.resource_record_value, count.index)]
  ttl     = 60
}

resource "aws_route53_record" "api-a" …
Run Code Online (Sandbox Code Playgroud)

terraform-provider-aws

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

如何发现现有的 Terraform 版本

有没有办法找出可能使用哪个版本的 Terraform 来编写多个 terraform 配置文件?

我的 terraform 版本是v1.0.11. 我刚刚克隆了一个存储库来使用,并且 terraform 配置语法看起来很旧。

我尝试搜索是否required_version已在任何地方设置,但没有任何结果。

有某种方法可以解决这个问题吗?

terraform terraform-provider-aws terraform0.12+

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

如何在 Terraform 外部数据源中使用 AWS cli 命令

如果我单独运行以下命令,我会得到预期的结果 -

这 :

aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'
Run Code Online (Sandbox Code Playgroud)

返回这个:

E1P6ZIBDB6I6FZ
Run Code Online (Sandbox Code Playgroud)

如何使用 Terraform 外部数据源获得相同的结果?

我试过这个:

data "external" "json" {
program = ["sh", "-c", "aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'"] 
}

output "map" {
value = ["${values(data.external.json.result)}"] 
}
Run Code Online (Sandbox Code Playgroud)

但当我运行 Terraform apply 时它返回此错误 -

Expected a comma to mark the beginning of the next item.
Run Code Online (Sandbox Code Playgroud)

我假设正确写入时“值”将是 E1P6ZIBDB6I6FZ …

amazon-web-services terraform terraform-provider-aws

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