アプリケーション証明書の Service Fabric クラスターへの追加
このサンプル スクリプトでは、Key Vault に証明書を作成して、クラスターが実行されている仮想マシン スケール セットのいずれかにデプロイする方法について説明します。 このシナリオは、Service Fabric を直接使用しませんが、Key Vault と仮想マシン スケール セットに依存します。
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
必要に応じて、Azure PowerShell ガイドの手順に従って Azure PowerShell をインストールし、Connect-AzAccount
を実行して、Azure との接続を作成します。
Key Vault に証明書を作成する
$VaultName = ""
$CertName = ""
$SubjectName = "CN="
$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy
あるいは既存の証明書を Key Vault にアップロードする
$VaultName= ""
$CertName= ""
$CertPassword= ""
$PathToPFX= ""
$bytes = [System.IO.File]::ReadAllBytes($PathToPFX)
$base64 = [System.Convert]::ToBase64String($bytes)
$jsonBlob = @{
data = $base64
dataType = 'pfx'
password = $CertPassword
} | ConvertTo-Json
$contentbytes = [System.Text.Encoding]::UTF8.GetBytes($jsonBlob)
$content = [System.Convert]::ToBase64String($contentbytes)
$SecretValue = ConvertTo-SecureString -String $content -AsPlainText -Force
# Upload the certificate to the key vault as a secret
$Secret = Set-AzKeyVaultSecret -VaultName $VaultName -Name $CertName -SecretValue $SecretValue
証明書を使用して仮想マシン スケール セットのプロファイルを更新する
$ResourceGroupName = ""
$VMSSName = ""
$CertStore = "My" # Update this with the store you want your certificate placed in, this is LocalMachine\My
# If you have added your certificate to the keyvault certificates, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName).SecretId -CertificateStore $CertStore
# Otherwise, if you have added your certificate to the keyvault secrets, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultSecret -VaultName $VaultName -Name $CertName).Id -CertificateStore $CertStore
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMSSName
# If this KeyVault is already known by the virtual machine scale set, for example if the cluster certificate is deployed from this keyvault, use
$VMSS.virtualmachineprofile.osProfile.secrets[0].vaultCertificates.Add($CertConfig)
# Otherwise use
$VMSS = Add-AzVmssSecret -VirtualMachineScaleSet $VMSS -SourceVaultId (Get-AzKeyVault -VaultName $VaultName).ResourceId -VaultCertificate $CertConfig
仮想マシン スケール セットを更新する
Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName
クラスター内の複数のノードの種類に証明書を配置する場合は、このスクリプトの 2 番目と 3 番目の部分を、証明書を保持する必要があるノードの種類ごとに繰り返す必要があります。
スクリプトの説明
このスクリプトでは以下のコマンドを使用します。表内の各コマンドは、それぞれのドキュメントにリンクされています。
command | Notes |
---|---|
New-AzKeyVaultCertificatePolicy | 証明書を表すインメモリ ポリシーを作成します |
Add-AzKeyVaultCertificate | ポリシーをキー コンテナーの証明書にデプロイします |
Set-AzKeyVaultSecret | ポリシーをキー コンテナーのシークレットにデプロイします |
New-AzVmssVaultCertificateConfig | VM 内の証明書を表すインメモリ構成を作成します |
Get-AzVmss | |
Add-AzVmssSecret | 仮想マシン スケール セットのインメモリ定義に証明書を追加します |
Update-AzVmss | 仮想マシン スケール セットの新しい定義をデプロイします |
次のステップ
Azure PowerShell モジュールの詳細については、Azure PowerShell のドキュメントを参照してください。
その他の Azure Service Fabric 用 Azure PowerShell サンプルは、Azure PowerShell サンプルのページにあります。