如何使用 Terraform local-exec 将命名参数传递给 powershell 脚本?

Posted

技术标签:

【中文标题】如何使用 Terraform local-exec 将命名参数传递给 powershell 脚本?【英文标题】:How to pass named params to powershell script using Terraform local-exec? 【发布时间】:2019-11-21 19:07:35 【问题描述】:

试图找出使用 terraform local-exec 将命名参数传递给我的 powershell 脚本的正确方法。

在这种情况下我需要像这样引用分隔参数吗?

provisioner "local-exec" 
    command = "powershell -file ../BindCert.ps1 -certString '$var.cert_string_b64' -certPassword '$var.cert_password' -certThumbprint '$var.cert_thumbprint' -certName '$var.cert_name'"
  

Windows 10 Powershell 5.1

【问题讨论】:

【参考方案1】:

对于您的问题,您可以更改如下代码:

provisioner "local-exec" 
        command = "powershell -file ../BindCert.ps1 -certString $var.cert_string_b64 -certPassword $var.cert_password -certThumbprint $var.cert_thumbprint -certName $var.cert_name"
    

我将向您展示我所做的测试。

PowerShell 脚本:

param([String]$rgName = "rgName")
Get-AzResourceGroup -Name $rgName

地形代码:

variable "test" 
    type = "string"
    default = "charles"


resource "null_resource" "test" 
    provisioner "local-exec" 
        command = "PowerShell -file ./test.ps1 -rgName $var.test"
    

结果截图:

更多详情请见Terraform local-exec Provisioner。

【讨论】:

谢谢...在字符串参数值嵌入空间(如“美国西部”)用于手臂位置之前,效果很好。

以上是关于如何使用 Terraform local-exec 将命名参数传递给 powershell 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

Terraform `local-exec` 设置本地别名

exec:“powershell”:在 Terraform 中运行 local-exec 时在 $PATH 中找不到可执行文件

如何使用 Terraform 使 AWS CloudFront Distribution 缓存失效?

如何使用 cloud-init 和 Terraform 设置主机名?

可以在控制台输出中使用Terraform屏蔽变量吗?

如何将区域变量传递到 vpc 模块内的 local-exec