terraform相关内容
我想分享一个将在不同项目中使用的 terraform 脚本.我知道如何创建和共享模块,但是这个设置有一个很大的烦恼:当我在脚本中引用一个模块并执行 terraform apply 时,如果模块资源不存在,它将被创建,但如果我执行 terraform destroy 这个资源也会被销毁. 如果我有两个项目依赖于同一个模块,并且在其中一个项目中我调用 terraform destroy 它可能会
..
我使用 Terraform 创建了一个 AWS 步进函数.目前,step 函数目前只有 1 个 lambda 函数: 资源“aws_iam_role_policy"“sfn_policy"{政策 = jsonencode({“版本":“2012-10-17",“声明":[{“效果":“允许",“动作":“sts:AssumeRole",“资源":“*"},{“Sid":“VisualEditor
..
我有一个根 Terraform 模块,它声明了一个 VPC 模块和其他模块,例如要在 VPC 中启动的 EC2 实例. 在 EC2 模块中,我使用 aws_vpc 类型读取 VPC: 数据“aws_vpc"“vpc"{筛选 {名称 = “标签:名称"值 = [var.name_tag]}} 现在,如果我独立声明模块,这可以正常工作. 但是当声明一个单独声明这些其他模块的根模块时,我
..
改造任何由任何 beta 参数定义的 Google Cloud Platform (GCP) 资源都需要 google-beta 提供程序.应该使用 google-beta 提供程序而不是 或 与 google 提供程序一起使用吗? 换句话说,假设某个 Google Kubernetes Engine (GKE) 集群 $GKE_CLUSTER_NAME 存在于 GCP 项目 $GCP_PR
..
我正在尝试创建用户并为他设置策略.创建用户,没问题.问题是当我尝试设置条件时. 通过 gcloud 可以正常工作,但使用 terraform 则不行.当我删除条件行时,可以工作,但我需要这个条件. 按照 gcloud 命令: 云项目 add-iam-policy-binding projeto-xyz --member='serviceAccount:client-bot@proje
..
学习 Terraform,我正在尝试启动一个 EC2 实例,重用现有的安全组(标记为 my-tib-sg). 我收到以下错误,但不确定我做错了什么: 错误:引用未声明的资源在 module_three.tf 第 62 行,在资源“aws_instance"中“nginx":62:vpc_security_group_ids = [aws_security_groups.my-tib-sg.
..
我尝试使用 GPU 创建 google_container_node_pool.我尝试了机器类型 nvidia-tesla-p4 和 a2-highgpu-1g,每个都返回不同的错误: projects/my-project-id/zones/us-central1-a/machineTypes/nvidia-tesla-p4 或 错误:创建 NodePool 时出错:googl
..
我通过子模块调用根模块如下: 子模块 - main.tf 模块“create_network_lb"{源 = “../../modules/lb_test"for_each = var.target_groups名称 = each.keytg_name = each.value.tg_nametg_backend_port = each.value.tg_backend_porttg_b
..
为类型映射创建类型约束的正确方法是什么? 这似乎无效. 变量“vpc_subnets";{类型 = 地图(key = {name = string, cidr_block = string, map_public_ip_on_launch = bool, availability_zone = string})} 这是地图的样子.. vpc_subnets = {“public_su
..
我正在尝试使用 Terraform 支持的 cidrsubnet 函数创建两个子网.我拥有的 VPC cidr 是“10.32.0.0/16".我正在尝试拥有子网 10.32.1.0/27 和 10.32.3.0/27.为了实现这一点,我在获取 cidrsubnet 功能时遇到了一些麻烦.到目前为止我所拥有的是: cidrsubnet(10.32.0.0/16, 11, netnum???)
..
我正在 Azure Pipeline 中运行 Terraform(我有这样做的经验),并且出于某种原因,初始化步骤正在尝试为 azcli 安装提供程序,但我认为该提供程序不存在.当我在本地计算机上运行 Terraform 时,不会发生这种情况. 我的提供者文件是: terraform {required_version = ">=0.13";后端“azurerm"{容器名称 = “tfst
..
首先感谢这篇文章 在 variavles.tf 中为 type = map(object()) 添加一个默认字段,这回答了我在获取默认值以使用 type map(object()) 时遇到的第一部分难题.我要开始工作的最后一部分是如何验证输入值. terraform {实验 = [module_variable_optional_attrs]}变量“dns_server"{description
..
又是 terraform 的动态值映射问题. 一开始我有什么,一个局部变量: 本地人{users_with_appId = [对于 var.users 中的用户:用户 if user.app_id != null]} 用户变量: 用户 = [{用户名 = "john.doe1";角色 = [“ORG_ADMIN"]profile_attributes =
..
我想使用 API 从第三方服务器获取密码,然后将其分配给参数存储: 最初我认为我可以使用 $TF_VAR_password 作为桥梁来实现这一点: 第 1 步:创建一个 .env 文件: cat test.env导出 TF_VAR_password= 第二步:使用 Terraform null_resource 执行 test.
..
资源“azurerm_windows_virtual_machine"“虚拟机"{计数 = var.vm_countname = "${local.vm_name}${count.index +1}"资源“azurerm_virtual_machine_data_disk_attachment"“datadisk01"{计数 = var.disk_count**virtual_machine_id
..
我正在每个区域创建一堆 Route 53 解析器规则,这与 for_each 循环配合得很好: 资源“aws_route53_resolver_rule"“解析器规则"{for_each = var.resolver-rulesdomain_name = each.value.domain-namename = format("core-%s", each.value.domain-label)
..
我已将 ECS 与容量提供程序一起用于部署我的应用程序,并为容量提供程序使用的 ASG 启用了缩减保护.在 Terraform destroy 期间,我看到 terraform 试图破坏 ECS 集群,尝试 10 分钟后失败并输出,错误:删除 ECS 集群时出错:ClusterContainsContainerInstancesException:当容器实例处于活动或耗尽状态时,无法删除集群.
..
我想我应该能够做这样的事情.但是端口、协议和 cidrs 的地图是错误的......我如何制作列表地图并在地图上进行交互. 变量“master-sg-ingress-ports"{//depends_on [aws_security_group.master-lb-sg, aws_security_group.worker-sg]description = "特定安全组的端口号列表";类型 =
..
我有一个 tfvars.json 文件,我想用它来传递我的服务器配置. {“测试":“测试",“机器":{“master01":{“node_type":“master",“图像":“ubuntu-20.04",“server_type":“cx21",“位置":“nbg1";},“master02":{“node_type":“master",“图像":“ubuntu-20.04",“serv
..
我希望能够使用 TF Vars 中定义的以下格式创建多个 R53 记录: custom_zone_records = {“demo.a.com"= [{“*.b";= {类型:“CNAME",记录:[“d.com"]}},{“*.c";= {类型:“CNAME",记录:[“d.com"]}}]} 以记录为例,应该创建R53记录: 名称:*.b.demo.a.com类型:CNAME记录:[“d
..