protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration) { provisioningConfiguration.AdminUsername = AdminUsername; provisioningConfiguration.AdminPassword = Password; provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent; provisioningConfiguration.StoredCertificateSettings = CertUtils.GetCertificateSettings(Certificates, X509Certificates); provisioningConfiguration.EnableAutomaticUpdates = !DisableAutomaticUpdates.IsPresent; if (!string.IsNullOrEmpty(TimeZone)) { provisioningConfiguration.TimeZone = TimeZone; } if (ParameterSetName == "WindowsDomain") { provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings { Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials { Username = DomainUserName, Password = DomainPassword, Domain = Domain }, MachineObjectOU = MachineObjectOU, JoinDomain = JoinDomain }; } }
private PersistentVMRole CreatePersistenVMRole(CloudStorageAccount currentStorage) { var vm = new PersistentVMRole { AvailabilitySetName = AvailabilitySetName, ConfigurationSets = new Collection <ConfigurationSet>(), DataVirtualHardDisks = new Collection <DataVirtualHardDisk>(), RoleName = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal RoleSize = String.IsNullOrEmpty(InstanceSize) ? null : InstanceSize, RoleType = "PersistentVMRole", Label = ServiceName, OSVirtualHardDisk = new OSVirtualHardDisk { DiskName = null, SourceImageName = ImageName, MediaLink = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation), HostCaching = HostCaching } }; if (vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.DiskName)) { DateTime dtCreated = DateTime.Now; string vhdname = String.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", this.ServiceName, vm.RoleName, dtCreated.Year, dtCreated.Month, dtCreated.Day, dtCreated.Millisecond); string blobEndpoint = currentStorage.BlobEndpoint.AbsoluteUri; if (blobEndpoint.EndsWith("/") == false) { blobEndpoint += "/"; } vm.OSVirtualHardDisk.MediaLink = new Uri(blobEndpoint + "vhds/" + vhdname); } var netConfig = CreateNetworkConfigurationSet(); if (ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase)) { var windowsConfig = new WindowsProvisioningConfigurationSet { AdminUsername = this.AdminUsername, AdminPassword = Password, ComputerName = string.IsNullOrEmpty(Name) ? ServiceName : Name, EnableAutomaticUpdates = true, ResetPasswordOnFirstLogon = false, StoredCertificateSettings = CertUtils.GetCertificateSettings(this.Certificates, this.X509Certificates), WinRM = GetWinRmConfiguration() }; netConfig.InputEndpoints.Add(new InputEndpoint { LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop" }); if (!this.DisableWinRMHttps.IsPresent) { netConfig.InputEndpoints.Add(new InputEndpoint { LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName }); } vm.ConfigurationSets.Add(windowsConfig); vm.ConfigurationSets.Add(netConfig); } else { var linuxConfig = new LinuxProvisioningConfigurationSet { HostName = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name, UserName = this.LinuxUser, UserPassword = this.Password, DisableSshPasswordAuthentication = false }; if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0) { linuxConfig.SSH = new LinuxProvisioningConfigurationSet.SSHSettings { PublicKeys = this.SSHPublicKeys, KeyPairs = this.SSHKeyPairs }; } var rdpEndpoint = new InputEndpoint { LocalPort = 22, Protocol = "tcp", Name = "SSH" }; netConfig.InputEndpoints.Add(rdpEndpoint); vm.ConfigurationSets.Add(linuxConfig); vm.ConfigurationSets.Add(netConfig); } return(vm); }