Terraform:使用专用IP将文件上载到Windows AMI

时间:2018-03-02 20:22:39

标签: terraform winrm

我正在尝试将文件上传到运行在没有公共IP地址的EC2上的Windows Server VM。这是描述实例的我的terraform资源。

resource "aws_instance" "windows" {
  count                  = 1
  ami                    = "${var.ami_id}"
  instance_type          = "${var.instance_type}"
  subnet_id              = "${module.vpc.internal_subnets[0]}"
  user_data              = "<powershell>net user Administrator thisIsJustTemporary!</powershell>"
  vpc_security_group_ids = ["${aws_security_group.winrm.id}", "${module.security_groups.internal_rdp}", "${module.security_groups.allow_outbound}"]
  key_name               = "${var.key_name}"

  provisioner "file" {
    source      = "./my-script.ps1"
    destination = "C:\\Users\\Administrator\\connect-slave.ps1"

  #   connection {
  #     type     = "winrm"
  #     user     = "Administrator"
  #     password = "thisIsJustTemporary!"

  #     bastion_host        = "${module.bastion.external_ip}"
  #     bastion_private_key = "${file(var.ssh_private_key_path)}"
  #     bastion_user        = "ubuntu"
  #   }
  }

  tags {
    Name               = "${var.name}-windows-${count.index+1}"
  }
}

我似乎找不到任何关于如何通过堡垒主机使用WinRM的文档。正确设置了WinRM ,因为当我在公有子网中启动实例并直接连接到实例时,这一切都正常。

或者,有没有办法ssh到Windows?

2 个答案:

答案 0 :(得分:0)

不幸的是,这是目前不支持的功能。您可以跟踪功能请求here的进度。

答案 1 :(得分:0)

您可以尝试通过利用用户数据来获取脚本。例如,您可以在S3存储桶上托管connect-slave.ps1脚本,然后使用用户数据在正确的位置下载脚本。