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  `