Terraform 地形应用前是否需要摧毁地形?

在应用地形之前是否需要地形销毁?如果没有,那么在更新现有基础设施时,您遵循的工作流程是什么?您如何决定是否需要销毁?在我看来,这是非常不标准的。Terraformdestroy仅在您希望完全擦除基础设施的情况下使用。terraform最大的特点之一是,它可以对您所需的基础设施和现有的基础设施进行智能增量,并且只进行所需的更改。通过执行刷新、计划和应用可以确保地形: 刷新-对您当前的基础架构有最新的了解。如果在terraform脚本之外手动更改了任何内容,这一点非常重要 计划-准备一份列表,供您查

Terraform 地形aws\u iam\u角色\u政策\u附件

我有一些与不同政策一起创建的角色,我不想将它们联系在一起: #Role that gets created in in identity account that okta uses to map AD groups to Roles in AWS resource "aws_iam_role" "create_identity_role" { count = "${length(var.team_name)}" name = "${lookup(var.identity_rol

Terraform 应如何组织地形增量变化?

你能帮我理解吗 例如,我对基础结构进行了增量更改,如[A]->[B]->[C],其中[A]可以分别是名为I的一台服务器,[B]可以分别是名为j的第二台服务器,[C]可以分别是名为k的第三台服务器。总共应该有3台服务器。每个状态都可以被描述为 [a]=x,x+[b]=y,y+[c]=z</代码>其中 x,y,z >处于中间状态。 我的问题是 如何组织Terraform中多个模块的增量基础结构更改,而不影响以前的模块 有可能回滚链中间的变化吗? [B] < /代码>并获得 x>代码>状态,或者我

Terraform-枚举实例

这里的地形问题:我试图在Azure上部署一组实例,并在部署时枚举它们 resource "azurerm_virtual_machine" "kafka" { name = "kafka${count.index}" #name = "${var.kafka_cluster_prefix}-kafka-${count.index}" location = "${azurer

使用Terraform的Google云生成器

我不熟悉Terraform,有没有直接的方法来管理和创建使用Terraform的Google Cloud Composer环境 我查看了GCP支持的组件列表,似乎到目前为止还没有Google Cloud Composer。作为一项工作,我正在考虑创建一个shell脚本,其中包含必需的gcloud composer cli命令,并使用Terraform运行它,这是一种正确的方法吗?请提出备选方案。这是一种选择。可以使用和来运行命令: resource "null_resource" "compos

在terraform中循环使用外部数据源

我试图在terraform中提供n个VM(假设n=5) 问题是,对于分配给相应VM的每个IP,我首先需要调用一个外部工具(an.exe)。此工具有两个参数:要获取的IP的正则表达式模式和机器名。然后,该工具根据提供的正则表达式,从充当IPAM(IP地址管理解决方案)的Sharepoint Excel文件中读取要使用的单个空闲IP地址。该工具还更新Excel文件,以便在返回的IP旁边标记提供的机器名 对于单个VM来说,这一切都很好,一切都按预期完成,利用了一个外部数据源和一个资源。机器名从输入文件

Terraform 从v11.13开始,将多个数据模板附加到单个资源

我正在使用AWS提供商运行Terraform v11.13。是否可以将多个数据模板文件附加到单个资源 例如,您有一个aws_iam_策略资源,但它可以从不同的数据模板文件创建多个iam策略 当它只是一个带有计数索引的单个数据模板文件时,它就可以工作。当文件是静态文件时,它也可以工作,例如在非模板文件中 下面是代码示例 variable "policy_list"{ type = "list" default = ["s3,"emr","lambda"] } resource "

Terraform-基于资源计数创建列表查询未返回任何结果

我试图动态创建一个实例ID列表,将其分配给负载平衡器。基于此,我发现我可以使用数据“aws\u实例”来实现。不幸的是,我遇到了以下错误: Error: Your query returned no results. Please change your search criteria and try again. 这就是我创建EC2资源的方式 resource "aws_instance" "one" { instance_type = "${var.lc_instance_type}"

如何在terraform local exec中运行powershell脚本

我正试图在terraform模板中的本地exec provisioner的帮助下更改webapp的堆栈 # Create azure Webapp 1 resource "azurerm_app_service" "webapp1" { name = var.webapp1 location = azurerm_resource_group.dev.location resource_group_name = azurerm_res

Terraform 为主题获取创建事件网格订阅时';ID包含的段数超过要求';

已创建用于部署事件网格订阅(订阅现有主题,使用现有存储帐户和资源组)的代码 订阅将消息推送到存储队列。情况很简单。首次正确执行地形图。当我运行“应用”时,出现以下错误: azurerm_storage_queue.queue: Creating... azurerm_storage_queue.queue: Creation complete after 1s [id=https://sa1dev.queue.core.windows.net/sq-dev] azurerm_eventgrid_

Terraform 在动态块内形成多个地形块?

我正在尝试为aws_wafv2_web_acl资源创建一个模块,但我不知道如何在动态块中添加多个“排除的规则”块。这可能吗?以下是资源: resource "aws_wafv2_web_acl" "web-acl" { name = var.name description = "" scope = "REGIONAL" default_action { all

Terraform 地形重命名状态文件

当.tfstate保存资源时,如何重命名它?示例如下所示 terraform { backend "s3" { bucket = "px-terraform-state" region = "ap-southeast-1" key = "network/transaction-logs.tfstate" encrypt

如何让Terraform在Docker容器之前启动Docker网络

Terraform Apply的第一次运行给出了“错误:无法启动容器:来自守护进程的错误响应:未找到网络疫苗网络” 第二步:一切正常 我认为Terraform自己管理依赖关系——显然它在这里失败了。我的档案有错吗?或者我可以自己做决定吗 .tf文件: # Setting up docker network resource "docker_network" "private_network" { name = "vaccine-n

Terraform 删除地形工作区中的最后一条记录地形状态

我正在使用terraform云工作区。 由于错误,我将错误的地形状态上载到我的工作区。现在我的地形图正在使用它,但我不想使用它,因为那不是我想要的状态 让我用这幅图来解释:我想使用10个月前的状态,而不是我最近得到的新状态: 我想回到我的旧状态,因为在新状态中没有一些资源,然后它们在我的地形计划中被重新创建。 我正试图通过以下方式执行terraform import命令来导入每个单独的资源: terraform import azurerm_app_service_plan.fem-plan

Terraform`local exec`设置本地别名

我正在尝试设置一个别名,以便在中创建AWS实例时快速ssh到新创建的主机中。我通过跑步来做到这一点 # Handy alias to quickly ssh into newly created host provisioner "local-exec" { command = "alias sshopenldap='ssh -i ${var.key_path} ubuntu@${aws_instance.ldap_instance.public_dns}'" } 当我看到此执行的输出

Terraform:如何生成键/值对

我需要从IP地址列表生成键/值对的映射 输入示例: ips = [ "1.2.3.4", "2.3.4.5"] 期望输出: pairs = [ {ip_address="1.2.3.4"}, {ip_address="2.3.4.5"} ] 我的TF输入数据位于openstack\u networking\u port\u v2.vip.*.all\u fixed\u ips.0(任意数量的ip地址),我需要为openstack\u networking\u port\u v2生成允许的\u

将字符串附加到Terraform中的地图类型

我在Terraform(v0.11.7)中有下一个表达式: 我需要将字符串附加到正确的表达式中,例如: my_expression = "${zipmap(random_shuffle.x.result, "*" + random_shuffle.x.result)}" 我有什么解决办法吗? 提前感谢实现此目标的一种方法如下: my_expression = "${zipmap(random_shuffle.x.result,formatlist("*%s",random_shuffle.x.

Terraform “存储地形”;数据协商键…“;作为文件?

在base.tf文件中,我有: data "consul_keys" "project_emails"{ datacenter = "mine1" key { name = "notification_list" path = "project/notification_email_list" } } 我想在python代码中使用这些concur变量。 我的想法是将其输出到一个文件中。(所以不仅仅是另一个terraform文件,它使用版本11或12的“${proje

如何在Terraform中引用由for_创建的资源

我已经创建了多个子网[私有/公共],通过在Terraform中使用for_,如下所示 resource "aws_subnet" "public" { for_each = toset(data.aws_availability_zones.azs.names) vpc_id = aws_vpc.vpc.id cidr_block = cidrsubnet(var.private_ranges,1 ,index(data.aws_availability_zones.azs.name

Terraform 具有嵌套列表的地形动态块

我需要使用Terraform在Pagerduty中创建一个升级策略。我想动态创建规则块,然后在这些块中使用规则中的值创建目标块。我不知道如何在目标块内进行第二次调用以使其动态。 我有一个列表中的团队列表 locals { teams = [ [data.pagerduty_schedule.ce_ooh_schedule.id, data.pagerduty_schedule.pi_office_hours_schedule.id], [data.pagerduty_sche

Terraform-12(AWS):根据提供的输入变量使用for/for_创建子网

我想创建一个模块,该模块可以接受环境(开发、测试、产品)的输入,并使用适当的标记创建子网的数量(“每个环境的应用”和“数据库”子网)。e、 g Name=dev应用程序 当输入变量更新时,模块应能灵活地添加/删除子网。 我的模板如下所示 variable "environments" { type = map(object({ app_subnet_cidr = string db_subnet_cidr = string })) default = { de

使用Terraform将Leaf接口连接到Cisco ACI上的EPG

我正在尝试使用Terraform在Cisco ACI上创建一个EPG。已创建EPG,但未连接Leaf的接口。 连接Leaf接口的terraform synthax是: resource "aci_application_epg" "VLAN-616-EPG" { ... relation_fv_rs_path_att = ["topology/pod-1/paths-103/pathep-[eth1/1]"] ... } 当我通过ACI web界面或REST AP

Terraform 在aws_lb_target_group_附件期间,对每个参数无效

我有两个目标组-一个用于端口80,另一个用于端口443。还有两个实例作为NLB的成员,我需要将这两个目标组附加到每个实例。这就是我如何配置的,连接: // Creates the target-group resource "aws_lb_target_group" "nlb_target_groups" { for_each = { for lx in var.nlb_listeners : "${lx.protocol}:${lx.target_port}" => lx

从Azure文件共享获取装载脚本-Terraform

对于我们在Azure存储帐户中创建的每个新fileshare,我们都会得到一个connect选项 , 如果我们单击connect我们将获得以下选项 是否可以通过terraform,获取这段代码来装载此文件共享?我到处都找不到。在此方面的任何帮助都将不胜感激当然,这是可能的。您只需要将代码复制到脚本中,然后使用VM扩展在VM内执行。一点也不复杂。这是一个例子 但是有一件事需要注意,VM扩展只支持非交互式脚本。例如,Linux的connect代码,命令sudo是一个交互式命令,因此不建议在VM扩展

如何使用Packer和Terraform管理图像版本?

我目前正在使用一个Kubernetes集群,它运行在由Ansible配置的裸机节点上。有计划转移到云端,我正在阅读关于Terraform和Packer的文章,为这篇文章做准备。撇开数据迁移不谈,我们似乎有一条非常直接的迁移路径: 使用我们现有的Ansible脚本使用Packer构建图像 使用Terraform将构建的映像部署到云 使用当前工具部署Kubernetes资源 太好了。我们现在有了不变的基础设施,使用了最先进的工具 我正在努力寻找的是如何对使用Packer构建的图像进行版本控制。接下来

Access Terraform云环境变量

我试图弄清楚Terraform Cloud,只是想知道如何在我的文件中访问我在工作区中设置的环境变量 // main.tf // Configure the Google Cloud provider provider "google" { credentials = "GOOGLE_CREDENTIALS" project = "my-project" region = "australia-

如何在将keyvault导入terraform后添加keyvault访问策略

我的地形设计依赖于一个预设置的密钥库,其中包含应用程序服务使用的秘密。我已将此密钥库导入远程状态。我看它是进口的。现在,当我运行terraform plan时,它的行为就像它不知道导入的资源一样 这就是我的地形的样子 provider "azurerm" { version="=2.20.0" skip_provider_registration="true" features{} } terraform

我可以在环境变量而不是.terraformrc文件中定义terraform云凭据吗?

我知道我需要在.terraformrc文件中定义terraform云凭据,如下所述: 有没有办法不使用.terraformrc文件并在环境变量中设置凭据和令牌 附言: 只是一个附带的问题,我们有Terraform Enterprise或Cloud的StackOverflow标签吗?答案是肯定和否定的 如果问题是使用环境变量验证TFE提供程序,那么答案是肯定的。该更改是为了启用TFE_令牌和TFE_主机名来验证TFE提供程序,作为Terraform CLI配置文件的替代方案。然后,您可以与该提

Terraform 如何查看远程状态地形版本

项目使用远程S3地形状态。我想添加一个.terraform版本文件,以便tfenv可以自动切换到它。但首先我想验证当前存储在远程状态的版本。我认为这是一种方法: terraform state pull | grep terraform_version 但正如所指出的,它不提供远程版本,只提供本地版本。是否有检索远程terraform版本的命令?您不应该使用状态拉取来获取远程版本。当命令在输出前将状态转换为本地版本时,它将为您提供本地版本 你可以查一下 注意:此命令不能用于检查的地形版本 远程

将所有DigitalOcean水滴实例添加到Terraform中的项目中

我正在尝试循环DigitalOcean Droplet中的所有实例,其中有未知数量的实例要添加到DigitalOcean项目中 类似于下面的内容,但不知道如何 resource "digitalocean_droplet" "web" { count = var.droplet_count name = "web-${var.name}-${var.region}-${count.index +1}" size = &

将多个值传递给Terraform中的变量

我有一个关于在Terraform中向变量传递多个值的问题。我在任何地方都找不到答案,我也不确定这是否可能。在我们的环境中,当我们创建AWS资源(如VPC)并向其添加标记名(如项目环境VPC,如cvs生产VPC)时。当我尝试使用Terraform创建资源时,我将如何做同样的事情?我尝试了以下方法,但无效: resource "aws_vpc" "main" { cidr_block = var.aws_cidr instance_

Terraform 地形:忽略对特定环境变量的更改

我使用terraform创建了一个AWS Lambda函数。代码更改是从我们的CI服务器自动部署的,提交sha作为环境变量传递(GIT\u commit\u HASH)-因此这会在Terraform范围之外更改Lambda函数(因为人们在询问…) 到目前为止,这个效果很好。但是现在我想更新函数的节点版本,terraform尝试将env var重置为初始值“unknown” 我试图使用ignore_changes块,但无法让terraform忽略其他地方所做的更改 resource "a

使用terraform和count部署gcp实例(带有连接的\u磁盘)

环境: 地形v0.10.7 谷歌云平台 用于创建后端、变量等的各种.tf文件 问题: 我可以创建多个vm实例,也可以创建多个附加磁盘(每个实例上的boot_disk工作正常),但我希望能够相应地将这些附加磁盘附加到每个vm,而不必为每个vm单独添加磁盘(如果有意义的话!) 到目前为止,我拥有的代码是(对于构建多个计算实例和多个附加磁盘,它可以正常工作):注意(我已经注释掉了所附的出错的\u磁盘) 如果我单独使用.tf,连接的磁盘工作没有问题 我希望的最终状态是,能够使用count构建多个vm

如何在terraform中加密密码或敏感数据?

我想为aws中的its创建rds实例和整个必需的基础设施。我无法理解terraform的安全部分。我想至少在.tfstate中加密敏感数据。e、 g:rds实例的密码/用户名等。存储.tfstate敏感数据的最佳方式是什么?如果不支持,请建议其他方法?谢谢。使用AWS提供商作为示例 建议将.tfstate文件保存到s3存储桶中,并对其设置策略,使其仅指定有权访问此存储桶和相关kms密钥的角色 terraform { required_version = "~> 0.10" bac

如何通过Terraform执行操作系统重新加载

我们目前使用terraform提供和拆除Softlayer中的基础设施。但是,我们希望每月重新使用硬件进行重新设置,而不是完全拆卸/重新设置。这是否可能使用Terraform?Softlayer或IBM terraform云提供商是否支持操作系统重新加载 谢谢大家! 参考资料:terraform似乎还不支持操作系统重新加载,terraform GitHub问题中已经发布了一个问题。您可以在以下链接中看到它: 您可以查看下面的链接,因为它使用terraform和rest api调用,可能对您的请

Terraform 在terrform中配置远程状态似乎重复?

我正在terraform中配置远程状态,如: provider "aws" { region = "ap-southeast-1" } terraform { backend "s3" { bucket = "xxx-artifacts" key = "terraform_state.tfstate" region = "ap-southeast-1" } } data "terraform_remote_state" "s3_state" { bac

Terraform 整合地形模块

我目前有3个模块,它们一起部署azure订阅中的所有虚拟网络。我想将其整合为一个模块,维护已部署资源的状态 关于实现这一目标的最佳方法有什么建议吗 Stu除了合并代码(我想您知道),您只需将所有资源移动到新路径。用于将下面的资源移动,例如module.foo.aws\u实例。此移动到module.bar.aws\u实例。此: terraform state mv module.foo.aws_instance.this module.bar.aws_instance.this 之后,确保地形平

无法通过terraform在VM上创建和连接公共ip

当我试图创建一个公共ip时,我遇到了以下错误 2019-05-27T03:07:44.5185437Z * azurerm_network_interface.tf-ni-erx-sqlcl1[1]: Resource 'azurerm_public_ip.tf-pip-erx-sqlcl1' not found for variable 'azurerm_public_ip.tf-pip-erx-sqlcl1.id' 2019-05-27T03:07:44.5186152Z * azurerm

Terraform 如何从地形状态文件自动加载变量?

我试图在bash脚本中使用terraform destroy,以便能够自动从当前状态文件中销毁资源。但我不想在销毁时再次询问用户变量,我希望它自动从当前状态文件中获取变量并销毁它。如何实现这一点?假设您实际上并不关心状态值,因为您只是在销毁存在的内容,并且没有一个变量像通常情况那样依赖于销毁内容,那么您实际上不需要读取状态,只需为这些必需的变量设置一些虚拟值即可 您可以为每个未设置的变量设置虚拟值,这些变量通常会在命令行上提示输入: 用于$(grep-R-I'variable.*{}path/t

无法从azure repo(私有repo)下载terraform模块

我的terraform模块回购位置如下: https://teamabc.visualstudio.com/dummyproject/_git/terraform-modules?path=%2Fcompute&version=GBmaster source = "git::https://teamabc:lfithww4xpp4eksvoimgzkpi3ugu6xvrkf26mfq3jth3642jgyoa@visualstudio.com/dummyp

Terraform无法应用。。。操作人员

(我使用地形0.12.20) 我的代码中有以下代码片段: locals { x = merge(values({ for location in local.locations: location => { for apsvc_name in var.apsvc_names: "${location}-${apsvc_name}" => { location = location

无法使用terraformer导入AWS基础架构配置

我正在尝试使用google的导入现有AWS infra配置,但由于AWS提供商身份验证问题,我没有成功。我的AWS凭证已启用MFA,因此我必须使用会话令牌。我找不到允许terraformer使用aws会话令牌参数的选项 以下是terraformer程序的调试日志。有人能帮我做这个吗。下面生成的是空tf文件和状态 Master $ terraformer import aws --resources=vpc --regions=eu-central-1 -c -v 2020/06/02 23:1

Terraform 地形从地图列表中输出地图值

我想从Terraform输出的地图列表中获取一个特定的地图元素 例如,如何在properties.json中访问每个映射项的account 并有条件地打印列表作为类型的输出 我尝试了循环和splat表达式,如下所示,但它没有返回准确的值 下面的道具似乎也是一个列表 output "resources_by_name" { description = "Resource name of all machine type resources from

Terraform 在gcp监控过滤器中使用regex

我正在尝试监视一个实例组,并使用一个基于正则表达式的过滤器。查询如下所示 fetch instance_group | metric 'compute.googleapis.com/instance_group/size' | filter (resource.instance_group_name =~ 'nat-ecmp-[1|2]') | group_by 1m, [value_size_mean: mean(value.size)] | every 1m 现在我正试图在地形上做同样的事

Terraform系统找不到指定的路径

为了解决系统找不到指定路径的问题,必须进行哪些特定配置或语法更改。terraform试图从本地镜像加载提供程序时抛出的错误? 问题 terraform提供程序的本地文件系统镜像在自动化程序中重复使用 控制台打印出系统找不到指定的路径。在第三个模块第三次使用同一提供程序期间,第三个模块尝试在2分钟内下载该模块 在引发此错误之前的几分钟内,从同一本地文件系统镜像请求同一提供程序的前两次成功 当调用程序在每次请求前360秒休眠以避免可能的锁定原因时,问题仍然存在。6分钟的延迟并不能防止出现问题

Terraform 地形应用后头盔列表不显示

我正在使用terraform helm provider安装helm软件包 我当前的main.tf文件 provider "helm" { kubernetes { config_path = pathexpand(var.kube_config) } } provider "kubernetes" { config_path = pathexpand(var.kube_config) } data "te

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