我不太明白 terraform 目录是如何设置的,但我的目录似乎非常基本。尽管设置了空值,但它一直抱怨空值。有人可以看一下并告诉我可能是什么问题吗?
\n.tf 的片段:
\nprovider "aws" {\n region = var.region\n\n default_tags {\n tags = {\n source = "/home/ubuntu/bootcamp-terraform-master"\n owner_name = var.owner-name\n owner_email = var.owner-email\n purpose = var.purpose\n }\n }\n}\n\n\n// Resources\n\nresource "aws_instance" "zookeepers" {\n count = var.zk-count\n ami = var.aws-ami-id\n instance_type = var.zk-instance-type\n key_name = var.key-name\n\n root_block_device {\n volume_size = 100\n }\n\n tags = {\n Name = "${var.owner-name}-zookeeper-${count.index}"\n"bootcamp2.tf" 269L, 7806C 14,0-1 Top\nprovider "aws" {\n region = var.region\n\n default_tags {\n tags = {\n source = "/home/ubuntu/bootcamp-terraform-master"\n owner_name = var.owner-name\n …Run Code Online (Sandbox Code Playgroud) 我已经尝试部署自我管理节点 EKS 集群有一段时间了,但没有成功。我现在遇到的错误是 EKS 插件:
错误:创建 EKS 插件时出错 (DevOpsLabs2b-dev-test--eks:kube-proxy):InvalidParameterException:不支持指定的插件版本,AddonName:“kube-proxy”,ClusterName:“DevOpsLabs2b-dev-test-- eks", Message_: "不支持指定的插件版本" } 在 .terraform/modules/eks-ssp-kubernetes-addons/modules 上使用 module.eks-ssp-kubernetes-addons.module.aws_kube_proxy[0].aws_eks_addon.kube_proxy /kubernetes-addons/aws-kube-proxy/main.tf 第 19 行,在资源“aws_eks_addon”“kube_proxy”中:
coredns 也会重复此错误,但 ebs_csi_driver 会抛出:
错误:创建期间返回意外的 EKS 附加组件 (DevOpsLabs2b-dev-test--eks:aws-ebs-csi-driver) 状态:等待状态变为“ACTIVE”时超时(最后状态:“DEGRADED”,超时: 20m0s) [警告] 再次运行 terraform apply 将删除 kubernetes 插件并尝试再次创建它,有效清除以前的插件配置
我的 main.tf 看起来像这样:
terraform {
backend "remote" {}
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 3.66.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.7.1"
}
helm = {
source = "hashicorp/helm"
version = ">= 2.4.1" …Run Code Online (Sandbox Code Playgroud) amazon-web-services kubernetes terraform terraform-provider-aws amazon-eks
嘿,团队我\xe2\x80\x99m 在文档中找不到有关如何在 JSON 文件中添加 terraform 变量的信息,
\n我需要在这个 JSON 中注入这个变量,
\n
在这个形状的 JSON 中,但它不起作用,
\n
我确实尝试过使用 var 和 locals,我尝试过使用 var 和 locals,但它不起作用,它是默认的
\njson amazon-web-services grafana terraform terraform-provider-aws
我有许多 Terraform 数据源和一个这样创建的本地块
data "aws_subnets" "subs" {
for_each = toset(["a", "b", "c"])
filter {
name = "vpc-id"
values = [data.aws_vpc.vpc.id]
}
filter {
name = "availability-zone"
values = ["${data.aws_region.region.name}${each.key}"]
}
}
data "aws_vpc" "vpc" {
default = false
}
data "aws_region" "region" {}
locals {
ids = [for az in data.aws_subnets.subs : az.ids[1]]
}
Run Code Online (Sandbox Code Playgroud)
和一个输出块
output "main" {
value = local.ids
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行 terraform apply 时出现错误
The given key does not identify an element in this collection value: the given …
amazon-web-services terraform terraform-provider-aws terraform0.12+
我正在尝试生成证书并使其通过 DNS 进行验证...一切似乎都有效,直到我使用资源“aws_acm_certificate_validation”时的最后步骤
\n我的代码如下:
\n# Create Certificate\nresource "aws_acm_certificate" "ic_cert" {\n provider = aws.us-east-1\n domain_name = aws_s3_bucket.ic_bucket_main.bucket\n subject_alternative_names = [aws_s3_bucket.ic_bucket_redirect.bucket]\n validation_method = "DNS"\n\n tags = {\n Billing = "company X"\n }\n\n lifecycle {\n create_before_destroy = true\n }\n}\n\n# Validate Certificate via DNS\n# get zone_id\n\ndata "aws_route53_zone" "selected" {\n provider = aws.us-east-1\n name = aws_s3_bucket.ic_bucket_main.bucket\n}\n\n# Generate DNS Records\nresource "aws_route53_record" "ic_DNS_validation" {\n provider = aws.us-east-1\n for_each = {\n for dvo in aws_acm_certificate.ic_cert.domain_validation_options : dvo.domain_name => {\n name = dvo.resource_record_name\n record = dvo.resource_record_value\n type …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-route53 terraform terraform-provider-aws
编辑:我现在已经修改了问题以显示整个 main.tf 文件。
\n我有一个 Terraform 文件,该文件应该创建一个 AWS S3 存储桶,但每次运行时我不断收到的错误之一terraform plan是:
\xe2\x94\x82 Error: Invalid provider configuration\n\xe2\x94\x82 Provider "registry.terraform.io/hashicorp/aws" requires explicit configuration. Add a provider block to the root module and configure the provider's required arguments as described in the provider documentation.\nRun Code Online (Sandbox Code Playgroud)\nmain.tf 文件:
\nterraform {\n backend "s3" {\n region = "us-east-1"\n bucket = "bucketname"\n key = "path/terraform.tfstate" \n dynamodb_table = "tf-state-lock" \n access_key = "<access_key>"\n secret_key = "<secret_key"\n }\n\n required_providers {\n aws = {\n version …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services terraform terraform-provider-aws
我在 terraform 模块中定义了自定义资源:
resource "aws_alb_target_group" "whatever"
{
....
}
Run Code Online (Sandbox Code Playgroud)
事实证明whatever这个名字不好,我需要更新它。
经典的方法是登录到每个环境并执行terraform state mv,但是我有很多环境,并且没有自动化执行此类操作。
如何在不手动移动状态的情况下更改资源名称(仅通过编辑 terraform 模块和应用计划)?
我确实有 SQS 的默认策略,如下所示。参考了文档 - https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue_policy
如果需要 sns 订阅,我想将该策略附加到默认策略之上。
默认策略如下
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:SendMessage*"
],
"Resource": [
"${aws_sqs_queue.queue.arn}"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
附加政策如下
{
"Sid": "topic-subscription-arn-test",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SQS:SendMessage",
"Resource": ["${aws_sqs_queue.queue.arn}"],
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn-test"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚尝试过,但政策被覆盖了。有什么想法可以使用 Terraform 附加策略吗?提前致谢。正在寻找这种方法的某种想法吗?可能有超过 2 个策略,因此我正在尝试附加这些策略。
amazon-sqs amazon-web-services terraform terraform-provider-aws
当我尝试运行“Terraform init”时出现错误,我在这里缺少什么?
\n\xe2\x94\x82 Error: Variables not allowed\n\xe2\x94\x82 \n\xe2\x94\x82 on ../../resources/s3-bucket/main.tf line 12, in resource "aws_s3_bucket" "s3-bucket":\n\xe2\x94\x82 12: prevent_destroy = var.prevent_destroy\n\xe2\x94\x82 \n\xe2\x94\x82 Variables may not be used here.\n\xe2\x95\xb5\n\n\xe2\x95\xb7\n\xe2\x94\x82 Error: Unsuitable value type\n\xe2\x94\x82 \n\xe2\x94\x82 on ../../resources/s3-bucket/main.tf line 12, in resource "aws_s3_bucket" "s3-bucket":\n\xe2\x94\x82 12: prevent_destroy = var.prevent_destroy\n\xe2\x94\x82 \n\xe2\x94\x82 Unsuitable value: value must be known\nRun Code Online (Sandbox Code Playgroud)\n资源:
\n resource "aws_s3_bucket" "s3-bucket" {\n bucket = var.bucket_name\n tags = {\n Name = var.tags_name\n Environment = var.tags_environment\n }\n versioning { enabled = var.versioning }\n lifecycle {\n …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services terraform terraform-provider-aws
我有以下地形配置:
resource "aws_key_pair" "default_key_pair" {
key_name = "default_key_pair"
public_key = file("../../public_keys/default_key.pub")
}
Run Code Online (Sandbox Code Playgroud)
然后,我最初运行:
terraform import aws_key_pair.default_key_pair default_key_pair
Run Code Online (Sandbox Code Playgroud)
跟进的是
terraform apply
Run Code Online (Sandbox Code Playgroud)
然后它说
# aws_key_pair.default_key_pair must be replaced
-/+ resource "aws_key_pair" "default_key_pair" {
~ arn = "arn:aws:ec2:place:id:key-pair/default_key_pair" -> (known after apply)
~ fingerprint = "safasldjfjfljasfjasodjflasjfsdljfasdjf" -> (known after apply)
~ id = "default_key_pair" -> (known after apply)
+ key_name_prefix = (known after apply)
~ key_pair_id = "key-somethin-something" -> (known after apply)
~ key_type = "ed25519" -> (known after apply)
+ public_key = …Run Code Online (Sandbox Code Playgroud) terraform ×10
amazon-s3 ×2
amazon-ec2 ×1
amazon-eks ×1
amazon-sqs ×1
grafana ×1
json ×1
kubernetes ×1