执行官:“;powershell“在Terraform中运行本地exec时,在$PATH中找不到可执行文件

执行官:“;powershell“在Terraform中运行本地exec时,在$PATH中找不到可执行文件,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我已经在一个UbuntuAzure虚拟机上建立了Terraform Enterprise,并将其与Service Now和Azure开发操作系统集成。无论何时,只要使用特定目录项在Service Now中创建了一个新票证,terraform workspace就会被配置,并使用传递的变量值开始运行。terraform代码在Ubuntu18.04上运行。我需要使用“Local Exec”provisioner运行Az命令,以便在已安装自定义脚本扩展的VM上安装该扩展,并且需要在该VM上运行powe

我已经在一个UbuntuAzure虚拟机上建立了Terraform Enterprise,并将其与Service Now和Azure开发操作系统集成。无论何时,只要使用特定目录项在Service Now中创建了一个新票证,terraform workspace就会被配置,并使用传递的变量值开始运行。terraform代码在Ubuntu18.04上运行。我需要使用“Local Exec”provisioner运行Az命令,以便在已安装自定义脚本扩展的VM上安装该扩展,并且需要在该VM上运行powershell。我正在使用下面的代码

provisioner "local-exec" {
  command = <<EOH
  az login --identity
  az account set --subscription=${local.subscription_id}
  az vm extension set --resource-group ${data.azurerm_resource_group.rg.name} --vm-name ${var.azure_vm_name} --name CustomScriptExtension --publisher Microsoft.Compute --extension-instance-name CustomScriptExtension --settings .//settings.json --version 1.9 --force-update
  EOH
  interpreter = ["pwsh","-command"]
}

是否有人遇到过同样的问题,或者有人能在这方面帮助我吗?

有关错误消息,请仔细检查:

  • 如果已成功安装PowerShell Core
  • 如果您有足够的权限访问该
    pwsh
    文件或目录
  • 如果已安装目录添加到环境变量
    $PATH
您可以运行
echo$PATH
检查当前路径配置并运行
export PATH=$PATH:/xxx/xxx
将目录添加到
$PATH

有关更多信息,您可以按照以下文档进行操作。这对我来说很有效

一,

二,


最后但并非最不重要的一点是,如果您想运行az cli,您需要首先运行。

似乎您在Ubuntu上运行的是az cli,而不是az powershell模块。请注意,az cliaz powershell彼此不同。如果您想运行AZCLI,只需使用
curl-sL安装AZCLI即可https://aka.ms/InstallAzureCLIDeb |sudobash


注意:本地exec provisioner在创建资源后调用本地可执行文件。这将调用运行Terraform的机器上的进程,而不是资源上的进程

感谢Nancy和MoonHouse的回复,但terraform enterprise使用默认的一次性docker容器,软件有限 执行HCL代码或ocal exec。我们需要创建一个自定义工作映像作为备用工作映像,您可以在其中安装可执行文件,并将该自定义映像作为默认容器来执行代码

替代地形工人形象 TFE在一次性Docker容器中运行terraform plan和terraform apply操作。在某些情况下,运行可能会频繁使用默认Docker映像中不可用的其他工具。要允许在任何计划或应用中使用这些工具,用户可以构建自己的映像,并配置TFE以使用该映像。为了实现这一点,必须在配置中使用自定义图像标记字段设置备用docker图像的名称,如下所示:

Terraform Enterprise docker映像

docker build . -t 'custom-image-name'
»要求 基本映像必须是ubuntu:xenial。 映像必须存在于Terraform Enterprise主机上。可以通过从本地注册表或任何其他类似方法运行docker pull来添加它。 所有必要的PEM编码CA证书必须放在/usr/local/share/CA certificates目录中。添加到此目录的每个文件必须以.crt扩展名结尾。运行时,在CA捆绑包设置中配置的CA证书不会自动添加到此映像。
不得在图像上安装Terraform。Terraform Enterprise将在运行时处理此问题。

请使用以下命令集创建新的Docker映像,并更新Terraform worker以使用此映像

步骤1:登录到Terraform worker VM。创建一个新文件夹,并使用touch Dockerfile命令在其中创建新文件“Dockerfile”

步骤2:在创建的Dockerfile中更新以下脚本:


======================================================================== 步骤3:构建docker映像

docker build . -t 'custom-image-name'
步骤4:以交互方式测试容器

docker container run -it custom-image-name:v1 /bin/bash
在提示符下键入:
pwsh以启动PowerShell

步骤5:将容器推送到存储库

docker push custom-image-name:v1
步骤6:在Terraform worker上拉取图像

docker pull custom-image-name:v1
docker container run -it custom-image-name:v1 /bin/bash
docker push custom-image-name:v1
docker pull custom-image-name:v1