如何获取使用 Azure ARM 和 Packer 构建图像时使用的随机化器管理员凭据

How to get the randomized adminstrator credentials used when building images using Azure ARM and Packer

在使用 Azure-ARMPacker 中配置 WindowsServer 2016 Datacenter 映像期间,我需要在构建 VM 上使用的随机生成的密码,以便我可以使用以下命令设置计算机的域代码:

$password = ConvertTo-SecureString $args[1] -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($args[0], $password)

Add-Computer -DomainName $domain -Credential $credential

但是,我无法访问 Packer Build VM 生成的密码,documentation 只说明密码是随机生成的,但没有说明如何找回密码。

有没有什么方法可以从 Packer 获取凭据,或者我是否需要借助管理员 shell 中的一些 Powershell 魔法来获取纯文本密码?

根据Matt Schuchard,随机生成的管理员密码用于初始配置,尤其是软件配置。如果您希望它是确定性的,您可以随后或稍后(可能在使用基础设施供应商部署工件之后)覆盖它。

Is there any way to get the credentials from Packer , or will I need to resort to some Powershell wizardry in an Administrator shell to get the password in plain text?

试试下面的代码,它以纯文本形式输出密码!

Azure PowerShell:

$sp = New-AzADServicePrincipal -DisplayName "PackerSP$(Get-Random)"
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret)
$plainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

然后输出密码和应用ID。 Powershell:

$plainPassword
$sp.ApplicationId

有关详细信息,请参阅此 documentation-of-build-images-with-packer-arm