Terraform 地形子模块变更未在平面图中识别或应用

我有一个terraform回购协议,看起来像这样: 基础设施 全球的 main.tf main.tf文件引用远程存储库中的模块: module "global" { source = "git@github.com/company/repo//domain/global" } 上述模块引用同一远程回购中的另一个模块:main.tf module "global" { source = "git@github.com/company/repo//infrast

Terraform TFE中的地形工作区?

我正在演示TFE的SaaS产品,运行我的计划时出错 Error: module.vpc.var.database_subnets: key "default" does not exist in map var.vpc_CIDR in: ${cidrsubnet(var.vpc_CIDR[terraform.workspace],4,6)} Vars文件如下所示 variable "vpc_CIDR" { type = "map" default = { "dev" =

我可以选择Terraform中自动生成的资源的名称吗?

我正在使用Terraform生成一个Azure Kubernetes服务集群(以及其他东西),当我运行Terraform时,它会自动生成AKS集群使用的不同资源。我可以在AKS集群上选择一个自定义名称,但自动生成的资源几乎是随机名称 有没有办法在Terraform中自动生成的资源上选择我自己的自定义名称 示例: resource "azurerm_kubernetes_cluster" "compute" { name = "MyCluster" l

Terraform 如何在多个步骤/阶段中运行地形规划?

我有一个很好的地形计划,它完美地描述了我在谷歌云平台上的基础设施,然而,我有一个问题:因为我的存储库不是完全私有的,所以我的计划的一些步骤是加密的,必须使用 这意味着我的计划必须分为两个地形阶段: 设置GoogleCloud项目并创建一个密钥环和密钥(之后,我加密机密并将其放入variables.tf文件中) 应用整个计划 Terraform是否支持将我的计划分解为多个阶段?我应该如何实现这一点?虽然terraform使我们能够自动创建资源,但一些初步步骤需要手动完成,如帐户创建、计费设置等。类

Terraform VPN-隧道选项

我正在尝试通过terraform设置VPN隧道选项: resource "aws_vpn_connection" "example" { customer_gateway_id = "${aws_customer_gateway.example.id}" transit_gateway_id = "${aws_ec2_transit_gateway.example.id}" type = "${aws_customer_gateway.example.

我应该为.terraform文件夹设置版本吗?

我开始使用Terraform,我有一个由“Terraform init/apply”创建的.Terraform文件夹,其中包含: ./plugins/linux_amd64/lock.json ./plugins/linux_amd64/地形提供商谷歌 ./plugins/modules/modules.json terraform.tfstate 我应该对这些文件进行版本设置吗?我想说不…terraform目录是一个本地缓存,terraform会在其中保留一些文件,以便对该配置进行后续操作

terraform remote exec provisioner无法连接到ec2实例

我正在尝试使用terraform在ec2中安装nginx,并且在私钥行上用红色下划线表示“未知令牌:35:23标识文件” provisioner "remote-exec" { inline = [ "sudo apt-get update -y", "sudo apt-get install nginx -y", "sudo /etc/init.d/nginx start" ] connection { t

Terraform 在模块内的模块之间传递地形变量?

我有一个问题,我在从项目中构建模块时遇到了困难 我有以下文件夹结构: terraform/ modules/ kubespray/ modules/ compute/ ips/ network/ main.tf variables.tf roles/ kubespray/ terraform_setup/ main.tf 在kubespray/mai

Terraform 无法按地形状态获取spot实例中的可用性区域

我有 resource“aws\u spot\u instance\u request”服务器“{},它的启动很好 并且需要资源“aws\U ebs\U卷”“溢出”{}。对于EBS需要可用性区域,我尝试从aws\u spot\u instance\u request.server.availability\u zone获取该区域,但在.tfstate中,服务器的“可用性区域”为空。这导致: 错误:引用未声明的资源 如何获取spot实例的可用性区域?从外观上看,可用性区域属性不是从aws\u

Terraform 地形-覆盖地图中的单个值

我想知道是否有可能合并两张地图而不替换主地图对象 我的地图对象定义如下: variable "apps" { type = map(object({ is_enabled = bool cost_center = string })) default = {} } locals { default_apps = { "api-1" = { is_enabled = false cost_cente

Terraform,如何将传入的字符串变量附加到值?

地形v0.12.17 我有一个脚本,我想在其中执行此操作,也就是说,我希望它使用传入的jenkins\u version变量搜索AMI $ terraform plan -var "jenkins_version=2.249.3" -out out.output data "aws_ami" "jenkins_master_ami" { most_recent = true filter { name = &quo

Terraform 地形错误-未设置错误更新服务器

使用Terraform v0.14.7,我正在创建一个cname记录集,但当我输入命令Terraform apply时,我收到以下错误消息: 错误:未设置更新服务器 在Azure平台的“DNS区域”中,我已经创建了一个区域,名为:tech.com.br: provider "azurerm" { features {} } resource "dns_cname_record" "foo" { zone = "tech.

Terraform 在一个repo中保留项目源代码和脚本是否是一种不好的做法?

我们有很多包含无服务器微服务的存储库,因此为每个存储库保留另一个存储库并不容易 . ├── azure-pipelines-prod.yml ├── README.md ├── src │ ├── Whoa.API │ ├── Whoa.Core │ ├── Whoa.Data │ ├── Whoa.Services │ └── Whoa.sln └── tf ├── dev.tfvars ├── main.tf ├── resources └

Terraform 地形及;AWS代码管道-动态定义阶段上的操作

我不确定这是否可行,但我想我应该先问一下 我有一个terraform中定义的codepippeline,有一个具有多个动作的阶段 Stage正在从CodeCommit中提取代码,每个操作都定义了我希望在管道中使用的存储库 我想创建一个包含CodeCommit存储库名称列表的变量,然后为该列表中的每个存储库动态创建一个操作 使用terraform,这可能吗?我知道您可以使用count正常地实现这一点,但我认为这只是在资源级别上 代码片段如下所示: resource "aws_codepipelin

Terraform “地形资源”;随机“宠物”;它不起作用了

此代码将创建一个名为EC2实例的EC2实例: provider "aws" { region = "eu-west-1" } module ec2 { source = "./ec2_instance" name = "EC2 Instance" } 但是,如果我尝试使用random\u pet资源,实例名称将变为空字符串 provider "aws" { region = "eu-west-1" } resource "random_pet" "server" { l

使用Terraform创建服务结构集群

我正在尝试使用Terraform脚本在Azure中创建一个服务结构集群。in Terraform发布了一个“服务结构集群”(azurerm_服务结构集群)资源。该资源仅创建服务结构管理部分,即不创建vm规模集或网络资源 如何通过Terraform创建工作SF群集?Terraform azurerm\u服务\u结构\u群集资源仅提供管理。要配置节点,请使用配置SF节点的service fabric extension部署VM 有关信息,请参考官方提供商GitHub上的示例 这没有帮助吗?不。有了

在Terraform中将代码块提取为变量

我现在有一些地形,看起来像这样: resource "aws_autoscaling_group" "my_asg" { ... tag { key = "ManagedBy" value = "Terraform" propagate_at_launch = true } } 问题是这个代码块相当大,而且许多标记在多个ASG中都是通用的,所以为了尝试将其缩小到更易于管理和减少重复,我想对通用标记执

使用terraform将成员添加到子网

我正在开发一个自动化流程,该流程应接受组和服务帐户,并将它们作为成员添加到GCP中的子网中。为此,我正在使用地形资源google_compute_subnetwork_iam_成员 根据下面的文档链接,terraform应在应用仅包含新成员的配置文件时保留子网的以前成员。但当我应用配置时,它会销毁所有以前的成员并添加新成员。如果我遗漏了什么,请告诉我 地形资源名称:谷歌计算子网iam成员 文档链接: 谢谢 Sandeep我认为它指的是所有以前没有被terraform创建的成员 当您手动创建一个文

Terraform 如何订阅临时数据库';地球形态的恢复?还是根本不可能?

我正在考虑,但我不确定如何将其应用于我的情况: 我的目标: 我想订阅rds事件,以便在从快照完全恢复临时数据库的数据时调用lambda函数 详细信息: 以下是我的工作流程: 1) lambda函数start\u restore在预定时间运行。这 函数是用python编写的,并使用boto3创建临时数组 mysql数据库,名称如temp-sales-20190701。该功能将 查找sales的最新数据库快照并将其还原到 temp-sales-20190701 2) 恢复完成后,我想在服务器上执行一

有没有办法为Terraform archive provider定义多个源文件?

我正在使用将多个文件打包到一个zip文件中。当我像这样定义存档时,它工作得很好: data "archive_file" "archive" { type = "zip" output_path = "./${var.name}.zip" source_dir = "${var.source_dir}" } 但是,我不希望归档文件包含var.source\u dir中的所有文件,我只想要其中的一个子集。我注意到归档文件提供程序有一个source\u file属性,因

Terraform 什么是';创建';和';摧毁';在计划阶段?

只需运行TerraformPlan,它就给出了需要针对GCPAPI运行的配置。按照计划,它必须摧毁一些实体并重新创建它们。这些模块之间并不相互依赖。下面是示例输出 只是想知道创建(在本例中更像“覆盖”)是发生在销毁之前,还是发生在销毁之前,或者是完全随机的 ------------------------------------------------------------------------ An execution plan has been generated and is sh

Terraform 使用版本控制创建GCS存储桶

我想创建具有版本控制的GCS bucket 我创建了子模块 resource "google_storage_bucket" "cloud_storage" { project = "${var.project}" name = "${var.storage_name}" location = "${var.location}" storage_class = "${var.storage_class}" versioning = "${var.versi

Terraform terragrunt不接受vars文件

我试图使用2-repo IaC,所谓的后端是terragrunt模块,前端(或live)是用变量填充这些模块的实例化 下图描述了这两个回购协议的结构(terragrunt为后端,terraform live如名称所示为live one) 在myterragrunt/aws vpc/variables.tf中,有以下声明: variable "remote_state_bucket" { description = "The bucket containing the terraform r

terraform aws提供商每次尝试;“1添加,1更改,1销毁”;

我正在尝试在aws上部署简单场景: 新vpc,一个ec2实例位于该vpc中,一个eip指向该实例,aws_互联网_网关,aws_路由_表 部署工作很好,但是每次(在.tf文件中没有更改)当我计划/应用terraform时,都会显示: Resource actions are indicated with the following symbols: ~ update in-place -/+ destroy and then create replacement Terraform wil

Terraform 如何在销毁多个实例时运行remote exec provisioner

我正在使用terraform在OpenStack上设置docker swarm集群,并在新创建的VM上使用Ansible进行配置。我想先在虚拟机上执行docker swarm leave,当我减少实例(VM)数量并通过terraform apply应用更改时,该虚拟机将被删除。当我一个接一个地销毁实例时,它会工作,但当同时销毁两个实例时,它会给出一个错误 错误:循环:module.swarm\u cluster.openstack\u compute\u instance\u v2.swarm

Terraform-为什么这不会导致循环依赖?

Terraform registry AWS VPC示例具有下面的代码,在我看来,这是一个循环依赖项 data "aws_security_group" "default" { name = "default" vpc_id = module.vpc.vpc_id } module "vpc" { source = "../../" name = "complete-example" ... # VPC endpoint for SSM enable_ssm_en

从terraform workspace输出所有资源或特定类型的资源

0.12稍微好一点 我可以这样做: value = aws_security_group.abc 而不仅仅是这个 value = aws_security_group.abc.id 但是,对于具有许多导入的工作区来说,这仍然很乏味。我想将所有状态输出为一个大地图,我可以在其他工作区中导入 我希望至少能够输出给定类型的所有资源,例如: output "sgs" { value = aws_security_group.* } 然后sgs是工作区中所有SG资源的映射最接近于此的方法

Terraform 如何有条件地向动态标记添加属性?

在config.meta文件中,我存储了对google bigquery数据集的访问。访问对象是一个字典列表,其中每个字典都包含作为第一个元素和第二个元素元素的角色(例如特殊组或通过电子邮件对组),这些元素在列表中变化 我的目标是动态地应用访问。当访问列表上的每个字典都有相同的第二个元素时(例如,仅特殊组),这种方法非常简单但如何动态应用它们取决于第二个元素名称/值? # config.meta file { "accesses": [ { "ro

Terraform失去了GKE集群资源的踪迹

我有一些Terraform文件,从根目录的main.tf开始,有很多模块作为子目录,包括3个GKE集群。当我试图添加一个新集群(这是一个基于与其他集群相同的源文件的新模块)时,我把它搞砸了,但不知道如何添加。(虽然我是Terraform的新手,但我对CFN和CDK有相当多的经验,并且知道如何工作。所以我很确定我没有做任何愚蠢的事情)。 事情就是这样(或多或少): 我从地形图开始,以确保它处于清洁状态。Terraform说“没有变化。基础设施是最新的。” 我复制了一个现有的GKE集群模块,并给它的

Terraform 配置虚拟机失败。Linux/Windows资源块合并

这就是我得到的错误: Error: A resource with the ID "/subscriptions/subid/resourceGroups/tf-nonprod/providers/Microsoft.Compute/virtualMachines/windows-web1" already exists - to be managed via Terraform this resource needs to be imported into the Stat

Terraform 地形中的嵌套环

我需要有嵌套的循环逻辑。F.ex 我有一个本地的: locals { build_args = { api: { RAILS_ENV: "production" } client: { NODE_ENV: "production" } } } 现在我想用terraform连接到CircleCI,并在适当的CircleCI项目(api和客户端)中设置这些环境。关于circleci项目(项目名称

将terraform hcl变量创建为地图

我正在使用tfeprovider开发terraform workspace automation,并希望使用下面的数据结构中的custom_标记创建terraform HCL变量作为映射 workspaces = { "PROD" = { "custom_tags" = { "Application" = "demo" "EnvironmentType" = &

Terraform 如何处理eks假设策略的列表

作为升级的一部分,我有2个eks群集。我想处理假设策略,使其能够访问两个eks集群。这两个群集都位于同一AWS帐户中 我希望我的策略看起来像下面的策略。这样,我们不会更新任何角色,而只会假设策略来处理这两个集群 本地人.tf eks_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": &q

terraform创建azure服务运行状况警报

我刚刚发现,如果我们用terraform创建azure服务健康警报,代码如下 resource "azurerm_monitor_activity_log_alert" "servicehealth" { name = "${var.client_initial}-MCS Maintain Service Health" description = "${var.clien

Terraform AWS EKS从头开始-地形还是eksctl?

使用terraform或eksctl生成新的AWKS EKS集群有什么好处吗 两者之间是否存在一些长期维护优势?虽然我还没有在Terraform上尝试过这一点,但我可以肯定地说eksctl方式是不推荐的。如果您对以代码形式管理基础设施感兴趣,至少不会。 使用eksctl,对现有集群的大多数更改都需要使用特定的eksctl命令。仅仅更改(声明性的)cluster.yaml(或您命名的任何名称)不会应用任何相关内容。是否要缩放节点组?好的,请使用eksctl scale nodegroup,因为更改

Terraform terrform config中key属性的用途是什么

在此声明中,键字段的用途是什么?我们能给我们想要的任何价值吗 terraform { backend "azurerm" { resource_group_name = "StorageAccount-ResourceGroup" storage_account_name = "abcd1234" container_name = "tfstate" key

Terraform 需要一种方法来获取领事的所有私人IP';s重试_join,但不在配置文件中对其进行硬编码

我正在尝试使用terraform在Hetzner云上通过私有网络设置Consor服务器 由于Hetzner还不支持自动加入,是否可以使用go sockaddr的GetPrivateIPs在配置文件中获取所有可用于重试加入的私有IP?go sockaddr说GetPrivateIPs将返回一个包含所有IP的空格分隔字符串。如何将此函数用于配置 据我所知,retry\u join需要这样一个文本数组:[“10.0.0.6”,“10.0.0.7”] 以下是etc/concur.d/server.hcl

terraform有条件地创建日志配置和后续容器定义

我有如下的地形配置,我正在使用它在各种prod/uat/dev环境中构建ECS集群 在我们的下文中,我们根据目标环境配置容器定义的logConfiguration 如果infra由开发者和env:dev启动,我们将logConfiguration配置为使用awslogs作为日志驱动程序及其后续日志驱动程序选项(即awslogs区域、awslogs组、awslogs流前缀) 如果我们的连续部署管道使用env:prod或uat启动infra,我们将logConfiguration配置为使用awsfi

Terraform 0.15.1多供应商问题-论点;地区“;是必需的,但未设置

下面是我的项目文件结构: ├── main.tf ├── tunnel │   ├── main.tf │   └── variables.tf └── variables.tf 我正在尝试使用Terraform 0.15.1中的多个提供程序,如下所述-> 在遵循这个例子之后,我无法让它工作。我现在简化了代码,只使用一个提供者别名(尽可能简单)。我得到的错误是: ╷ │ Error: Missing required argument │ │ The argument "regio

如何使用terragrunt作为预处理器并生成terraform文件

有没有可能将terragrunt用作terraform稍后使用的预处理器,有没有人可以分享一下这方面的想法。谢谢 可能会帮助别人;通过使用欺骗的terraform调用terragrunt解决了这个问题 $cat tfspoof #! /bin/bash # # Filename : tfspoof # Date : 21 May 2021 # Author : Balaji Venkataraman (xbalaji) # Description : terragr

Terraform-CosmosDB的变量名

我正在使用Terraform在Azure中创建资源,并将文件拆分为main.tf、variables.tf和Terraform.tfvars 为了有一个标准的命名约定,我在命名资源时遵循下面的过程 前缀环境资源名 例如,在main.tf中,我创建它如下: resource "azurerm_resource_group" "rg" { name = "${var.prefix}-${var.environment}-${var.resou

需要在terraform中显示敏感数据输出变量

以下代码段是我创建Azure Signal服务的terraform配置: output "signalrserviceconnstring" { value = azurerm_signalr_service.mysignalrservice.primary_connection_string description = "signalR service's primary connection string" sensitive = true

指向当前文件名的Terraform变量

Terraform配置文件中是否存在指向当前文件名的特殊变量? 我想将它用于各种资源中的描述字段,这样在系统中看到这些资源的人就会知道它们的主定义在哪里 e、 g 在myinfra.tf中 resource "aws_iam_policy" "my_policy" { name = "something-important" description = "Managed by Terraform at $

如何配置自动修复&;使用禁用stackdriver的Terraform自动缩放Google Cloud Kubernetes群集

我正在读一篇关于为个人项目建立一个负担得起的Kubernetes集群的博客,并设置了我的集群 问题是,随着时间的推移,我往往会忘记很多手动配置,所以我决定使用Terraform将其存储在声明性代码中 我已成功构建并应用了以下配置: provider "google" { credentials = "${file("secret-account.json")}" project = "worklark-218609" zone = "us-central1-a" }

如何在terraform中用本地后端覆盖远程后端?

我一直在看terraform文档和课程中的一个UDE来寻找这个问题的答案,但找不到答案。我有一个jenkins管道正在用terraform构建AWS基础设施。这是使用通过配置的远程后端 terraform { backend "s3" {} } 街区。我想在本地开发中覆盖它,以便使用terraforminit生成本地状态文件。我试过运行terraforminit-backend=false,但我意识到这不是我想要的,因为它也不会创建本地后端。我已经看到terraforminit-backe

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 62 页