0

我在 octopus 中有项目,这些项目部署了各种基础架构,包括 azure arm 模板,一些模板需要 Azure Key Vault 的密码,有没有办法自动化?

4

1 回答 1

0

当然,只需使用 powershell,这样的东西就可以工作(假设您已通过足够的权限认证为 azure):

$certPassword = (Get-AzureKeyVaultSecret -VaultName vaultname -Name passwordsecretName).SecretValueText
$certBase64 = (Get-AzureKeyVaultSecret -VaultName vaultname -Name base64secretName).SecretValueText

$body = @{
    Name            = $certName
    CertificateData = @{
        HasValue = "True"
        NewValue = $certBase64
    }
    Password        = @{
        NewValue = $certPassword
    }
}

然后你只需调用 octopus api 即可:

$datota = @{
    Uri         = $octopus_uri + "/api/certificates/" + '?skip=0&take=2147483647'
    Headers     = @{ "X-Octopus-ApiKey" = your_api_key }
    ErrorAction = "Stop"
    Body        = $body | ConvertTo-Json -Depth 4 -Compress
    Method      = "Post
}

Invoke-RestMethod @datota

如果您将证书存储为证书,而不是 base64 编码的字符串,则必须更聪明一点。但想法是一样的

附言。如果您想将它们放入变量集中,您只需要使用稍微不同的休息调用。pps。另一种选择,只需使用 powershell 脚本部署 arm 模板并让 powershell 脚本检索 KV 值并将其作为参数传递给模板

于 2019-01-10T12:16:09.830 回答