当前位置: 首页 > 知识库问答 >
问题:

使用Terraform为AWS配置Windows VM(包括文件Provisioner)会导致超时

阙阳
2023-03-14

我知道已经有几个类似的帖子了——我已经浏览过它们并调整了我的Terraform配置文件,但没有什么区别。

这包括对以前帖子的修改:

  • SSH连接限制SSH在具有Terraform provisioner连接类型的Windows中不工作
  • 使用安全组Terraform File provisioner无法通过ssh连接ec2。超时-最后一个错误:拨打tcp 92.242。xxx。xx:22:i/o超时

当使用“winrm”而不是“ssh”时,我也会超时。

如果您能为以下配置文件提供任何提示,我将非常高兴:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  access_key = "<my access key>"
  secret_key = "<my secret key>"
  region = "eu-central-1"
}

resource "aws_instance" "webserver" {
    ami = "ami-07dfec7a6d529b77a"
    instance_type = "t2.micro"
    security_groups = [aws_security_group.sgwebserver.name]
    key_name = aws_key_pair.pubkey.key_name

    tags = {
        "Name" = "WebServer-Win"
    }
}

resource "null_resource" "deployBundle" {
    
    connection {
      type        = "ssh"
      user        = "Administrator"
      private_key = "${file("C:/Users/<my user name>/aws_keypair/aws_instance.pem")}"
      host        = aws_instance.webserver.public_ip
    }

    provisioner "file" {    
      source = "files/test.txt"    
      destination = "C:/test.txt"  
    }

    depends_on = [ aws_instance.webserver ]
} 

resource "aws_security_group" "sgwebserver" {
  name        = "sgwebserver"
  description = "Allow ssh inbound traffic"

  ingress {
    from_port        = 0
    to_port          = 6556
    protocol         = "tcp"
    cidr_blocks      = ["0.0.0.0/0"]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
  }

  tags = {
      Name = "sgwebserver"
  }

}

resource "aws_key_pair" "pubkey" {
    key_name = "aws-cloud"
    public_key = file("key/aws_instance.pub")
}

resource "aws_eip" "elasticip" {
    instance = aws_instance.webserver.id
}

output "eip" {
    value = aws_eip.elasticip.public_ip
}

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["eu-central-1a", "eu-central-1b", "eu-central-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway = true
  enable_vpn_gateway = true

  tags = {
    Terraform = "true"
    Environment = "dev"
  }
}

非常感谢提前!

共有1个答案

管峻
2023-03-14

Windows EC2实例不支持SSH,它们支持RDP。您必须先在实例上安装SSH服务器软件,然后才能使用SSH连接到实例中。

我建议将文件放在S3中,并使用用户数据脚本触发Windows EC2实例在启动时下载文件。

 类似资料:
  • 我正在尝试使用以下命令开始硒测试 配置文件在Firefox中正确加载,但测试无法运行,但有以下例外: 在运行相同的测试时,没有加载配置文件正在工作。 我发现这个问题:https://github.com/SeleniumHQ/selenium-ide/issues/616它看起来像一只虫子。 我试图添加一个。一边yml文件,但这没有帮助。 似乎加载配置文件正在禁用firefox中的webdrive

  • 问题内容: 我以前使用Axios下载GET端点提供的文件。端点已更改,现在是POST,但是不需要参数。我正在更新原始的下载方法,但是返回了损坏的文件。 我不知道,如果问题出在,或如何响应的处理或全部的上方。到目前为止,我已经尝试了各种选择,但没有运气。任何建议将不胜感激! 我已经能够使用Postman下载文件,所以我知道端点提供的文件很好。我只是无法在我的React代码中理清参数来做到这一点。 问

  • 我有以下代码: 这会导致错误: 但是,在以下情况下(其中三元表达式中的括号已被删除): 没有错误,欢迎消息显示正确。 为什么会这样呢?在我的印象中,括号在三元表达式中是可选的。我认为这与求值的顺序有关,但是由于三元表达式在不同的行上,所以< code>let person = {...,我不清楚为什么会发生这种情况。 事实上,在我正在学习的JavaScript课程中,教师展示了下面的例子,无论有没

  • 作为开发人员,我在本地开发环境中使用默认的配置文件。下面是我的文件的一部分: 以前我使用的是spring boot 2.3.0.Release,而属性在运行时包含配置文件。 但是在我迁移到spring boot 2.4.0之后,我没有启用配置文件。属性似乎不像以前那样工作了。 请告诉我如何配置我的配置文件,使我得到与迁移前相同的结果。(我不想在这里使用配置文件组) 提前道谢!

  • 我试图运行一个依赖于某些python3库的PySpark作业。我知道我可以在Spark Cluster上安装这些库,但是因为我正在为多个作业重用集群,所以我更愿意捆绑所有依赖项,并通过指令将它们传递给每个作业。 为此,我使用: 它有效地压缩了需要在根级别使用的包中的所有代码。 在my中,我可以导入依赖项 并将.zip添加到我的Spark上下文中 到目前为止还不错。 但出于某种原因,这将在星火星团的

  • 问题内容: 该软件包通过将zip文件视为文件系统,具有处理zip文件的优美方法。这使我们能够像对待普通文件一样对待zip文件内容。因此,仅通过将所有文件复制到zip文件中即可压缩整个文件夹。由于也要复制子文件夹,因此我们需要一个访问者: 这是一个简单的“递归复制目录”访问者。它用于递归复制目录。但是,使用,我们还可以使用它将目录复制到zip文件中,如下所示: 这就是我称为压缩整个文件夹的一种优雅方