我正在尝试从Octopus Deploy在自动化过程中部署Azure Service Fabric Cluster。部署新集群的过程的一部分涉及创建Azure密钥库,并使用特定于该集群的证书和其他秘密填充它。
我有一个ARM模板来部署Key Vault,另一个模板来部署集群。我发现秘密(通常)可以作为ARM模板的一部分部署到Azure密钥库,但还没有找到任何关于当秘密是证书时如何做到这一点的信息。理想情况下,我希望创建特定于群集的证书并将其部署到Key Vault,作为该部署的一部分,以便可以在群集部署期间访问这些证书,但只需在配置Key Vault时部署证书就足够了。
发布于 2016-10-25 01:19:20
SF部署中使用的证书实际上是填充在KeyVault中的秘密中的base64编码证书。因此,如果您希望在SF部署中使用它们,那么您实际上应该创建一个秘密资源,而不是证书资源。
因此,听起来您已经拥有了所需的一切-只需在设置密钥库时将base64编码的blob放入秘密值。
有帮助吗?
发布于 2016-10-24 23:58:14
将证书从密钥库部署到虚拟机需要存储为特定的json文档,我没有在ARM模板中这样做,但在Powershell中我使用了以下内容:
$cert = Get-Content $certLocation -Encoding Byte;
$cert = [System.Convert]::ToBase64String($cert);
$json = @"
{
"data" : "$cert",
"dataType": "pfx",
"password": "$password"
}
"@
$package = [System.Text.Encoding]::UTF8.GetBytes($json);
$package = [System.Convert]::ToBase64String($package);
$secret = ConvertTo-SecureString -String $package -AsPlainText -Force;
从理论上讲,如果您可以这样做,然后将$secret值注入ARM模板中,那么您应该能够实现您想要做的事情。
请记住,此时的$password是计划文本,而不是安全字符串,因此Azure Compute可以使用它来安装证书。
然后,在集群ARM模板中,您可以在VMSS操作系统配置文件中引用证书和密钥库:
"osProfile": {
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"computernamePrefix": "[parameters('vmNodeType0Name')]",
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVault')]"
},
"vaultCertificates": [
{
"certificateStore": "My",
"certificateUrl": "[parameters('clusterCertificateUrl')]"
},
{
"certificateStore": "My",
"certificateUrl": "[parameters('adminCertificateUrl')]"
}
]
}
]
}
然后在同一个ARM模板中的Service Fabric Resource属性下引用您想要使用的特定证书。
"certificate": {
"thumbprint": "[parameters('clusterCertificateThumbPrint')]",
"x509StoreName": "My"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [{
"CertificateThumbprint": "[parameters('adminCertificateThumbPrint')]",
"IsAdmin": true
}],
如果有用,这里是我在github上尝试的link
https://stackoverflow.com/questions/40204302
复制相似问题