Packer azure-arm:找不到托管图像资源组

时间:2017-12-18 15:06:12

标签: azure packer

我是Packer的新手,我一直在尝试按照本指南在Azure图像上构建我的第一个打包器 - https://docs.microsoft.com/en-us/azure/virtual-machines/windows/build-image-with-packer

我没有完全遵循指南,因为我已经设置了Azure订阅和资源组。但是现在当我尝试构建我的Packer镜像时,我收到以下错误

Build 'azure-arm' errored: Cannot locate the managed image resource group myResourceGroup

从阅读文档中可以看出,唯一的要求是资源组已经存在,我可以在Azure门户中看到它。

我的包装工json文件遵循指南中的一个,如下所示,任何帮助赞赏

    {
  "builders": [{
    "type": "azure-arm",

    "client_id": "0831b578-8ab6-40b9-a581-9a880a94aab1",
    "client_secret": "P@ssw0rd!",
    "tenant_id": "72f988bf-86f1-41af-91ab-2d7cd011db47",
    "subscription_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
    "object_id": "a7dfb070-0d5b-47ac-b9a5-cf214fff0ae2",

    "managed_image_resource_group_name": "myResourceGroup",
    "managed_image_name": "myPackerImage",

    "os_type": "Windows",
    "image_publisher": "MicrosoftWindowsServer",
    "image_offer": "WindowsServer",
    "image_sku": "2016-Datacenter",

    "communicator": "winrm",
    "winrm_use_ssl": "true",
    "winrm_insecure": "true",
    "winrm_timeout": "3m",
    "winrm_username": "packer",

    "azure_tags": {
        "dept": "Engineering",
        "task": "Image deployment"
    },

    "location": "East US",
    "vm_size": "Standard_DS2_v2"
  }],
  "provisioners": [{
    "type": "powershell",
    "inline": [
      "Add-WindowsFeature Web-Server",
      "if( Test-Path $Env:SystemRoot\\windows\\system32\\Sysprep\\unattend.xml ){ rm $Env:SystemRoot\\windows\\system32\\Sysprep\\unattend.xml -Force}",
      "& $Env:SystemRoot\\System32\\Sysprep\\Sysprep.exe /oobe /generalize /shutdown /quiet"
    ]
  }]
}

3 个答案:

答案 0 :(得分:2)

发生这种情况是因为我的服务主体没有足够的权限来读取资源组。

确保您具有正确的权限,这应该创建正确的服务主体:

az ad sp create-for-rbac --role Contributor --name sp-packer-001

答案 1 :(得分:1)

  

构建'azure-arm'错误:找不到托管图像资源   分组myResourceGroup

根据此错误消息,您似乎没有替换该json文件中的资源组名称

myResourceGroup

我们应该用您的现有资源组名称替换 "managed_image_resource_group_name": "jasonpacker", ,如下所示:

client_id

此外,我们应该替换client_secrettenant_idsubscription_idobject_idint main() { int* i = new int(4); int* j = i + 1; j = new int(5); cout << *i << endl; cout << *j << endl; }

完成后,我们可以在您现有的资源组中找到该图像:

enter image description here

答案 2 :(得分:1)

Packer存在一个未解决的问题,当client_id / client_secret对不匹配时会显示此错误,详情请参阅here