func (vm VirtualMachineClient) CreateDeployment(
	role Role,
	cloudServiceName string,
	options CreateDeploymentOptions) (management.OperationID, error) {
	req := DeploymentRequest{
		Name:               role.RoleName,
		DeploymentSlot:     "Production",
		Label:              role.RoleName,
		RoleList:           []Role{role},
		DNSServers:         options.DNSServers,
		LoadBalancers:      options.LoadBalancers,
		ReservedIPName:     options.ReservedIPName,
		VirtualNetworkName: options.VirtualNetworkName,
	}
	data, err := xml.Marshal(req)
	if err != nil {
		return "", err
	}
	requestURL := fmt.Sprintf(azureDeploymentListURL, cloudServiceName)
	return vm.client.SendAzurePostRequest(requestURL, data)
}
CreateDeployment creates a deployment and then creates a virtual machine
in the deployment based on the specified configuration.

https://msdn.microsoft.com/en-us/library/azure/jj157194.aspx
package virtualmachine
import (
	"encoding/xml"
	"fmt"
	"github.com/Azure/azure-sdk-for-go/management"
)
const (
	azureDeploymentListURL        = "services/hostedservices/%s/deployments"
	azureDeploymentURL            = "services/hostedservices/%s/deployments/%s"
	azureListDeploymentsInSlotURL = "services/hostedservices/%s/deploymentslots/Production"
	deleteAzureDeploymentURL      = "services/hostedservices/%s/deployments/%s?comp=media"
	azureAddRoleURL               = "services/hostedservices/%s/deployments/%s/roles"
	azureRoleURL                  = "services/hostedservices/%s/deployments/%s/roles/%s"
	azureOperationsURL            = "services/hostedservices/%s/deployments/%s/roleinstances/%s/Operations"
	azureRoleSizeListURL          = "rolesizes"
	errParamNotSpecified = "Parameter %s is not specified."
)
func NewClient(client management.Client) VirtualMachineClient {
	return VirtualMachineClient{client: client}
}
type CreateDeploymentOptions struct {
	DNSServers         []DNSServer
	LoadBalancers      []LoadBalancer
	ReservedIPName     string
	VirtualNetworkName string
}