Marcação de recurso de parceiro do Azure por meio do cabeçalho do agente do usuário

8

Estou tentando implementar a marcação de parceiro dos recursos do Azure adicionando um GUID do produto de parceiro ao cabeçalho do agente do usuário ao criar recursos por meio da API do Resource Manager , mas não tem nenhum efeito visível. Eu verifiquei o modelo ARM de um recurso "marcado", mas o GUID não está lá. O método de verificação descrito no artigo também fornece resultados negativos.

Isso funciona para alguém?

Aqui está o código do Powershell com base no guia acima que reproduz o problema:

Install-Module -Name Az -AllowClobber -Scope CurrentUser # installs Azure Powerhsell module
$partnerID = "pid-3fd1a53d-3ef0-4111-8a66-211ed6470935" # Product GUID
$VMLocalAdminUser = "partneridtest" # test VM username
$VMLocalAdminSecurePassword = ConvertTo-SecureString "Pa$$word123" -AsPlainText -Force # test VM password
$resourceGroupName=[guid]::NewGuid().ToString() # randomly generated resource group name
Import-Module -Name Az # import Azure Powerhsell module
[Microsoft.Azure.Common.Authentication.AzureSession]::ClientFactory.AddUserAgent($partnerID) # add user-agent for partner tracking

Connect-AzAccount # login to Azure

New-AzResourceGroup -Name $resourceGroupName -Location eastus # create a resource group
Write-Host Resource group name $resourceGroupName

$vmParams = @{
  ResourceGroupName = $resourceGroupName
  Name = 'PartnerIdTest1'
  Location = 'eastus'
  ImageName = 'Win2016Datacenter'
  PublicIpAddressName = 'partnerIdTestPublicIp'
  Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword)
  OpenPorts = 3389
}
$newVM1 = New-AzVM @vmParams # create a test VM (should be tagged with the partner product guid)

Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $partnerID # fails with Get-AzResourceGroupDeployment : Deployment 'pid-3fd1a53d-3ef0-4111-8a66-211ed6470935' could not be found.

Nota: o GUID acima é aleatório - não real. Ele deve ser substituído por um GUID de parceiro registrado.

Ruslan Mukhamedov
fonte

Respostas:

2

Ao marcar recursos para atribuição durante a implantação, não há nada visível no próprio recurso que indique a associação, é uma implementação interna.

Se seu objetivo é verificar se o código que você escreveu está funcionando corretamente (para que o recurso seja atribuído corretamente), não há como fazer isso externamente no método UserAgent - só podemos fazê-lo internamente. Você pode verificar a implantação de um modelo usando o script no documento ao qual você vinculou, mas isso só funcionará para implantações de modelos, chamadas de API (TF, SDK etc.).

Você não verá nada no Portal do Parceiro, a menos que 1) o GUID esteja registrado e 2) haja uso faturável para o recurso.

Tudo isso dito - dei uma olhada rápida nos logs e vejo alguns recursos provisionados com 3fd1a53d-3ef0-4111-8a66-211ed6470935 no userAgent.

Isso ajuda?

bmoore-msft
fonte
0

Este não é um exemplo prático e não se encaixa nos comentários.

A linha Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $partnerIDtenta procurar uma implementação com nome como $partnerIDno grupo de recursos, mas New-AzVM pode estar usando um nome como virtualmachine-<some_random_id>. Para usar o comando como você está tentando, a implantação deve ter o mesmo nome. Esse nome pode ser fornecido no modelo ARM ou usando o comando New-AzResourceGroupDeployment .

Não sei muito sobre a marcação de parceiros, mas o comando normalmente não funciona como se você estivesse tentando usá-lo.

Além disso, se o seu $productIDvalor permanecer o mesmo para várias implantações, mas o uso do mesmo nome para implantações substituirá as implantações anteriores (basicamente você perde apenas o histórico de implantação). Sugiro verificar o grupo de recursos no portal e obter o nome da implantação ou usar Get-AzResourceGroupDeployment sem Nameparâmetro para obter todas as implantações e encontrar a implantação relacionada conforme o tempo de implantação.

Gostaria também de salientar que você parece estar usando o processo da API do Resource Manager, mas a documentação indica o seguinte para o método de verificação -

Você pode usar o script para verificar se o GUID foi adicionado com êxito ao seu modelo do Resource Manager. O script não se aplica às implantações da API do Resource Manager ou do Terraform.

Seu código pode estar funcionando, mas não vejo um método de verificação claro durante o uso do método User-Agent. (Provavelmente, verifique os relatórios no painel do Partner Center Analyze conforme a documentação?). Como os modelos ARM parecem ter um método de verificação, você pode tentar usá-lo.

stackoverflowusrone
fonte
O método com agente do usuário é sugerido no artigo: Marcar uma implantação usando o Azure PowerShell Se você implantar recursos pelo Azure PowerShell, anexe seu GUID usando o seguinte método: PowerShell Copy [Microsoft.Azure.Common.Authentication.AzureSession]: : ClientFactory.AddUserAgent ("pid-eb7927c8-dd66-43e1-b0cf-c346a422063
Ruslan Mukhamedov
Sim, vi isso, mas não vejo um método de verificação claro ao usar o método User-Agent mencionado na documentação. Se você já conhece um método de verificação, sugiro que você o use. A Get-AzResourceGroupDeploymentespera de comando que você tenha escrito em código a falhar, desde que você está tentando obter uma implantação com nome como o seu productID, sem criar primeiro.
stackoverflowusrone
Tente verificar o seu relatório conforme mencionado no mesmo artigo e veja se os resultados pretendidos estão presentes.- docs.microsoft.com/en-us/azure/marketplace/…
stackoverflowusrone