Развертывание сертификатов из хранилища ключей на виртуальную машину должно храниться как конкретный документ 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 может использовать его для установки сертификатов.
Затем в шаблоне 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 укажите конкретные сертификаты, которые вы хотите использовать.
"certificate": {
"thumbprint": "[parameters('clusterCertificateThumbPrint')]",
"x509StoreName": "My"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [{
"CertificateThumbprint": "[parameters('adminCertificateThumbPrint')]",
"IsAdmin": true
}],
Если это поможет, вот ссылка на мою попытку на github
person
jimpaine
schedule
24.10.2016