diff --git a/builtin/providers/azure/resource_azure_instance.go b/builtin/providers/azure/resource_azure_instance.go index cf20e8218..fb264f28e 100644 --- a/builtin/providers/azure/resource_azure_instance.go +++ b/builtin/providers/azure/resource_azure_instance.go @@ -170,6 +170,30 @@ func resourceAzureInstance() *schema.Resource { Type: schema.TypeString, Computed: true, }, + + "domain_name": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + + "domain_username": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + + "domain_password": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + + "domain_ou": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, }, } } @@ -273,6 +297,19 @@ func resourceAzureInstanceCreate(d *schema.ResourceData, meta interface{}) (err if err != nil { return fmt.Errorf("Error configuring %s for Windows: %s", name, err) } + + if domain_name, ok := d.GetOk("domain_name"); ok { + err = vmutils.ConfigureWindowsToJoinDomain( + &role, + d.Get("domain_username").(string), + d.Get("domain_password").(string), + domain_name.(string), + d.Get("domain_ou").(string), + ) + if err != nil { + return fmt.Errorf("Error configuring %s for WindowsToJoinDomain: %s", name, err) + } + } } if s := d.Get("endpoint").(*schema.Set); s.Len() > 0 { diff --git a/website/source/docs/providers/azure/r/instance.html.markdown b/website/source/docs/providers/azure/r/instance.html.markdown index f983c622a..469d4da61 100644 --- a/website/source/docs/providers/azure/r/instance.html.markdown +++ b/website/source/docs/providers/azure/r/instance.html.markdown @@ -31,6 +31,10 @@ resource "azure_instance" "web" { location = "West US" username = "terraform" password = "Pass!admin123" + domain_name = "contoso.com" + domain_ou = "OU=Servers,DC=contoso.com,DC=Contoso,DC=com" + domain_username = "Administrator" + domain_password = "Pa$$word123" endpoint { name = "SSH" @@ -109,6 +113,18 @@ The following arguments are supported: * `endpoint` - (Optional) Can be specified multiple times to define multiple endpoints. Each `endpoint` block supports fields documented below. +* `domain_name` - (Optional) The name of an Active Directory domain to join. + +* `domain_ou` - (Optional) Specifies the LDAP Organisational Unit to place the + instance in. + +* `domain_username` - (Optional) The username of an account with permission to + join the instance to the domain. Required if a domain_name is specified. + +* `domain_password` - (Optional) The password for the domain_username account + specified above. + + The `endpoint` block supports: * `name` - (Required) The name of the external endpoint.