我如何从Azure密钥库中读取机密并将其放入章鱼部署变量中

时间:2019-01-10 12:08:21

标签: azure octopus-deploy azure-keyvault octopus

我在octopus中有一些项目,这些项目部署了各种基础结构,包括天蓝色的手臂模板,其中一些模板需要Azure Key Vault的密码,有没有办法使它自动化?

1 个答案:

答案 0 :(得分:0)

确保,只需使用powershell,这样的事情就可以工作(假设您已通过身份验证以具有足够的权限获得天蓝色):

$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
    }
}

然后您只需调用章鱼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编码的字符串,则必须更加聪明。但想法是一样的

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