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