我已经使用 powershell 任务构建了一个管道,以在 Azure Key Vault 中创建新的机密。相同的密钥保管库与 Azure DevOps 变量组(管道/库/变量组)链接。
我已经手动添加了一些密钥,但我希望它能够添加新的密钥,这些密钥是我在管道部署期间在 Azure Key Vault 中创建的,也添加到变量组中。
我必须使用 REST API 吗? https://learn.microsoft.com/en-us/rest/api/azure/devops/distributedtask/variablegroups/add?view=azure-devops-rest-7.1
或者我可以使用 Powershell 或其他工具吗?
如果要将管道设置为自动将新密钥添加到变量组中,则需要在管道作业中调用以下 Azure DevOps REST API:
调用API“Variablegroups - Get”获取要更新的变量组的响应体(JSON)。从响应正文中,您可以看到它包含如下内容。
{
"name": "VarGroup",
"providerData": {
"serviceEndpointId": "<serviceEndpointId>",
"vault": "<Azure Key vault name>"
},
"type": "AzureKeyVault",
"variableGroupProjectReferences": [
{
"name": "VarGroup",
"projectReference": {
"id": "<project id>",
"name": "<project name>"
}
}
],
"variables": {
"<SecVar01>": {
"enabled": true,
"isReadOnly": false,
"isSecret": true
},
"<SecVar02>": {
"enabled": true,
"isReadOnly": false,
"isSecret": true
}
}
}
“
<SecVar01>
”和“<SecVar02>
”是已添加到变量组中的秘密的实际名称。
通过添加新密钥作为“
variables
”节点的成员来更新响应正文。例如,添加新秘密“<SecVar03>
”。
{
"name": "VarGroup",
"providerData": {
"serviceEndpointId": "<serviceEndpointId>",
"vault": "<Azure Key vault name>"
},
"type": "AzureKeyVault",
"variableGroupProjectReferences": [
{
"name": "VarGroup",
"projectReference": {
"id": "<project id>",
"name": "<project name>"
}
}
],
"variables": {
"<SecVar01>": {
"enabled": true,
"isReadOnly": false,
"isSecret": true
},
"<SecVar02>": {
"enabled": true,
"isReadOnly": false,
"isSecret": true
},
"<SecVar03>": {
"enabled": true,
"isReadOnly": false,
"isSecret": true
}
}
}
然后调用API“Variablegroups - Update”并将上面更新后的JSON正文作为该API的Request Body传递。一旦此 API 调用成功,新的密钥“
<SecVar03>
”就会添加到变量组中。