首页 > 解决方案 > 在 Terraform 中的远程 Windows EC2 实例上执行 Powershell 脚本

问题描述

我正在 AWS 中启动一个 Windows EC2 实例。现在我想安装某些软件,如 OpenSSH 和其他一些任务,如在服务器创建后创建用户。如果我有 PowerShell 脚本,如何在远程实例上执行?

我有一个本地 PowerShell 脚本 - install_sft.ps1,我想在 AWS 中的远程 EC2 实例上执行。

我知道我需要使用“provisioner”,但无法弄清楚如何在 Windows 上使用它。

 resource "aws_instance" "win-master" {
  provider                    = aws.lmedba-dc
  ami                         = data.aws_ssm_parameter.WindowsAmi.value
  instance_type               = var.instance-type
  key_name                    = "RPNVirginia"
  associate_public_ip_address = true
  vpc_security_group_ids      = [aws_security_group.windows-sg.id]
  subnet_id                   = aws_subnet.dc1.id
  tags = {
    Name = "Win server"
  }
  depends_on = [aws_main_route_table_association.set-master-default-rt-assoc]

}

标签: windowsamazon-web-servicespowershellterraform

解决方案


您可以通过使用资源的user_data参数来做到这一点aws_instance

resource "aws_instance" "win-master" {
  ...
  user_data = "${base64encode(file(install_sft.ps1))}"
  ...
}

只需确保它install_sft.ps1与您的 Terraform 代码位于同一目录中。

EC2 实例的用户数据脚本在首次启动时执行。有关更多详细信息,请参阅此处的 AWS 文档。


推荐阅读