Estou tentando atribuir as tags ao grupo de recursos durante a implantação. Também uso o arquivo ini onde tenho minhas variáveis definidas.
Esta é a minha duas funções que lê o arquivo ini e cria o grupo Resoure
function Get-IniContent ($filePath)
{
$ini = @{}
switch -regex -file $FilePath
{
"^\[(.+)\]" # Section
{
$section = $matches[1]
$ini[$section] = @{}
$CommentCount = 0
}
"^(;.*)$" # Comment
{
$value = $matches[1]
$CommentCount = $CommentCount + 1
$name = "Comment" + $CommentCount
$ini[$section][$name] = $value
}
"(.+?)\s*=(.*)" # Key
{
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
return $ini
}
function Create-ResourceGroup {
param (
[string] $rgName,
[string] $saName,
[hashtable] $tags
)
az group create --name $rgName --location "westeurope" --tags $tags
}
E eu tenho o arquivo separado onde chamo essa função conforme abaixo:
. ".\functions.ps1"
# Get variables from the INI file
$iniFilePath = "../configuration/variables.ini"
$iniContent = Get-IniContent $iniFilePath
# Get today's date
$today = Get-Date -Format yyyy-MM-dd
$trainerName = $iniContent["project"]["trainer"]
$projectName = $iniContent["project"]["name"]
$tags = @{
"CreationDate" = $today
"Trainer" = $trainerName
"Project" = $projectName
}
# Iterate over the trainees section
foreach ($key in $iniContent["trainees"].Keys) {
# Get the trainee name
$traineeName = $iniContent["trainees"][$key]
$names = $traineeName -split ' '
$lastname = ($traineeName -split ' ')[1].Substring(0, [Math]::Min(5, $traineeName.IndexOf(" "))).ToLower()
# RG name
$resourceGroupName = "rg-academy-databricks-$lastname"
# SA name
$storageName = "stacademy$lastname"
# DB name
$databricksName = "dbs-academy-course-$lastname-001"
# Call function to create resources
Create-ResourceGroup -rgName $resourceGroupName -saName $storageName -tags $tags
}
o código não falha, mas as tags que defini não são passadas; em vez disso, vejo System.Collections.Hashtable: como mostra a imagem abaixo. Eu tentei respingar e substituí, --tags $tags
mas --tags @tags
ocorreu o erroMissing an argument for parameter 'tags'
A sintaxe CLI correta é
az group create ... --tags tag1=value1 tag2=value2
, então você desejará extrair os pares de valores-chave individuais e transformar cada um deles em uma string no formatokey=value
: