azure 通过VM扩展安装powershell Az.存储模块从terraform自定义脚本

wgx48brx  于 2023-02-25  发布在  Shell
关注(0)|答案(1)|浏览(133)

我需要通过terraform VM扩展-自定义脚本在Azure Windows VM中安装Az.存储模块。每隔一个命令执行一次,但模块安装命令不执行。资源“azurerm_virtual_machine_extension”“VMextn 202”{

name                 = "avmextn1"
  virtual_machine_id = azurerm_windows_virtual_machine.vm.id
  publisher            = "Microsoft.Compute"
  type                 = "CustomScriptExtension"
  type_handler_version = "1.9"
  auto_upgrade_minor_version = true
  settings             = <<SETTINGS
    {
        "fileUris": ["https://${azurerm_storage_account.Storage.name}.blob.core.windows.net/${azurerm_storage_container.Scripts.name}/${azurerm_storage_blob.BlobVMExt.name}"],
        "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file VMExt.ps1"      
    }
SETTINGS
}

VMExt.ps1的内容:

Get-Service | Out-File "C:\Users\Simulator-User\service.txt" -Force
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Module -Name Az.Storage -Force -AllowClobber -SkipPublisherCheck
Install-Module -Name Az.Storage -Force -AllowClobber -SkipPublisherCheck

此处,第一个cmd执行(在VM中创建service.txt),第二个cmd执行(在VM中安装程序包Provider),但未执行与模块安装相关的下一个cmd(无法从Get-InstalledModules中找到模块-模块未安装在VM中)。
在Azure门户中手动创建VM扩展-自定义脚本时也会发生同样的事情。
任何建议都会对我有帮助。

jq6vz3qz

jq6vz3qz1#

在我的例子中,问题是模块安装在一个作用域中,因此当RDP到VM时我看不到它。
现在我显式设置scope

Install-Module -Name [MODULE NAME] -Scope AllUsers -Force

则在I RDP和Get-InstalledModules时模块可用

相关问题