Сначала мы использовали Terraform для создания наших ресурсов вместе с правильной маркировкой. Но позже мы выяснили, что команда администраторов внесла некоторые изменения в ресурс вручную в рамках быстрых исправлений некоторых проблем и всего остального. В конце файл состояния терраформирования этих ресурсов не синхронизирован.
Теперь у нас есть требование обновить теги уже предоставленных ресурсов (используемых терраформ) с новыми дополнительными тегами к ним. Когда мы попытались добавить манифесты terraform с изменениями для тегов и выполнить план terraform, мы увидели, что некоторые ресурсы отображаются для замены, и нам не рекомендуется выполнять это .
Мы попытались вручную импортировать изменения, выполненные вручную из портала, в состояние терраформирования, чтобы мы могли применить изменения тегов из самого терраформирования. Но мы сталкиваемся с такими проблемами, как невозможность мгновенного обновления ресурсов с портала в файл состояния?
существует ли какой-либо автоматизированный способ пометить список ресурсов Azure в соответствии с тегами, указанными для каждого ресурса. и мы можем так легко обновить файл состояния?
Для этого можно использовать Update-AzTag Azure PowerShell для обновления или добавления новых тегов к уже существующим ресурсам в вашей подписке. У меня есть несколько ресурсов, помеченных как Key1:Value1
в моем клиенте, где я пытаюсь изменить их на SampleKey:SampleValue
. Ниже приведен сценарий, который помог мне обновить все теги в моем арендаторе.
$SubscriptionId = Get-AzSubscription -TenantId (Get-AzContext).Tenant
$replacedTags = @{"key1" = "value1"; "SampleKey" = "SampleValue";}
foreach($SubId in $SubscriptionId) {
$ResourceId = "/subscriptions/"+$SubId.Id
Update-AzTag -ResourceId $ResourceId -Tag $replacedTags -Operation Replace
}
РЕЗУЛЬТАТЫ
@Vowneee, вы можете использовать обновление тега az. В вашем случае вы можете использовать следующий скрипт az tag update --resource-id /subscriptions/<SubscriptionId> --operation replace --tags <Tag1> <Tag2>
.
@SwethaKandikonda предоставила сценарий, который можно использовать в Azure CLI. На основе его ответа я хочу сделать дополнительную информацию. Если вы хотите автоматизировать это с помощью конвейера azuredevops, вот пример конвейера YAML:
# Starter pipeline
trigger:
- master
pool:
vmImage: ubuntu-latest
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'your subscription'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: 'az tag update --resource-id /subscriptions/{ sub-id }/resourceGroups/{ rg }/providers/Microsoft.Storage/storageAccounts/{your saName} --operation replace --tags key1=value1 key3=value3'
Результат выполнения
Он автоматически пометит ресурс после успешного запуска конвейера.
но в azuredevops, как мы можем добавить разные теги с разными ресурсами в цикле? Это означает, что мы можем одновременно передавать разные списки тегов для разных списков ресурсов.
Возможно ли добиться этого с помощью команд оболочки Azure CLI, поскольку у нас есть только агенты на базе Linux. Мы пытаемся автоматизировать это с помощью пайплайнов azuredevops.