@@ -76,30 +76,32 @@ function Test-SetAzureRmVMSqlServerAKVExtension
76
76
77
77
# Do actual changes and work here
78
78
79
- $extensionName = " Microsoft.SqlServer.Management.SqlIaaSAgent " ;
79
+ $extensionName = " SqlIaaSExtension " ;
80
80
81
81
# 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM.
82
82
83
83
$securepfxpwd = ConvertTo-SecureString –String " Amu6y/RzJcc7JBzdAdRVv6mk=" –AsPlainText –Force;
84
- $aps_akv = New-AzureVMSqlServerKeyVaultCredentialConfig - ResourceGroupName $rgname - Enable - CredentialName " CredentialTesting" - AzureKeyVaultUrl " https://Testkeyvault.vault.azure.net/" - ServicePrincipalName " 0326921f-bf005595337c" - ServicePrincipalSecret $securepfxpwd ;
84
+ $aps_akv = New-AzureRmVMSqlServerKeyVaultCredentialConfig - ResourceGroupName $rgname - Enable - CredentialName " CredentialTesting" - AzureKeyVaultUrl " https://Testkeyvault.vault.azure.net/" - ServicePrincipalName " 0326921f-bf005595337c" - ServicePrincipalSecret $securepfxpwd ;
85
85
Set-AzureRmVMSqlServerExtension - KeyVaultCredentialSettings $aps_akv - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose;
86
86
87
87
# 2) Calls Get-AzureRmVMSqlServerExtension cmdlet to check the status of the extension installation.
88
88
$extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
89
89
90
90
# 3) Verifies settings are correct given input
91
91
92
- Assert-AreEqual $extension.KeyVaultCredentialSettings.CredentialName " CredentialTesting" ;
92
+ Assert-AreEqual $extension.KeyVaultCredentialSettings.Credentials.Count 1 ;
93
+ Assert-AreEqual $extension.KeyVaultCredentialSettings.Credentials [0 ].CredentialName " CredentialTesting"
93
94
94
95
# 4) Update extension values
95
96
96
- $aps_akv = New-AzureVMSqlServerKeyVaultCredentialConfig - ResourceGroupName $rgname - Enable - CredentialName " CredentialTest" - AzureKeyVaultUrl " https://Testkeyvault.vault.azure.net/" - ServicePrincipalName " 0326921f-82af-4ab3-9d46-bf005595337c" - ServicePrincipalSecret $securepfxpwd ;
97
+ $aps_akv = New-AzureRmVMSqlServerKeyVaultCredentialConfig - ResourceGroupName $rgname - Enable - CredentialName " CredentialTest" - AzureKeyVaultUrl " https://Testkeyvault.vault.azure.net/" - ServicePrincipalName " 0326921f-82af-4ab3-9d46-bf005595337c" - ServicePrincipalSecret $securepfxpwd ;
97
98
Set-AzureRmVMSqlServerExtension - KeyVaultCredentialSettings $aps_akv - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose;
98
99
99
100
# 5) Verify changes
100
101
$extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
101
-
102
- Assert-AreEqual $extension.KeyVaultCredentialSettings.CredentialName " CredentialTest"
102
+
103
+ Assert-AreEqual $extension.KeyVaultCredentialSettings.Credentials.Count 2 ;
104
+ Assert-AreEqual $extension.KeyVaultCredentialSettings.Credentials [1 ].CredentialName " CredentialTest"
103
105
104
106
# 6) Test with correct Name and Version
105
107
@@ -183,11 +185,131 @@ function Test-SetAzureRmVMSqlServerExtension
183
185
184
186
# Do actual changes and work here
185
187
188
+ $extensionName = " SqlIaaSExtension" ;
189
+
190
+ # 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM, with auto patching and auto backup settings.
191
+ $aps = New-AzureRmVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Thursday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
192
+ $storageBlobUrl = " https://$stoname .blob.core.windows.net" ;
193
+ $storageKey = (Get-AzureRmStorageAccountKey - ResourceGroupName $rgname - Name $stoname ).Key1;
194
+ $storageKeyAsSecureString = ConvertTo-SecureString - String $storageKey - AsPlainText - Force;
195
+ $abs = New-AzureRmVMSqlServerAutoBackupConfig - Enable - RetentionPeriodInDays 5 - ResourceGroupName $rgname - StorageUri $storageBlobUrl - StorageKey $storageKeyAsSecureString
196
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
197
+
198
+ # 2) Calls Get-AzureRmVMSqlServerExtension cmdlet to check the status of the extension installation.
199
+ $extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
200
+
201
+ # 3) Verifies settings are correct given input
202
+ Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek " Thursday"
203
+ Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowStartingHour 20
204
+ Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowDuration 120
205
+ Assert-AreEqual $extension.AutoPatchingSettings.PatchCategory " Important"
206
+
207
+ Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 5
208
+ Assert-AreEqual $extension.AutoBackupSettings.Enable $true
209
+
210
+ # 4) Update extension values
211
+ $aps = New-AzureRmVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Monday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
212
+ $abs = New-AzureRmVMSqlServerAutoBackupConfig - Enable - RetentionPeriodInDays 10 - ResourceGroupName $rgname - StorageUri $storageBlobUrl - StorageKey $storageKeyAsSecureString
213
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
214
+
215
+ # 5) Verify changes
216
+
217
+ $extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
218
+ Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek " Monday"
219
+ Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 10
220
+
221
+ # 6) Test with correct Name and Version
222
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.2"
223
+
224
+ # 7) Test with correct Name and incorrect Version
225
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.*"
226
+ }
227
+ finally
228
+ {
229
+ # Cleanup
230
+ if (Get-AzureRmResourceGroup - Name $rgname - Location $loc )
231
+ {
232
+ # Remove-AzureRmResourceGroup -Name $rgname -Force;
233
+ }
234
+ }
235
+ }
236
+
237
+ # Test setting up VM with Sql Server 2016 image. (Includes testing for AutoBackup V2)
238
+ function Test-SetAzureRmVMSqlServerExtensionWith2016Image
239
+ {
240
+ Set-StrictMode - Version latest; $ErrorActionPreference = ' Stop'
241
+
242
+ # Setup
243
+ $rgname = Get-ComputeTestResourceName
244
+ $loc = Get-ComputeVMLocation
245
+
246
+ try
247
+ {
248
+ # Common
249
+ New-AzureRmResourceGroup - Name $rgname - Location $loc - Force;
250
+
251
+ # VM Profile & Hardware
252
+ $vmsize = ' Standard_A2' ;
253
+ $vmname = ' vm' + $rgname ;
254
+ $p = New-AzureRmVMConfig - VMName $vmname - VMSize $vmsize ;
255
+ Assert-AreEqual $p.HardwareProfile.VmSize $vmsize ;
256
+
257
+ # NRP
258
+ $subnet = New-AzureRmVirtualNetworkSubnetConfig - Name (' subnet' + $rgname ) - AddressPrefix " 10.0.0.0/24" ;
259
+ $vnet = New-AzureRmVirtualNetwork - Force - Name (' vnet' + $rgname ) - ResourceGroupName $rgname - Location $loc - AddressPrefix " 10.0.0.0/16" - Subnet $subnet ;
260
+ $vnet = Get-AzureRmVirtualNetwork - Name (' vnet' + $rgname ) - ResourceGroupName $rgname ;
261
+ $subnetId = $vnet.Subnets [0 ].Id;
262
+ $pubip = New-AzureRmPublicIpAddress - Force - Name (' pubip' + $rgname ) - ResourceGroupName $rgname - Location $loc - AllocationMethod Dynamic - DomainNameLabel (' pubip' + $rgname );
263
+ $pubip = Get-AzureRmPublicIpAddress - Name (' pubip' + $rgname ) - ResourceGroupName $rgname ;
264
+ $pubipId = $pubip.Id ;
265
+ $nic = New-AzureRmNetworkInterface - Force - Name (' nic' + $rgname ) - ResourceGroupName $rgname - Location $loc - SubnetId $subnetId - PublicIpAddressId $pubip.Id ;
266
+ $nic = Get-AzureRmNetworkInterface - Name (' nic' + $rgname ) - ResourceGroupName $rgname ;
267
+ $nicId = $nic.Id ;
268
+
269
+ $p = Add-AzureRmVMNetworkInterface - VM $p - Id $nicId ;
270
+ Assert-AreEqual $p.NetworkProfile.NetworkInterfaces.Count 1 ;
271
+ Assert-AreEqual $p.NetworkProfile.NetworkInterfaces [0 ].Id $nicId ;
272
+
273
+ # Storage Account
274
+ $stoname = ' sto' + $rgname ;
275
+ $stotype = ' Standard_GRS' ;
276
+ New-AzureRmStorageAccount - ResourceGroupName $rgname - Name $stoname - Location $loc - Type $stotype ;
277
+ Retry- IfException { $global :stoaccount = Get-AzureRmStorageAccount - ResourceGroupName $rgname - Name $stoname ; }
278
+
279
+ $osDiskName = ' osDisk' ;
280
+ $osDiskCaching = ' ReadWrite' ;
281
+ $osDiskVhdUri = " https://$stoname .blob.core.windows.net/test/os.vhd" ;
282
+ $dataDiskVhdUri1 = " https://$stoname .blob.core.windows.net/test/data1.vhd" ;
283
+
284
+ $p = Set-AzureRmVMOSDisk - VM $p - Name $osDiskName - VhdUri $osDiskVhdUri - Caching $osDiskCaching - CreateOption FromImage;
285
+ $p = Add-AzureRmVMDataDisk - VM $p - Name ' testDataDisk1' - Caching ' ReadOnly' - DiskSizeInGB 10 - Lun 1 - VhdUri $dataDiskVhdUri1 - CreateOption Empty;
286
+
287
+ # OS & Image
288
+ $user = " localadmin" ;
289
+ $password = $PLACEHOLDER ;
290
+ $securePassword = ConvertTo-SecureString $password - AsPlainText - Force;
291
+ $cred = New-Object System.Management.Automation.PSCredential ($user , $securePassword );
292
+ $computerName = ' test' ;
293
+ $vhdContainer = " https://$stoname .blob.core.windows.net/test" ;
294
+
295
+ $p = Set-AzureRmVMOperatingSystem - VM $p - Windows - ComputerName $computerName - Credential $cred - ProvisionVMAgent;
296
+ $p = Set-AzureRmVMSourceImage - VM $p - PublisherName MicrosoftSQLServer - Offer SQL2016- WS2012R2 - Skus Enterprise - Version " latest"
297
+
298
+ # Virtual Machine
299
+ New-AzureRmVM - ResourceGroupName $rgname - Location $loc - VM $p ;
300
+
301
+ # Do actual changes and work here
302
+
186
303
$extensionName = " Microsoft.SqlServer.Management.SqlIaaSAgent" ;
187
304
188
- # 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM.
189
- $aps = New-AzureVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Thursday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
190
- Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
305
+ # 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM, with auto patching and auto backup settings.
306
+ $aps = New-AzureRmVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Thursday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
307
+ $storageBlobUrl = " https://$stoname .blob.core.windows.net" ;
308
+ $storageKey = (Get-AzureRmStorageAccountKey - ResourceGroupName $rgname - Name $stoname ).Key1;
309
+ $storageKeyAsSecureString = ConvertTo-SecureString - String $storageKey - AsPlainText - Force;
310
+ $abs = New-AzureRmVMSqlServerAutoBackupConfig - Enable - RetentionPeriodInDays 5 - ResourceGroupName $rgname - StorageUri $storageBlobUrl - StorageKey $storageKeyAsSecureString `
311
+ - BackupScheduleType Manual - BackupSystemDbs - FullBackupStartHour 10 - FullBackupWindowInHours 5 - FullBackupFrequency Daily - LogBackupFrequencyInMinutes 30
312
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
191
313
192
314
# 2) Calls Get-AzureRmVMSqlServerExtension cmdlet to check the status of the extension installation.
193
315
$extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
@@ -198,19 +320,33 @@ function Test-SetAzureRmVMSqlServerExtension
198
320
Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowDuration 120
199
321
Assert-AreEqual $extension.AutoPatchingSettings.PatchCategory " Important"
200
322
323
+ Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 5
324
+ Assert-AreEqual $extension.AutoBackupSettings.Enable $true
325
+ Assert-AreEqual $extension.AutoBackupSettings.BackupScheduleType " Manual"
326
+ Assert-AreEqual $extension.AutoBackupSettings.FullBackupFrequency " Daily"
327
+ Assert-AreEqual $extension.AutoBackupSettings.BackupSystemDbs $true
328
+ Assert-AreEqual $extension.AutoBackupSettings.FullBackupStartTime 10
329
+ Assert-AreEqual $extension.AutoBackupSettings.FullBackupWindowHours 5
330
+ Assert-AreEqual $extension.AutoBackupSettings.LogBackupFrequency 30
331
+
201
332
# 4) Update extension values
202
- $aps = New-AzureVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Monday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
203
- Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
333
+ $aps = New-AzureRmVMSqlServerAutoPatchingConfig - Enable - DayOfWeek " Monday" - MaintenanceWindowStartingHour 20 - MaintenanceWindowDuration 120 - PatchCategory " Important"
334
+ $abs = New-AzureRmVMSqlServerAutoBackupConfig - Enable - RetentionPeriodInDays 10 - ResourceGroupName $rgname - StorageUri $storageBlobUrl `
335
+ - StorageKey $storageKeyAsSecureString - BackupScheduleType Automated
336
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmname - Version " 1.2" - Verbose - Name $extensionName ;
204
337
205
338
# 5) Verify changes
206
339
$extension = Get-AzureRmVMSqlServerExtension - ResourceGroupName $rgname - VmName $vmName - Name $extensionName ;
207
340
Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek " Monday"
341
+ Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 10
342
+ Assert-AreEqual $extension.AutoBackupSettings.Enable $true
343
+ Assert-AreEqual $extension.AutoBackupSettings.BackupScheduleType " Automated"
208
344
209
345
# 6) Test with correct Name and Version
210
- Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.2"
346
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.2"
211
347
212
348
# 7) Test with correct Name and incorrect Version
213
- Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.*"
349
+ Set-AzureRmVMSqlServerExtension - AutoPatchingSettings $aps - AutoBackupSettings $abs - ResourceGroupName $rgname - VMName $vmName - Name $extensionName - Version " 1.*"
214
350
}
215
351
finally
216
352
{
0 commit comments