在 Azure 中使用没有 public IP 的 VSTS 任务 'PowerShell on Target Machines'

Use VSTS task 'PowerShell on Target Machines' without public IP in Azure

我们正在使用 VSTS 将数十个 VM 部署到 Azure。我们现在需要在特定的虚拟机上执行一些脚本。不幸的是,我们不能让 VM 有 public 个 IP。是否可以在没有 public IP 的目标计算机上使用需要 WinRM 和 PowerShell 的 VSTS 任务?如果没有,那将是我们最好的选择吗?

您需要配置 Azure 网络,以便您的构建基础结构可以路由到这些服务器的私有 IP 地址。如果您的构建服务器也在 Azure 中,只需确保它们都使用相同的 Azure 虚拟网络即可。如果没有,您将需要设置 Azure VPN 网关。

具体的配置太深了,变数太多,无法进入这里。

Is it possible to use VSTS tasks that require WinRM and PowerShell on Target Machines without public IP?

除非您创建 VPN 隧道,否则不可能。但没必要,而且很贵。

对于您的场景,您可以使用 Azure VM Custom Script Extension

The Custom Script Extension downloads and executes scripts on Azure virtual machines. This extension is useful for post deployment configuration, software installation, or any other configuration / management task. Scripts can be downloaded from Azure storage or GitHub, or provided to the Azure portal at extension run time.

如果使用它,则不需要 winrm 虚拟机。

Set-AzureRmVMCustomScriptExtension 命令可用于将自定义脚本扩展添加到现有虚拟机。例如:

Set-AzureRmVMCustomScriptExtension -ResourceGroupName myResourceGroup `
    -VMName myVM `
    -Location myLocation `
    -FileUri myURL `
    -Run 'myScript.ps1' `
    -Name DemoScriptExtension

注意:您可以将脚本保存在 GitHub 和 Azure 存储帐户上。