Einführung in DSC, Teil 2

Nachdem einige Zeit verstrichen ist, seit ich das letzte Mal zum bloggen kam, haben sich auch ein paar Fragen zu meinem letzten Blogartikel – “DSC - Einführung in Desired State Configuration” ergeben, und ich wollte ja eh noch einen zweiten Teil schreiben. Here we go…

Kann ich den Ordnernamen ändern, in dem die Konfiguration liegt?

Standardmäßig heißt der Ordner ja “windows-powershell-dsc”. Verwendet man diesen Namen, braucht man keine weiteren Parameter anzugeben. Möchten man den Namen ändern, dann geht das natürlich, man muss aber den Parameter “-ContainerName” hinzufügen, und zwar immer, sowohl beim Speichern der Konfigurationen als auch beim Zuweisen. Das Kommando, um die Konfiguration nach Azure zu laden, lautet also

Publish-AzureVMDscConfiguration -ConfigurationPath C:\test\iisinstall.ps1 –Containername soheissterjetzt

Kann ich den Storage Context angeben, in dem der Ordner für die Konfiguration liegt?

Auch das geht. Normalerweise landet der Ordner (windows-powershell-dsc oder wie auch immer er nach dem letzten Hinweis jetzt heißt) im Standard Storage Account (wie man das setzt, hab ich im letzten Artikel beschrieben). Man kann natürlich vor dem Ablegen den Standard Storage Account auf einen anderen Storage Context umsetzen und dann die gleichen Befehle verwenden, oder man gibt mittels “-StorageContext” direkt einen anderen als den Standard Storage Account an. Das würde ich nebenbei gesagt auch empfehlen, nichts ist zeitaufwändiger, als zu grübeln, warum die aktuelle Konfiguration nicht im erwarteten Ordner erscheint, nur weil man kurz vorher den Standard Storage Account testweise geändert hatte (höre ich da hämischen Lachen? Abwarten…). Wie man den Storage Context erhält, geht eigentlich ganz einfach, wenn man den Namen des Storages weiß:

$storageAccountKey = Get-AzureStorageKey –StorageAccountName <storageAccountName>
$storageContext = New-AzureStorageContext -StorageAccountKey $storageAccountKey.Primary -StorageAccountName $storageAccountKey.StorageAccountName

Dann muss man beim Publish-Befehlt nur noch anhängen “–StorageContext $storageContext” .

Kann ich einen beliebigen Storage Account nehmen?

Ja, eigentlich schon, er muss nur innerhalb der Subscription erreichbar sein.

Hast du ein Beispiel für einen anderen Storage Context und Ordnernamen?

Auch das hab ich:

$context=”dsc-beispiele”
$container=”ordner1”
$storageAccountKey = Get-AzureStorageKey –StorageAccountName $context
$storageContext = New-AzureStorageContext -StorageAccountKey $storageAccountKey.Primary -StorageAccountName $storageAccountKey.StorageAccountName
publish-azureVMDscConfiguration -ConfigurationPath C:\test\iisinstall.ps1 -ContainerName $container -StorageContext $storageContext –force

Kann ich die Konfiguration auch beim Anlegen einer VM verwenden?

Ja, das geht. Zuerst wie gewohnt mit “New-AzureVMConfig” und “Add-AzureProvisioningConfig” usw.  eine VM voranlegen, und dann VOR dem abschließenden “New-AzureVM” noch die DSC Erweiterung reinschmuggeln:

$vm = New-AzureVMConfig -Name "dsctest1" -InstanceSize Small -ImageName "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201407.01-en.us-127GB.vhd"
$vm = Add-AzureProvisioningConfig -VM $vm -Windows -AdminUsername "admin_account" -Password "GanzGeheim!"
$vm = Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive "IISInstall.ps1.zip" -ConfigurationName "IISInstall"
New-AzureVM -VM $vm -Location "West Europe" -ServiceName "dsctest1-svc" -WaitForBoot

Damit wird gleich beim Erstellen der VM eine entsprechende Konfiguration zugewiesen.

 

So, ich hoffe, ich habe alle Fragen beantwortet, und kann nur empfehlen, etwas damit herum zu spielen. Viele andere Lösungen in diesem Bereich setzen auf DSC auf oder funktionieren zumindest nach einem ähnlichen Prinzip, siehe Puppet, Chef, etc.