github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/website/source/docs/providers/azurerm/r/virtual_machine_scale_sets.html.markdown (about)

     1  ---
     2  layout: "azurerm"
     3  page_title: "Azure Resource Manager: azurerm_virtual_machine_scale_sets"
     4  sidebar_current: "docs-azurerm-resource-virtualmachine-scale-sets"
     5  description: |-
     6    Create a Virtual Machine scale set.
     7  ---
     8  
     9  # azurerm\_virtual\_machine\_scale\_sets
    10  
    11  Create a virtual machine scale set.
    12  
    13  ~> **Note:** All arguments including the administrator login and password will be stored in the raw state as plain-text.
    14  [Read more about sensitive data in state](/docs/state/sensitive-data.html).
    15  
    16  ## Example Usage
    17  
    18  ```hcl
    19  resource "azurerm_resource_group" "test" {
    20    name     = "acctestrg"
    21    location = "West US"
    22  }
    23  
    24  resource "azurerm_virtual_network" "test" {
    25    name                = "acctvn"
    26    address_space       = ["10.0.0.0/16"]
    27    location            = "West US"
    28    resource_group_name = "${azurerm_resource_group.test.name}"
    29  }
    30  
    31  resource "azurerm_subnet" "test" {
    32    name                 = "acctsub"
    33    resource_group_name  = "${azurerm_resource_group.test.name}"
    34    virtual_network_name = "${azurerm_virtual_network.test.name}"
    35    address_prefix       = "10.0.2.0/24"
    36  }
    37  
    38  resource "azurerm_storage_account" "test" {
    39    name                = "accsa"
    40    resource_group_name = "${azurerm_resource_group.test.name}"
    41    location            = "westus"
    42    account_type        = "Standard_LRS"
    43  
    44    tags {
    45      environment = "staging"
    46    }
    47  }
    48  
    49  resource "azurerm_storage_container" "test" {
    50    name                  = "vhds"
    51    resource_group_name   = "${azurerm_resource_group.test.name}"
    52    storage_account_name  = "${azurerm_storage_account.test.name}"
    53    container_access_type = "private"
    54  }
    55  
    56  resource "azurerm_virtual_machine_scale_set" "test" {
    57    name                = "mytestscaleset-1"
    58    location            = "West US"
    59    resource_group_name = "${azurerm_resource_group.test.name}"
    60    upgrade_policy_mode = "Manual"
    61  
    62    sku {
    63      name     = "Standard_A0"
    64      tier     = "Standard"
    65      capacity = 2
    66    }
    67  
    68    os_profile {
    69      computer_name_prefix = "testvm"
    70      admin_username       = "myadmin"
    71      admin_password       = "Passwword1234"
    72    }
    73  
    74    os_profile_linux_config {
    75      disable_password_authentication = true
    76  
    77      ssh_keys {
    78        path     = "/home/myadmin/.ssh/authorized_keys"
    79        key_data = "${file("~/.ssh/demo_key.pub")}"
    80      }
    81    }
    82  
    83    network_profile {
    84      name    = "TestNetworkProfile"
    85      primary = true
    86  
    87      ip_configuration {
    88        name      = "TestIPConfiguration"
    89        subnet_id = "${azurerm_subnet.test.id}"
    90      }
    91    }
    92  
    93    storage_profile_os_disk {
    94      name           = "osDiskProfile"
    95      caching        = "ReadWrite"
    96      create_option  = "FromImage"
    97      vhd_containers = ["${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}"]
    98    }
    99  
   100    storage_profile_image_reference {
   101      publisher = "Canonical"
   102      offer     = "UbuntuServer"
   103      sku       = "14.04.2-LTS"
   104      version   = "latest"
   105    }
   106  }
   107  ```
   108  
   109  ## Argument Reference
   110  
   111  The following arguments are supported:
   112  
   113  * `name` - (Required) Specifies the name of the virtual machine scale set resource. Changing this forces a
   114      new resource to be created.
   115  * `resource_group_name` - (Required) The name of the resource group in which to
   116      create the virtual machine scale set.
   117  * `location` - (Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
   118  * `sku` - (Required) A sku block as documented below.
   119  * `upgrade_policy_mode` - (Required) Specifies the mode of an upgrade to virtual machines in the scale set. Possible values, `Manual` or `Automatic`.
   120  * `overprovision` - (Optional) Specifies whether the virtual machine scale set should be overprovisioned.
   121  * `os_profile` - (Required) A Virtual Machine OS Profile block as documented below.
   122  * `os_profile_secrets` - (Optional) A collection of Secret blocks as documented below.
   123  * `os_profile_windows_config` - (Required, when a windows machine) A Windows config block as documented below.
   124  * `os_profile_linux_config` - (Required, when a linux machine) A Linux config block as documented below.
   125  * `network_profile` - (Required) A collection of network profile block as documented below.
   126  * `storage_profile_os_disk` - (Required) A storage profile os disk block as documented below
   127  * `storage_profile_image_reference` - (Optional) A storage profile image reference block as documented below.
   128  * `extension` - (Optional) Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
   129  * `tags` - (Optional) A mapping of tags to assign to the resource.
   130  
   131  
   132  `sku` supports the following:
   133  
   134  * `name` - (Required) Specifies the size of virtual machines in a scale set.
   135  * `tier` - (Optional) Specifies the tier of virtual machines in a scale set. Possible values, `standard` or `basic`.
   136  * `capacity` - (Required) Specifies the number of virtual machines in the scale set.
   137  
   138  `os_profile` supports the following:
   139  
   140  * `computer_name_prefix` - (Required) Specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long.
   141  * `admin_username` - (Required) Specifies the administrator account name to use for all the instances of virtual machines in the scale set.
   142  * `admin_password` - (Required) Specifies the administrator password to use for all the instances of virtual machines in a scale set..
   143  * `custom_data` - (Optional) Specifies custom data to supply to the machine. On linux-based systems, this can be used as a cloud-init script. On other systems, this will be copied as a file on disk. Internally, Terraform will base64 encode this value before sending it to the API. The maximum length of the binary array is 65535 bytes. Changing this forces a new resource to be created.
   144  
   145  `os_profile_secrets` supports the following:
   146  
   147  * `source_vault_id` - (Required) Specifies the key vault to use.
   148  * `vault_certificates` - (Required, on windows machines) A collection of Vault Certificates as documented below
   149  
   150  `vault_certificates` support the following:
   151  
   152  * `certificate_url` - (Required) It is the Base64 encoding of a JSON Object that which is encoded in UTF-8 of which the contents need to be `data`, `dataType` and `password`.
   153  * `certificate_store` - (Required, on windows machines) Specifies the certificate store on the Virtual Machine where the certificate should be added to.
   154  
   155  
   156  `os_profile_windows_config` supports the following:
   157  
   158  * `provision_vm_agent` - (Optional) Indicates whether virtual machine agent should be provisioned on the virtual machines in the scale set.
   159  * `enable_automatic_upgrades` - (Optional) Indicates whether virtual machines in the scale set are enabled for automatic updates.
   160  * `winrm` - (Optional) A collection of WinRM configuration blocks as documented below.
   161  * `additional_unattend_config` - (Optional) An Additional Unattended Config block as documented below.
   162  
   163  `winrm` supports the following:
   164  
   165  * `protocol` - (Required) Specifies the protocol of listener
   166  * `certificate_url` - (Optional) Specifies URL of the certificate with which new Virtual Machines is provisioned.
   167  
   168  `additional_unattend_config` supports the following:
   169  
   170  * `pass` - (Required) Specifies the name of the pass that the content applies to. The only allowable value is `oobeSystem`.
   171  * `component` - (Required) Specifies the name of the component to configure with the added content. The only allowable value is `Microsoft-Windows-Shell-Setup`.
   172  * `setting_name` - (Required) Specifies the name of the setting to which the content applies. Possible values are: `FirstLogonCommands` and `AutoLogon`.
   173  * `content` - (Optional) Specifies the base-64 encoded XML formatted content that is added to the unattend.xml file for the specified path and component.
   174  
   175  `os_profile_linux_config` supports the following:
   176  
   177  * `disable_password_authentication` - (Required) Specifies whether password authentication should be disabled.
   178  * `ssh_keys` - (Optional) Specifies a collection of `path` and `key_data` to be placed on the virtual machine.
   179  
   180  ~> _**Note:** Please note that the only allowed `path` is `/home/<username>/.ssh/authorized_keys` due to a limitation of Azure_
   181  
   182  
   183  `network_profile` supports the following:
   184  
   185  * `name` - (Required) Specifies the name of the network interface configuration.
   186  * `primary` - (Required) Indicates whether network interfaces created from the network interface configuration will be the primary NIC of the VM.
   187  * `ip_configuration` - (Required) An ip_configuration block as documented below
   188  
   189  `ip_configuration` supports the following:
   190  
   191  * `name` - (Required) Specifies name of the IP configuration.
   192  * `subnet_id` - (Required) Specifies the identifier of the subnet.
   193  * `load_balancer_backend_address_pool_ids` - (Optional) Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
   194  
   195  `storage_profile_os_disk` supports the following:
   196  
   197  * `name` - (Required) Specifies the disk name.
   198  * `vhd_containers` - (Optional) Specifies the vhd uri. This property is ignored if using a custom image.
   199  * `create_option` - (Required) Specifies how the virtual machine should be created. The only possible option is `FromImage`.
   200  * `caching` - (Required) Specifies the caching requirements.
   201  * `image` - (Optional) Specifies the blob uri for user image. A virtual machine scale set creates an os disk in the same container as the user image.
   202                         Updating the osDisk image causes the existing disk to be deleted and a new one created with the new image. If the VM scale set is in Manual upgrade mode then the virtual machines are not updated until they have manualUpgrade applied to them.
   203                         If this property is set then vhd_containers is ignored.
   204  * `os_type` - (Optional) Specifies the operating system Type, valid values are windows, linux.
   205  
   206  `storage_profile_image_reference` supports the following:
   207  
   208  * `publisher` - (Required) Specifies the publisher of the image used to create the virtual machines
   209  * `offer` - (Required) Specifies the offer of the image used to create the virtual machines.
   210  * `sku` - (Required) Specifies the SKU of the image used to create the virtual machines.
   211  * `version` - (Optional) Specifies the version of the image used to create the virtual machines.
   212  
   213  `extension` supports the following:
   214  
   215  * `name` - (Required) Specifies the name of the extension.
   216  * `publisher` - (Required) The publisher of the extension, available publishers can be found by using the Azure CLI.
   217  * `type` - (Required) The type of extension, available types for a publisher can be found using the Azure CLI.
   218  * `type_handler_version` - (Required) Specifies the version of the extension to use, available versions can be found using the Azure CLI.
   219  * `auto_upgrade_minor_version` - (Optional) Specifies whether or not to use the latest minor version available.
   220  * `settings` - (Required) The settings passed to the extension, these are specified as a JSON object in a string.
   221  * `protected_settings` - (Optional) The protected_settings passed to the extension, like settings, these are specified as a JSON object in a string.
   222  
   223  ## Attributes Reference
   224  
   225  The following attributes are exported:
   226  
   227  * `id` - The virtual machine scale set ID.
   228  
   229  
   230  ## Import
   231  
   232  Virtual Machine Scale Sets can be imported using the `resource id`, e.g.
   233  
   234  ```
   235  terraform import azurerm_virtual_machine_scale_set.scaleset1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1
   236  ```