Пользовательские плитки портала Azure - плитка уценки - PullRequest
0 голосов
/ 21 января 2019

Можно ли отображать пользовательскую информацию в лазурных панелях?Я искал, как добавить пользовательский контент в Azure Dashboards, но ничего не нашел.Единственной вещью, которая была закрыта, была плитка уценки, которая позволяет отображать html.

1 Ответ

0 голосов
/ 21 января 2019

Имея это в виду и после долгих поисков, я нашел решение:

В основном нам потребовался пользовательский тайл, отображающий данные, полученные из нашего REST API.

1.Создайте новую пустую плитку 'Markdown' на новой или существующей панели инструментов, присвойте ей 'Title'

2.Поделиться приборной панелью

3.Перейдите ко всем службам, Фильтруйте по «инструментальным панелям» в фильтре ResourceGroup - Нажмите на панель управления, содержащую плитку «Уценка» - Запишите «RESOURCE ID»

В нашем сценарии мыиспользовали модули Runbook Azure Automation.В этом сценарии мы использовали REST API Azure Resource Manager.

4.Создайте новый RunBook [Powershell Runbook]

Следующие шаги касаются следующего: - Войдите в ResourceManagerAPI - Получите ресурс Azure по идентификатору [Код ресурса выше] - Обновите ресурс Azure по идентификатору [РесурсИдентификатор выше]

Прежде чем мы продолжим, нам нужно получить учетные данные наших клиентов.Для этого: - Нажмите Cloud Shell в строке меню портала - Введите 'az' - Введите 'az ad sp create-for-rpac -n "runbooks"' // runbooks - это просто имя, не стесняйтесь вводить другоестрока - приведенная выше команда должна перечислить необходимые учетные данные.В случае возникновения ошибки обратитесь к администратору Azure и запустите ее из своей учетной записи.

5.В пустой runbook powershell добавьте следующие 2 переменные:

$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"

6.Получение Access_Token [Переменные <> представляют значения, полученные из предыдущего шага]

#Get Bearer Token
$TenantId = '<Your tenantID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token

7.Получение DashboardResource по ResourceID:

#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json

8.Перебирая все плитки в приборной панели.Обратите внимание, что плитки не содержатся в массиве, поэтому вам может потребоваться увеличить / уменьшить длину цикла for.

#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{    
    $Part = $Parts | Select-Object -Property $i.toString()
    if($Part.$i)
    {   
        if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
        {   
            $Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
        }        
    }
    else
    {
        break
    }
}

9.Наконец, нам нужно обновить ресурс панели инструментов

#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue

Подвести итог:

$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"

#Get Bearer Token
$TenantId = '<Your subscriptionID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token

#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json

#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{    
    $Part = $Parts | Select-Object -Property $i.toString()
    if($Part.$i)
    {   
        if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
        {   
            $Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
        }        
    }
    else
    {
        break
    }
}

#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue

Заключение С этим новымСозданный Runbook теперь мы можем запланировать его запуск каждые 1 час.В нашем случае 1 час был слишком много.В следующей статье показано, как мы можем запланировать запуск Runbook каждую 1 минуту.

https://blogs.technet.microsoft.com/stefan_stranger/2017/06/21/azure-scheduler-schedule-your-runbooks-more-often-than-every-hour/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...