Terraform v0.12.6provider.awsv2.23.0provider.nullv2.1.2
用于重现错误消息的地形模板:
//VARIABLES
variable "aws_access_key" {
default = "AK"
}
variable "aws_secret_key" {
default = "SAK"
}
variable "instance_count" {
default = "3"
}
variable "username" {
default = "Administrator"
}
variable "admin_password" {
default = "Password"
}
variable "instance_name" {
default = "Testing"
}
variable "vpc_id" {
default = "vpc-id"
}
//PROVIDERS
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "ap-southeast-2"
}
//RESOURCES
resource "aws_instance" "ec2instance" {
count = "${var.instance_count}"
ami = "Windows AMI"
instance_type = "t2.xlarge"
key_name = "ec2_key"
subnet_id = "subnet-id"
vpc_security_group_ids = ["${aws_security_group.ec2instance-sg.id}"]
tags = {
Name = "${var.instance_name}-${count.index}"
}
}
resource "null_resource" "nullresource" {
count = "${var.instance_count}"
connection {
type = "winrm"
host = "${element(aws_instance.ec2instance.*.private_ip, count.index)}"
user = "${var.username}"
password = "${var.admin_password}"
timeout = "10m"
}
provisioner "remote-exec" {
inline = [
"powershell.exe Write-Host Instance_No=${count.index}"
]
}
// provisioner "local-exec" {
// command = "powershell.exe Write-Host Instance_No=${count.index}"
// }
// provisioner "file" {
// source = "testscript"
// destination = "D:/testscript"
// }
}
resource "aws_security_group" "ec2instance-sg" {
name = "${var.instance_name}-sg"
vpc_id = "${var.vpc_id}"
// RDP
ingress {
from_port = 3389
to_port = 3389
protocol = "tcp"
cidr_blocks = ["CIDR"]
}
// WinRM access from the machine running TF to the instance
ingress {
from_port = 5985
to_port = 5985
protocol = "tcp"
cidr_blocks = ["CIDR"]
}
tags = {
Name = "${var.instance_name}-sg"
}
}
//OUTPUTS
output "private_ip" {
value = "${aws_instance.ec2instance.*.private_ip}"
}
观察:
Terraform 0.12.26为我解决了类似的问题(在部署多个VM时使用多个文件提供程序)
希望这能帮助您:https://github.com/hashicorp/terraform/issues/22006
我在null\u资源中使用了这个触发器,它非常适合我。当实例数量增加时,它也可以工作,并对所有实例进行配置。我正在使用terraform和openstack。
触发器={instance_ids=加入(",",openstack_compute_instance_v2.swarm-集群主机[*]. id)}
更新:根据本期评论,最终的伎俩是将地形降级到11.14版本。
您可以尝试以下几件事:
resource "aws_instance" "ec2instance" {
count = "${var.instance_count}"
# ...
provisioner "remote-exec" {
connection {
# ...
}
inline = [
# ...
]
}
}
现在,您可以在连接块中引用self来获取实例的私有IP。
resource "null_resource" "nullresource" {
triggers {
host = "${element(aws_instance.ec2instance.*.private_ip, count.index)}" # Rerun when IP changes
version = "${timestamp()}" # ...or rerun every time
}
# ...
}
您可以使用触发器属性重新创建null\u资源,从而重新执行远程执行。
我为Hive JDBC编写了这个小程序。起初,它执行得很好,但当我现在试图运行时,突然出现了错误。 错误类似于:线程“main”java中的异常。lang.composibleClassChangeError:class com。脸谱网。fb303。FacebookService$客户端具有接口组织。阿帕奇。节约TServiceClient作为超级类 我到底是怎么了?我已经添加了蜂巢所需的所有罐子
我在主机上安装了Windows,在VirtualBox上安装了访客Ubuntu服务器。项目代码位于guest上,RubyMine位于host上。我已经配置了远程Ruby SDK并共享了项目文件夹。这很好。现在我需要配置Git。现在它运行本地(主机)可执行文件。我想通过SSH在guest上运行Git。它只允许设置本地路径(设置 知道如何集成远程Git可执行文件供RubyMine使用吗?
问题内容: 通常,我在端口3000上使用Rails开发服务器。 水豚/黄瓜使用。如果我从默认驱动程序交换到selenium,则看起来它尝试在端口80上进行连接。 我想了解: 使用selenium时,是否需要在测试环境中单独实例化测试服务器。 如果上述问题的答案是肯定的,那么我该如何做才能在Web驱动程序之间无缝切换而不必不断进行更改? 如果有人举了一个env.rb配置示例,可以帮助您,请告诉我!
我们什么时候应该使用Spring boot执行器。如果包括在内,它对应用程序内存和CPU使用有多大影响? 我目前正在使用Spring Boot 2. x。
我想为我们的应用程序配置Spring启动致动器endpoint。下面是我的pom.xml文件,添加了Spring启动执行器依赖项。 当我启动应用程序时,我看不到文档中显示的任何注册的/application/URLendpoint。文件表明,在将致动器相关性添加到pom之后。xml,我应该在启动日志中看到额外的映射,但我没有。这里会有什么问题? 下面是一个启动日志:
我有一个mapreduce代码在我的本地计算机上运行良好。然后,当我在远程服务器上运行它时,我会得到以下执行选项 在我的IntelliJ集成开发环境中,我有一个外部库avro-mapred-1.7.7-hadoop2。jar,我从中构建了工件。当我解压缩工件的jar时,我正确地找到了,并且在组织中正确地找到了AvroKeyInputFormat。阿帕奇。阿夫罗。mapreduce软件包。那么我在这