问题标签 [terraform-provider-openstack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
terraform - 在 openstack 上使用 terraform 旋转不同图像的多个实例
我一直在尝试使用 terraform 启动不同图像的多个实例,但到目前为止还没有运气。我可以使用count
. 在使用 旋转不同的图像时for_each
,我无法获得正确的配置。
我有以下变量 .tf 配置文件。
我看到以下错误消息::
错误:不支持的属性
在 tf-backend-fra/main.tf 第 49 行,在资源“openstack_compute_floatingip_associate_v2”“fip”中:49:instance_id = openstack_compute_instance_v2.instance.*.id[count.index]
此对象没有名为“id”的属性。
我不知道如何完成它for_each
。Terraform 版本是 0.12.17。非常感谢您的帮助。
谢谢,哈沙
terraform - 迭代 terraforms 0.12.23 中的 json 对象列表
我在 json 文件中有两个对象数组,我通过 cli 命令将它们作为 tfvar 文件传递。一个是风味列表,另一个是图像列表。我想做的是为每种风味和图像创建一个虚拟机,并将它们结合起来。
这是图像数组的示例:
这是风味列表的示例:
我已按照此处的说明https://www.hashicorp.com/blog/hashicorp-terraform-0-12-preview-for-and-for-each/但它不起作用,错误消息也无济于事。
这是我的 tf 文件:
编辑
即使在 mjpgpy3 建议之后,我也会收到相同的错误消息:
terraform - 引用 Terraform 中的其他模块资源
我的 Terraform Cloud git 项目中有这样的层次结构:
所有主main.tf
文件都包含带有子文件夹的模块定义:
/main.tf
:
/aws/main.tf
:
/aws/security-rules/main-tf
:
/aws/vms/main-tf
:
然后我定义了这个安全规则。
/aws/security-rules/sec-rule1/main-tf
:
而且我想从一个或多个 VM 中引用它,但我不知道如何通过资源 ID(或名称)进行引用。我使用简单的名称而不是参考。
/aws/vms/vm1/main-tf
:
我想使用通过 name 或 ID 引用的安全规则(和更多东西),因为它会更加一致。此外,当我创建一个新的安全规则并同时创建一个 VM 时,Terraform OpenStack 提供者计划它没有错误,但是在应用它时,会产生错误,因为 VM 是先创建的,它没有发现尚未创建新的安全规则。
我怎样才能做到这一点?
terraform-provider-openstack - 如何使用terraform将浮动IP地址关联到openstack中的实例
我正在使用 terraform 在 openstack 中创建几个实例,我想自动为它们分配浮动 IP 地址,而无需任何手动干预。
我的 .tf 文件如下:
我收到一个错误
“错误:缺少资源实例键
在 image-provisioning.tf 第 33 行,在资源“openstack_compute_floatingip_associate_v2”“fip-associate”中:33:instance_id = openstack_compute_instance_v2.terraform-vm.id[count.0]”
我的 terraform 版本是: Terraform v0.12.24 + provider.openstack 1.26.0
terraform - Terraform 和 OpenStack - 零停机时间变化
我openstack_compute_instance_v2
用来在 OpenStack 中创建实例。存在生命周期设置create_before_destroy = true
。如果我更改卷大小(需要替换实例),它就可以正常工作。
但。当我进行风味更改时,可以使用resize instance
OpenStack 中的选项来完成,它就是这样做的,但不关心任何 HA。在调整大小完成之前,集群中的所有实例将在 20-30 秒内不可用。
我怎样才能改变这种行为?
Ansible 中的一些设置serial
或其他一些选项会派上用场。但我什么也找不到。任何能让我说“至少有一半的实例需要始终在线”的解决方案。
地形版本:12.20。
terraform - Terraform - 创建 OpenStack 负载均衡器时出错:找不到资源
我正在尝试使用 Terraform 创建 OpenStack 负载均衡器,但出现以下错误terraform apply
:
错误:创建 openstack_lb_loadbalancer_v2 时出错:找不到资源
在 load-balancer/main.tf 第 71 行,在资源“openstack_lb_loadbalancer_v2”“lb_1”中:71:资源“openstack_lb_loadbalancer_v2”“lb_1”{
我的模板如下所示。
我不知道如何进一步调试。意思vip_subnet_id
是没有找到吗?还是openstack_lb_loadbalancer_v2
未知的资源类型?
我正在使用 Terraform v0.13.5 和 terraform-provider-openstack v1.33.0。
更新
我通过 Web 界面手动创建了一个 LB,现在我尝试通过 Terraform CLI 导入它并得到以下响应
错误:无法导入不存在的远程对象
在尝试将现有对象导入到 openstack_lb_loadbalancer_v2.lb_1 时,提供程序检测到不存在具有给定 ID 的对象。只能导入预先存在的对象;检查 id 是否正确以及它是否与提供者配置的区域或端点相关联,或者使用“terraform apply”为此资源创建一个新的远程对象。
我开始怀疑这可能是 OpenStack 服务器端的问题。
ansible - Terraform 创建列表
我尝试将我的 coturn 服务器的所有浮动 ips 放入 ansible 库存中。
错误:此对象没有名为“floating_ip”的属性。
有效,但仅适用于一种情况。
我的模板文件。
我的 openstack_compute_floatingip_associate_v2 定义。
terraform - 如何通过openstack中的terraform将多个卷动态附加到多个实例?
我编写了一个 terraform 模块(v0.14),可用于在 openstack 中配置多个实例,具有正确的可用性区域、网络端口、正确的风格,可以基于布尔输入变量创建 1 个本地磁盘或 1 个 blockstorage_volume 等等。现在我得到了一个功能请求,能够在多个实例上动态添加多个 blockstorage_volumes(=network/shared storage volumes)。
多个实例上的 1 个 blockstorage_volume 如何动态工作的示例:
所以现在假设我有 2 个实例,我想在每个实例中动态添加 2 个额外的 blockstorage_volumes,我的第一个想法是添加 2 个额外的动态资源作为试用:
.tf 文件中定义的 2 个额外 blockstorage_volumes 示例:
.tf 文件中定义的 2 个实例的示例:
在这里,我尝试为每个实例动态附加 2 个额外的 blockstorage_volumes:
openstack_compute_instance_v2.instance [each.key]显然是不正确的,因为它现在只为每个实例创建 1 个额外的 blockstorage_volume。有没有一种干净/优雅的方法来解决这个问题?所以基本上将变量“multiple_volumes”中的所有给定卷附加到 var.nodes 中定义的每个单个实例
亲切的问候,乔纳斯
terraform - Terraform Openstack:在创建期间附加网络接口
我想在 openstack 中创建一个仅附加预定义网络接口的实例。我可以访问 openstack,我知道网络接口 ID/名称。
创建实例后,我可以简单地附加接口。这样,它将从池中随机分配一个 IP,然后连接网络接口。那不是我想要的。
如开头所述,我想在构建实例时附加接口。
编辑 - 示例代码:
主机创建:
接口贴:
这行不通。Terraform 返回错误:
错误:创建 OpenStack 服务器时出错:访问 [POST 服务器] 时预期的 HTTP 响应代码 [],但得到 409 {"conflictingRequest": {"message": "找到多个可能的网络,使用更具体的网络 ID。" , "代码": 409}}
回到我最初的查询:我想部署一个新主机并附加一个网络接口。结果应该是只有一个 IP 地址的主机,即我附加的那个。