首页 > 解决方案 > 如何使用 user_data(AWS 和 Terraform)传递 PowerShell 脚本?

问题描述

我正在尝试将 PowerShell 脚本IIS.txt作为CWD.

我没有看到在服务器上运行的脚本。我不确定我是否遗漏了什么。任何帮助,将不胜感激。

resource "aws_instance" "db1" {
  ami           = "ami-1234567890"  
  instance_type = "t3.small"
  subnet_id     = "${aws_subnet.db.0.id}"
  key_name      = "ireland"
  user_data     = "${file("IIS.txt")}"

  tags = {
    Name = "sql node 1"
  }
}

标签: powershellamazon-ec2terraform

解决方案


为此,我使用了 template_file 数据和 local_file 资源。

data "template_file" "user_data" {
  template = "${file("iis.txt")}"
}

resource "local_file" "user_data" {
  content  = "${data.template_file.user_data.rendered}"
  filename = "user_data-${sha1(data.template_file.user_data.rendered)}.ps"
}

然后更新user_datalocal_file 资源的属性内容。

resource "aws_instance" "db1"
{
  ami           = "ami-1234567890"  
  instance_type = "t3.small"
  subnet_id     = "${aws_subnet.db.0.id}"
  key_name      = "ireland"
  user_data     = "${local_file.user_data.content}"
  tags =
  {
    Name = "sql node 1"
  }
}

这也让您可以更花哨地编写模板脚本,并将 TF 变量等拉入模板并在部署之前及时渲染。


推荐阅读