无法在 Windows VM 上使用 terraform 和 Azure VM 扩展自动映射 azure 存储共享
Unable to automatically map azure storage share using terraform and Azure VM extensions on Windows VM
问题陈述
我正在尝试使用 Azure VM 扩展将 Azure 文件共享自动映射到 Windows 个 VM。 VM 扩展安装成功,命令运行但在登录到 VM 时我看到我的驱动器已断开连接。
在尝试访问它时,我收到错误的用户名或密码错误。但是,运行机器上的 PowerShell 脚本正确映射了网络驱动器,我可以访问它。
代码
resource "azurerm_virtual_machine_extension" "test" {
# Custom VM extension documentation https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
# additional documentation http://teknews.cloud/bootstrapping-azure-vms-with-terraform/, https://github.com/terraform-providers/terraform-provider-azurerm/issues/728
name = "network_share"
location = "${azurerm_resource_group.main.location}"
resource_group_name = "${azurerm_resource_group.main.name}"
#virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
virtual_machine_name = "${element(azurerm_virtual_machine.vm.*.name, count.index)}"
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.9"
count = "${var.vm_count}"
settings = <<SETTINGS
{
"commandToExecute": "powershell -command \"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('${base64encode(data.template_file.net_fileshare_script.rendered)}')) | Out-File -filepath net_fileshare_script.ps1\" && powershell -File net_fileshare_script.ps1"
}
SETTINGS
depends_on = ["azurerm_virtual_machine.vm"]
}
data "template_file" "net_fileshare_script" {
template = "${file("./scripts/net_fileshare_script.ps1")}"
}
我发现脚本按原样运行。问题是存储共享的凭据在登录后对远程用户不可用。
远程用户登录后,运行此命令
Invoke-Expression -Command "cmdkey /add:storageaccount.file.core.windows.net /user:AZURE\storageaccount /pass:storagekey"
使远程用户帐户可以访问存储共享。
注意:是否可以通过一次性脚本为多个用户帐户提供一个凭据?
我尝试了上面的解决方案,但没有成功。
1 - 我用另一种方式做到了,我将建立连接的 powershell 保留在存储中
2 - 我创建了一个 powershell 脚本来创建一个指向项目 1
的 windows 任务调度程序
3 - 在 Terraform 中我创建了一行来执行在 item
中创建的 taskScheduler
问题陈述 我正在尝试使用 Azure VM 扩展将 Azure 文件共享自动映射到 Windows 个 VM。 VM 扩展安装成功,命令运行但在登录到 VM 时我看到我的驱动器已断开连接。
在尝试访问它时,我收到错误的用户名或密码错误。但是,运行机器上的 PowerShell 脚本正确映射了网络驱动器,我可以访问它。
代码
resource "azurerm_virtual_machine_extension" "test" {
# Custom VM extension documentation https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
# additional documentation http://teknews.cloud/bootstrapping-azure-vms-with-terraform/, https://github.com/terraform-providers/terraform-provider-azurerm/issues/728
name = "network_share"
location = "${azurerm_resource_group.main.location}"
resource_group_name = "${azurerm_resource_group.main.name}"
#virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
virtual_machine_name = "${element(azurerm_virtual_machine.vm.*.name, count.index)}"
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.9"
count = "${var.vm_count}"
settings = <<SETTINGS
{
"commandToExecute": "powershell -command \"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('${base64encode(data.template_file.net_fileshare_script.rendered)}')) | Out-File -filepath net_fileshare_script.ps1\" && powershell -File net_fileshare_script.ps1"
}
SETTINGS
depends_on = ["azurerm_virtual_machine.vm"]
}
data "template_file" "net_fileshare_script" {
template = "${file("./scripts/net_fileshare_script.ps1")}"
}
我发现脚本按原样运行。问题是存储共享的凭据在登录后对远程用户不可用。
远程用户登录后,运行此命令
Invoke-Expression -Command "cmdkey /add:storageaccount.file.core.windows.net /user:AZURE\storageaccount /pass:storagekey"
使远程用户帐户可以访问存储共享。
注意:是否可以通过一次性脚本为多个用户帐户提供一个凭据?
我尝试了上面的解决方案,但没有成功。
1 - 我用另一种方式做到了,我将建立连接的 powershell 保留在存储中
2 - 我创建了一个 powershell 脚本来创建一个指向项目 1
的 windows 任务调度程序3 - 在 Terraform 中我创建了一行来执行在 item
中创建的 taskScheduler