github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/builtin/providers/azurerm/resource_arm_virtual_machine_scale_set_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMVirtualMachineScaleSet_basicLinux(t *testing.T) { 14 ri := acctest.RandInt() 15 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSet_basicLinux, ri, ri, ri, ri, ri, ri, ri, ri) 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 20 Steps: []resource.TestStep{ 21 { 22 Config: config, 23 Check: resource.ComposeTestCheckFunc( 24 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 25 ), 26 }, 27 }, 28 }) 29 } 30 31 func TestAccAzureRMVirtualMachineScaleSet_basicLinux_disappears(t *testing.T) { 32 ri := acctest.RandInt() 33 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSet_basicLinux, ri, ri, ri, ri, ri, ri, ri, ri) 34 resource.Test(t, resource.TestCase{ 35 PreCheck: func() { testAccPreCheck(t) }, 36 Providers: testAccProviders, 37 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 38 Steps: []resource.TestStep{ 39 { 40 Config: config, 41 Check: resource.ComposeTestCheckFunc( 42 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 43 testCheckAzureRMVirtualMachineScaleSetDisappears("azurerm_virtual_machine_scale_set.test"), 44 ), 45 ExpectNonEmptyPlan: true, 46 }, 47 }, 48 }) 49 } 50 51 func TestAccAzureRMVirtualMachineScaleSet_loadBalancer(t *testing.T) { 52 ri := acctest.RandInt() 53 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSetLoadbalancerTemplate, ri, ri, ri, ri, ri, ri, ri) 54 resource.Test(t, resource.TestCase{ 55 PreCheck: func() { testAccPreCheck(t) }, 56 Providers: testAccProviders, 57 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 58 Steps: []resource.TestStep{ 59 { 60 Config: config, 61 Check: resource.ComposeTestCheckFunc( 62 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 63 testCheckAzureRMVirtualMachineScaleSetHasLoadbalancer("azurerm_virtual_machine_scale_set.test"), 64 ), 65 }, 66 }, 67 }) 68 } 69 70 func TestAccAzureRMVirtualMachineScaleSet_overprovision(t *testing.T) { 71 ri := acctest.RandInt() 72 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSetOverprovisionTemplate, ri, ri, ri, ri, ri, ri) 73 resource.Test(t, resource.TestCase{ 74 PreCheck: func() { testAccPreCheck(t) }, 75 Providers: testAccProviders, 76 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 77 Steps: []resource.TestStep{ 78 { 79 Config: config, 80 Check: resource.ComposeTestCheckFunc( 81 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 82 testCheckAzureRMVirtualMachineScaleSetOverprovision("azurerm_virtual_machine_scale_set.test"), 83 ), 84 }, 85 }, 86 }) 87 } 88 89 func TestAccAzureRMVirtualMachineScaleSet_extension(t *testing.T) { 90 ri := acctest.RandInt() 91 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSetExtensionTemplate, ri, ri, ri, ri, ri, ri) 92 resource.Test(t, resource.TestCase{ 93 PreCheck: func() { testAccPreCheck(t) }, 94 Providers: testAccProviders, 95 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 96 Steps: []resource.TestStep{ 97 { 98 Config: config, 99 Check: resource.ComposeTestCheckFunc( 100 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 101 testCheckAzureRMVirtualMachineScaleSetExtension("azurerm_virtual_machine_scale_set.test"), 102 ), 103 }, 104 }, 105 }) 106 } 107 108 func TestAccAzureRMVirtualMachineScaleSet_multipleExtensions(t *testing.T) { 109 ri := acctest.RandInt() 110 config := fmt.Sprintf(testAccAzureRMVirtualMachineScaleSetMultipleExtensionsTemplate, ri, ri, ri, ri, ri, ri) 111 resource.Test(t, resource.TestCase{ 112 PreCheck: func() { testAccPreCheck(t) }, 113 Providers: testAccProviders, 114 CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, 115 Steps: []resource.TestStep{ 116 { 117 Config: config, 118 Check: resource.ComposeTestCheckFunc( 119 testCheckAzureRMVirtualMachineScaleSetExists("azurerm_virtual_machine_scale_set.test"), 120 testCheckAzureRMVirtualMachineScaleSetExtension("azurerm_virtual_machine_scale_set.test"), 121 ), 122 }, 123 }, 124 }) 125 } 126 127 func testCheckAzureRMVirtualMachineScaleSetExists(name string) resource.TestCheckFunc { 128 return func(s *terraform.State) error { 129 // Ensure we have enough information in state to look up in API 130 rs, ok := s.RootModule().Resources[name] 131 if !ok { 132 return fmt.Errorf("Not found: %s", name) 133 } 134 135 name := rs.Primary.Attributes["name"] 136 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 137 if !hasResourceGroup { 138 return fmt.Errorf("Bad: no resource group found in state for virtual machine: scale set %s", name) 139 } 140 141 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 142 143 resp, err := conn.Get(resourceGroup, name) 144 if err != nil { 145 return fmt.Errorf("Bad: Get on vmScaleSetClient: %s", err) 146 } 147 148 if resp.StatusCode == http.StatusNotFound { 149 return fmt.Errorf("Bad: VirtualMachineScaleSet %q (resource group: %q) does not exist", name, resourceGroup) 150 } 151 152 return nil 153 } 154 } 155 156 func testCheckAzureRMVirtualMachineScaleSetDisappears(name string) resource.TestCheckFunc { 157 return func(s *terraform.State) error { 158 // Ensure we have enough information in state to look up in API 159 rs, ok := s.RootModule().Resources[name] 160 if !ok { 161 return fmt.Errorf("Not found: %s", name) 162 } 163 164 name := rs.Primary.Attributes["name"] 165 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 166 if !hasResourceGroup { 167 return fmt.Errorf("Bad: no resource group found in state for virtual machine: scale set %s", name) 168 } 169 170 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 171 172 _, err := conn.Delete(resourceGroup, name, make(chan struct{})) 173 if err != nil { 174 return fmt.Errorf("Bad: Delete on vmScaleSetClient: %s", err) 175 } 176 177 return nil 178 } 179 } 180 181 func testCheckAzureRMVirtualMachineScaleSetDestroy(s *terraform.State) error { 182 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 183 184 for _, rs := range s.RootModule().Resources { 185 if rs.Type != "azurerm_virtual_machine_scale_set" { 186 continue 187 } 188 189 name := rs.Primary.Attributes["name"] 190 resourceGroup := rs.Primary.Attributes["resource_group_name"] 191 192 resp, err := conn.Get(resourceGroup, name) 193 194 if err != nil { 195 return nil 196 } 197 198 if resp.StatusCode != http.StatusNotFound { 199 return fmt.Errorf("Virtual Machine Scale Set still exists:\n%#v", resp.VirtualMachineScaleSetProperties) 200 } 201 } 202 203 return nil 204 } 205 206 func testCheckAzureRMVirtualMachineScaleSetHasLoadbalancer(name string) resource.TestCheckFunc { 207 return func(s *terraform.State) error { 208 // Ensure we have enough information in state to look up in API 209 rs, ok := s.RootModule().Resources[name] 210 if !ok { 211 return fmt.Errorf("Not found: %s", name) 212 } 213 214 name := rs.Primary.Attributes["name"] 215 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 216 if !hasResourceGroup { 217 return fmt.Errorf("Bad: no resource group found in state for virtual machine: scale set %s", name) 218 } 219 220 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 221 resp, err := conn.Get(resourceGroup, name) 222 if err != nil { 223 return fmt.Errorf("Bad: Get on vmScaleSetClient: %s", err) 224 } 225 226 if resp.StatusCode == http.StatusNotFound { 227 return fmt.Errorf("Bad: VirtualMachineScaleSet %q (resource group: %q) does not exist", name, resourceGroup) 228 } 229 230 n := resp.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations 231 if n == nil || len(*n) == 0 { 232 return fmt.Errorf("Bad: Could not get network interface configurations for scale set %v", name) 233 } 234 235 ip := (*n)[0].IPConfigurations 236 if ip == nil || len(*ip) == 0 { 237 return fmt.Errorf("Bad: Could not get ip configurations for scale set %v", name) 238 } 239 240 pools := (*ip)[0].LoadBalancerBackendAddressPools 241 if pools == nil || len(*pools) == 0 { 242 return fmt.Errorf("Bad: Load balancer backend pools is empty for scale set %v", name) 243 } 244 245 return nil 246 } 247 } 248 249 func testCheckAzureRMVirtualMachineScaleSetOverprovision(name string) resource.TestCheckFunc { 250 return func(s *terraform.State) error { 251 // Ensure we have enough information in state to look up in API 252 rs, ok := s.RootModule().Resources[name] 253 if !ok { 254 return fmt.Errorf("Not found: %s", name) 255 } 256 257 name := rs.Primary.Attributes["name"] 258 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 259 if !hasResourceGroup { 260 return fmt.Errorf("Bad: no resource group found in state for virtual machine: scale set %s", name) 261 } 262 263 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 264 resp, err := conn.Get(resourceGroup, name) 265 if err != nil { 266 return fmt.Errorf("Bad: Get on vmScaleSetClient: %s", err) 267 } 268 269 if resp.StatusCode == http.StatusNotFound { 270 return fmt.Errorf("Bad: VirtualMachineScaleSet %q (resource group: %q) does not exist", name, resourceGroup) 271 } 272 273 if *resp.Overprovision { 274 return fmt.Errorf("Bad: Overprovision should have been false for scale set %v", name) 275 } 276 277 return nil 278 } 279 } 280 281 func testCheckAzureRMVirtualMachineScaleSetExtension(name string) resource.TestCheckFunc { 282 return func(s *terraform.State) error { 283 // Ensure we have enough information in state to look up in API 284 rs, ok := s.RootModule().Resources[name] 285 if !ok { 286 return fmt.Errorf("Not found: %s", name) 287 } 288 289 name := rs.Primary.Attributes["name"] 290 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 291 if !hasResourceGroup { 292 return fmt.Errorf("Bad: no resource group found in state for virtual machine: scale set %s", name) 293 } 294 295 conn := testAccProvider.Meta().(*ArmClient).vmScaleSetClient 296 resp, err := conn.Get(resourceGroup, name) 297 if err != nil { 298 return fmt.Errorf("Bad: Get on vmScaleSetClient: %s", err) 299 } 300 301 if resp.StatusCode == http.StatusNotFound { 302 return fmt.Errorf("Bad: VirtualMachineScaleSet %q (resource group: %q) does not exist", name, resourceGroup) 303 } 304 305 n := resp.VirtualMachineProfile.ExtensionProfile.Extensions 306 if n == nil || len(*n) == 0 { 307 return fmt.Errorf("Bad: Could not get extensions for scale set %v", name) 308 } 309 310 return nil 311 } 312 } 313 314 var testAccAzureRMVirtualMachineScaleSet_basicLinux = ` 315 resource "azurerm_resource_group" "test" { 316 name = "acctestRG-%d" 317 location = "West US" 318 } 319 320 resource "azurerm_virtual_network" "test" { 321 name = "acctvn-%d" 322 address_space = ["10.0.0.0/16"] 323 location = "West US" 324 resource_group_name = "${azurerm_resource_group.test.name}" 325 } 326 327 resource "azurerm_subnet" "test" { 328 name = "acctsub-%d" 329 resource_group_name = "${azurerm_resource_group.test.name}" 330 virtual_network_name = "${azurerm_virtual_network.test.name}" 331 address_prefix = "10.0.2.0/24" 332 } 333 334 resource "azurerm_network_interface" "test" { 335 name = "acctni-%d" 336 location = "West US" 337 resource_group_name = "${azurerm_resource_group.test.name}" 338 339 ip_configuration { 340 name = "testconfiguration1" 341 subnet_id = "${azurerm_subnet.test.id}" 342 private_ip_address_allocation = "dynamic" 343 } 344 } 345 346 resource "azurerm_storage_account" "test" { 347 name = "accsa%d" 348 resource_group_name = "${azurerm_resource_group.test.name}" 349 location = "westus" 350 account_type = "Standard_LRS" 351 352 tags { 353 environment = "staging" 354 } 355 } 356 357 resource "azurerm_storage_container" "test" { 358 name = "vhds" 359 resource_group_name = "${azurerm_resource_group.test.name}" 360 storage_account_name = "${azurerm_storage_account.test.name}" 361 container_access_type = "private" 362 } 363 364 resource "azurerm_virtual_machine_scale_set" "test" { 365 name = "acctvmss-%d" 366 location = "West US" 367 resource_group_name = "${azurerm_resource_group.test.name}" 368 upgrade_policy_mode = "Manual" 369 370 sku { 371 name = "Standard_A0" 372 tier = "Standard" 373 capacity = 2 374 } 375 376 os_profile { 377 computer_name_prefix = "testvm-%d" 378 admin_username = "myadmin" 379 admin_password = "Passwword1234" 380 } 381 382 network_profile { 383 name = "TestNetworkProfile-%d" 384 primary = true 385 ip_configuration { 386 name = "TestIPConfiguration" 387 subnet_id = "${azurerm_subnet.test.id}" 388 } 389 } 390 391 storage_profile_os_disk { 392 name = "osDiskProfile" 393 caching = "ReadWrite" 394 create_option = "FromImage" 395 vhd_containers = ["${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}"] 396 } 397 398 storage_profile_image_reference { 399 publisher = "Canonical" 400 offer = "UbuntuServer" 401 sku = "14.04.2-LTS" 402 version = "latest" 403 } 404 } 405 ` 406 407 var testAccAzureRMVirtualMachineScaleSetLoadbalancerTemplate = ` 408 resource "azurerm_resource_group" "test" { 409 name = "acctestrg-%d" 410 location = "southcentralus" 411 } 412 413 resource "azurerm_virtual_network" "test" { 414 name = "acctvn-%d" 415 address_space = ["10.0.0.0/16"] 416 location = "southcentralus" 417 resource_group_name = "${azurerm_resource_group.test.name}" 418 } 419 420 resource "azurerm_subnet" "test" { 421 name = "acctsub-%d" 422 resource_group_name = "${azurerm_resource_group.test.name}" 423 virtual_network_name = "${azurerm_virtual_network.test.name}" 424 address_prefix = "10.0.2.0/24" 425 } 426 427 resource "azurerm_storage_account" "test" { 428 name = "accsa%d" 429 resource_group_name = "${azurerm_resource_group.test.name}" 430 location = "southcentralus" 431 account_type = "Standard_LRS" 432 } 433 434 resource "azurerm_storage_container" "test" { 435 name = "vhds" 436 resource_group_name = "${azurerm_resource_group.test.name}" 437 storage_account_name = "${azurerm_storage_account.test.name}" 438 container_access_type = "private" 439 } 440 441 resource "azurerm_lb" "test" { 442 name = "acctestlb-%d" 443 location = "southcentralus" 444 resource_group_name = "${azurerm_resource_group.test.name}" 445 446 frontend_ip_configuration { 447 name = "default" 448 subnet_id = "${azurerm_subnet.test.id}" 449 private_ip_address_allocation = "Dynamic" 450 } 451 } 452 453 resource "azurerm_lb_backend_address_pool" "test" { 454 name = "test" 455 resource_group_name = "${azurerm_resource_group.test.name}" 456 location = "southcentralus" 457 loadbalancer_id = "${azurerm_lb.test.id}" 458 } 459 460 resource "azurerm_virtual_machine_scale_set" "test" { 461 name = "acctvmss-%d" 462 location = "southcentralus" 463 resource_group_name = "${azurerm_resource_group.test.name}" 464 upgrade_policy_mode = "Manual" 465 466 sku { 467 name = "Standard_A0" 468 tier = "Standard" 469 capacity = 1 470 } 471 472 os_profile { 473 computer_name_prefix = "testvm-%d" 474 admin_username = "myadmin" 475 admin_password = "Passwword1234" 476 } 477 478 network_profile { 479 name = "TestNetworkProfile" 480 primary = true 481 ip_configuration { 482 name = "TestIPConfiguration" 483 subnet_id = "${azurerm_subnet.test.id}" 484 load_balancer_backend_address_pool_ids = [ "${azurerm_lb_backend_address_pool.test.id}" ] 485 } 486 } 487 488 storage_profile_os_disk { 489 name = "os-disk" 490 caching = "ReadWrite" 491 create_option = "FromImage" 492 vhd_containers = [ "${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}" ] 493 } 494 495 storage_profile_image_reference { 496 publisher = "Canonical" 497 offer = "UbuntuServer" 498 sku = "14.04.2-LTS" 499 version = "latest" 500 } 501 } 502 ` 503 504 var testAccAzureRMVirtualMachineScaleSetOverprovisionTemplate = ` 505 resource "azurerm_resource_group" "test" { 506 name = "acctestrg-%d" 507 location = "southcentralus" 508 } 509 510 resource "azurerm_virtual_network" "test" { 511 name = "acctvn-%d" 512 address_space = ["10.0.0.0/16"] 513 location = "southcentralus" 514 resource_group_name = "${azurerm_resource_group.test.name}" 515 } 516 517 resource "azurerm_subnet" "test" { 518 name = "acctsub-%d" 519 resource_group_name = "${azurerm_resource_group.test.name}" 520 virtual_network_name = "${azurerm_virtual_network.test.name}" 521 address_prefix = "10.0.2.0/24" 522 } 523 524 resource "azurerm_storage_account" "test" { 525 name = "accsa%d" 526 resource_group_name = "${azurerm_resource_group.test.name}" 527 location = "southcentralus" 528 account_type = "Standard_LRS" 529 } 530 531 resource "azurerm_storage_container" "test" { 532 name = "vhds" 533 resource_group_name = "${azurerm_resource_group.test.name}" 534 storage_account_name = "${azurerm_storage_account.test.name}" 535 container_access_type = "private" 536 } 537 538 resource "azurerm_virtual_machine_scale_set" "test" { 539 name = "acctvmss-%d" 540 location = "southcentralus" 541 resource_group_name = "${azurerm_resource_group.test.name}" 542 upgrade_policy_mode = "Manual" 543 overprovision = false 544 545 sku { 546 name = "Standard_A0" 547 tier = "Standard" 548 capacity = 1 549 } 550 551 os_profile { 552 computer_name_prefix = "testvm-%d" 553 admin_username = "myadmin" 554 admin_password = "Passwword1234" 555 } 556 557 network_profile { 558 name = "TestNetworkProfile" 559 primary = true 560 ip_configuration { 561 name = "TestIPConfiguration" 562 subnet_id = "${azurerm_subnet.test.id}" 563 } 564 } 565 566 storage_profile_os_disk { 567 name = "os-disk" 568 caching = "ReadWrite" 569 create_option = "FromImage" 570 vhd_containers = [ "${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}" ] 571 } 572 573 storage_profile_image_reference { 574 publisher = "Canonical" 575 offer = "UbuntuServer" 576 sku = "14.04.2-LTS" 577 version = "latest" 578 } 579 } 580 ` 581 582 var testAccAzureRMVirtualMachineScaleSetExtensionTemplate = ` 583 resource "azurerm_resource_group" "test" { 584 name = "acctestrg-%d" 585 location = "southcentralus" 586 } 587 588 resource "azurerm_virtual_network" "test" { 589 name = "acctvn-%d" 590 address_space = ["10.0.0.0/16"] 591 location = "southcentralus" 592 resource_group_name = "${azurerm_resource_group.test.name}" 593 } 594 595 resource "azurerm_subnet" "test" { 596 name = "acctsub-%d" 597 resource_group_name = "${azurerm_resource_group.test.name}" 598 virtual_network_name = "${azurerm_virtual_network.test.name}" 599 address_prefix = "10.0.2.0/24" 600 } 601 602 resource "azurerm_storage_account" "test" { 603 name = "accsa%d" 604 resource_group_name = "${azurerm_resource_group.test.name}" 605 location = "southcentralus" 606 account_type = "Standard_LRS" 607 } 608 609 resource "azurerm_storage_container" "test" { 610 name = "vhds" 611 resource_group_name = "${azurerm_resource_group.test.name}" 612 storage_account_name = "${azurerm_storage_account.test.name}" 613 container_access_type = "private" 614 } 615 616 resource "azurerm_virtual_machine_scale_set" "test" { 617 name = "acctvmss-%d" 618 location = "southcentralus" 619 resource_group_name = "${azurerm_resource_group.test.name}" 620 upgrade_policy_mode = "Manual" 621 overprovision = false 622 623 sku { 624 name = "Standard_A0" 625 tier = "Standard" 626 capacity = 1 627 } 628 629 os_profile { 630 computer_name_prefix = "testvm-%d" 631 admin_username = "myadmin" 632 admin_password = "Passwword1234" 633 } 634 635 network_profile { 636 name = "TestNetworkProfile" 637 primary = true 638 ip_configuration { 639 name = "TestIPConfiguration" 640 subnet_id = "${azurerm_subnet.test.id}" 641 } 642 } 643 644 storage_profile_os_disk { 645 name = "os-disk" 646 caching = "ReadWrite" 647 create_option = "FromImage" 648 vhd_containers = [ "${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}" ] 649 } 650 651 storage_profile_image_reference { 652 publisher = "Canonical" 653 offer = "UbuntuServer" 654 sku = "14.04.2-LTS" 655 version = "latest" 656 } 657 658 extension { 659 name = "CustomScript" 660 publisher = "Microsoft.Azure.Extensions" 661 type = "CustomScript" 662 type_handler_version = "2.0" 663 auto_upgrade_minor_version = true 664 settings = <<SETTINGS 665 { 666 "commandToExecute": "echo $HOSTNAME" 667 } 668 SETTINGS 669 670 protected_settings = <<SETTINGS 671 { 672 "storageAccountName": "${azurerm_storage_account.test.name}", 673 "storageAccountKey": "${azurerm_storage_account.test.primary_access_key}" 674 } 675 SETTINGS 676 } 677 } 678 ` 679 680 var testAccAzureRMVirtualMachineScaleSetMultipleExtensionsTemplate = ` 681 resource "azurerm_resource_group" "test" { 682 name = "acctestrg-%d" 683 location = "southcentralus" 684 } 685 686 resource "azurerm_virtual_network" "test" { 687 name = "acctvn-%d" 688 address_space = ["10.0.0.0/16"] 689 location = "southcentralus" 690 resource_group_name = "${azurerm_resource_group.test.name}" 691 } 692 693 resource "azurerm_subnet" "test" { 694 name = "acctsub-%d" 695 resource_group_name = "${azurerm_resource_group.test.name}" 696 virtual_network_name = "${azurerm_virtual_network.test.name}" 697 address_prefix = "10.0.2.0/24" 698 } 699 700 resource "azurerm_storage_account" "test" { 701 name = "accsa%d" 702 resource_group_name = "${azurerm_resource_group.test.name}" 703 location = "southcentralus" 704 account_type = "Standard_LRS" 705 } 706 707 resource "azurerm_storage_container" "test" { 708 name = "vhds" 709 resource_group_name = "${azurerm_resource_group.test.name}" 710 storage_account_name = "${azurerm_storage_account.test.name}" 711 container_access_type = "private" 712 } 713 714 resource "azurerm_virtual_machine_scale_set" "test" { 715 name = "acctvmss-%d" 716 location = "southcentralus" 717 resource_group_name = "${azurerm_resource_group.test.name}" 718 upgrade_policy_mode = "Manual" 719 overprovision = false 720 721 sku { 722 name = "Standard_A0" 723 tier = "Standard" 724 capacity = 1 725 } 726 727 os_profile { 728 computer_name_prefix = "testvm-%d" 729 admin_username = "myadmin" 730 admin_password = "Passwword1234" 731 } 732 733 network_profile { 734 name = "TestNetworkProfile" 735 primary = true 736 ip_configuration { 737 name = "TestIPConfiguration" 738 subnet_id = "${azurerm_subnet.test.id}" 739 } 740 } 741 742 storage_profile_os_disk { 743 name = "os-disk" 744 caching = "ReadWrite" 745 create_option = "FromImage" 746 vhd_containers = [ "${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}" ] 747 } 748 749 storage_profile_image_reference { 750 publisher = "Canonical" 751 offer = "UbuntuServer" 752 sku = "14.04.2-LTS" 753 version = "latest" 754 } 755 756 extension { 757 name = "CustomScript" 758 publisher = "Microsoft.Azure.Extensions" 759 type = "CustomScript" 760 type_handler_version = "2.0" 761 auto_upgrade_minor_version = true 762 settings = <<SETTINGS 763 { 764 "commandToExecute": "echo $HOSTNAME" 765 } 766 SETTINGS 767 768 protected_settings = <<SETTINGS 769 { 770 "storageAccountName": "${azurerm_storage_account.test.name}", 771 "storageAccountKey": "${azurerm_storage_account.test.primary_access_key}" 772 } 773 SETTINGS 774 } 775 776 extension { 777 name = "Docker" 778 publisher = "Microsoft.Azure.Extensions" 779 type = "DockerExtension" 780 type_handler_version = "1.0" 781 auto_upgrade_minor_version = true 782 } 783 } 784 `