首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >资源暂时不可用- TCP 5985

资源暂时不可用- TCP 5985
EN

Stack Overflow用户
提问于 2018-07-31 15:58:44
回答 1查看 407关注 0票数 0

我从Udemy课程克隆了一个git存储库,更改了访问密钥和密钥,但我仍然收到如下错误消息: dial tcp 35.158.225.227:5985: connect: resource temporarily unavailable。

ec2实例状态为running,但无法执行powershell。你知道什么东西不能正常工作吗?

windows-instance.tf

代码语言:javascript
运行
复制
resource "aws_key_pair" "mykey" {
  key_name = "mykey"
  public_key = "${file("${var.PATH_TO_PUBLIC_KEY}")}"
}

resource "aws_instance" "win-example" {
  ami = "${lookup(var.WIN_AMIS, var.AWS_REGION)}"
  instance_type = "t2.micro"
  key_name = "${aws_key_pair.mykey.key_name}"
  user_data = <<EOF
<powershell>
net user ${var.INSTANCE_USERNAME} '${var.INSTANCE_PASSWORD}' /add /y
net localgroup administrators ${var.INSTANCE_USERNAME} /add
winrm quickconfig -q
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="300"}'
winrm set winrm/config '@{MaxTimeoutms="1800000"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
netsh advfirewall firewall add rule name="WinRM 5985" protocol=TCP dir=in localport=5985 action=allow
netsh advfirewall firewall add rule name="WinRM 5986" protocol=TCP dir=in localport=5986 action=allow
net stop winrm
sc.exe config winrm start=auto
net start winrm
</powershell>
EOF

  provisioner "file" {
    source = "test.txt"
    destination = "C:/test.txt"
  }
  connection {
    type = "winrm"
    timeout = "10m"
    user = "${var.INSTANCE_USERNAME}"
    password = "${var.INSTANCE_PASSWORD}"
  }
}

vars.tf

代码语言:javascript
运行
复制
variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "AWS_REGION" {
  default = "eu-central-1"
}
variable "WIN_AMIS" {
  type = "map"
  default = {
    eu-central-1 = "ami-6af7f381"
    eu-west-1 = "ami-96e1f27c"
  }
}

variable "PATH_TO_PRIVATE_KEY" {
  default = "mykey"
}
variable "PATH_TO_PUBLIC_KEY" {
  default = "mykey.pub"
}
variable "INSTANCE_USERNAME" {
  default = "Terraform"
}
variable "INSTANCE_PASSWORD" { }

provider.tf

代码语言:javascript
运行
复制
provider "aws" {
    access_key = "${var.AWS_ACCESS_KEY}"
    secret_key = "${var.AWS_SECRET_KEY}"
    region = "${var.AWS_REGION}"
}

我在文件夹中还有一个terraform.tfvars、pub和一个pem文件。我做错了什么?

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2018-08-01 09:46:30

问题是您没有以Windows管理员身份登录。您正尝试以不存在的用户身份登录,然后将该用户添加到系统中。这是不可能做到的。您必须以管理员身份登录。

要做到这一点,

代码语言:javascript
运行
复制
key_name = "${aws_key_pair.mykey.key_name}"

代码语言:javascript
运行
复制
key_name = "${aws_key_pair.mykey.key_name}"
get_password_data = true

新产品线

代码语言:javascript
运行
复制
get_password_data = true

通知Terraform在创建后立即获取Windows管理员密码。创建密码后,您需要访问密码、解密密码,然后使用密码登录实例。所以,下一个改变..

代码语言:javascript
运行
复制
connection {
  type = "winrm"
  timeout = "10m"
  user = "${var.INSTANCE_USERNAME}"
  password = "${var.INSTANCE_PASSWORD}"
}

代码语言:javascript
运行
复制
connection {
  type = "winrm"
  timeout = "10m"
  password = "${rsadecrypt(self.password_data, file("${var.PATH_TO_PRIVATE_KEY}"))}"

}

这将使用解密的管理员密码以管理员身份登录。

下一步移除,

代码语言:javascript
运行
复制
net user ${var.INSTANCE_USERNAME} '${var.INSTANCE_PASSWORD}' /add /y
net localgroup administrators ${var.INSTANCE_USERNAME} /add

这不是必需的,因为您将以管理员身份登录,并具有访问密码的权限。

也会改变

代码语言:javascript
运行
复制
winrm quickconfig -q

代码语言:javascript
运行
复制
winrm quickconfig -force

最后,从vars.tf删除

代码语言:javascript
运行
复制
variable "INSTANCE_USERNAME" {
  default = "Terraform"
}
variable "INSTANCE_PASSWORD" { }

因为您将以管理员身份登录。

然后,一切都应该正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51608277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档