【问题标题】:How to run a powershell script in terraform?如何在 terraform 中运行 powershell 脚本?
【发布时间】:2019-02-07 20:29:27
【问题描述】:

我正在尝试在 terraform 脚本中运行 PowerShell 脚本。我尝试使用 local-exec 函数,但它会引发以下错误。

错误:未知的根级别密钥:provisioner

我已经包含了下面的脚本。

如果有人可以为我提供解决方案,我会很高兴。

provisioner "local-exec" {
  inline = ["powershell.exe -File C:\\Users\\Boopathi Kumar\\Downloads\\poscript1.ps1"]
}

【问题讨论】:

    标签: terraform


    【解决方案1】:

    Provisioners 必须作为资源的一部分而不是顶级资源运行。

    通常这将针对一个实例运行,例如上面链接文档中给出的示例:

    resource "aws_instance" "web" {
      # ...
    
      provisioner "local-exec" {
        command = "echo ${self.private_ip} > file.txt"
      }
    }
    

    将实例的 IP 地址写入运行 Terraform 的本地文件。

    如果您根本没有任何指向资源的链接(您只想让某些事情发生而不管资源是否发生变化),您可以使用专为此目的设计的null_resource

    正如local-exec docs 中提到的,您可以这样使用它:

    resource "null_resource" "example2" {
      provisioner "local-exec" {
        command = "Get-Date > completed.txt"
        interpreter = ["PowerShell", "-Command"]
      }
    }
    

    【讨论】:

    • 感谢您的解决方案。你能帮我在配置器中使用 PowerShell 脚本而不是使用“命令”选项吗?
    • 只需将-Command 替换为-File,就像不在Terraform 中运行它一样。
    • 我在命令参数中给出了文件路径,并将 -Command 替换为 -File ,它工作得很好。
    • 如何在配置器中调用参数时将参数传递给脚本。
    • 这可能值得一个单独的问题。这也是一个我不知道答案的问题,因为我不使用 Powershell。
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2020-06-01
    • 2021-04-04
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多