private Management.Compute.Models.Role CreatePersistenVMRole(CloudStorageAccount currentStorage) { var vm = new Management.Compute.Models.Role { AvailabilitySetName = AvailabilitySetName, RoleName = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal RoleSize = InstanceSize, RoleType = "PersistentVMRole", Label = ServiceName, OSVirtualHardDisk = _isVMImage ? null : Mapper.Map<Management.Compute.Models.OSVirtualHardDisk>( new OSVirtualHardDisk { DiskName = null, SourceImageName = ImageName, MediaLink = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation), HostCaching = HostCaching }), VMImageName = _isVMImage ? this.ImageName : null, MediaLocation = _isVMImage && !string.IsNullOrEmpty(this.MediaLocation) ? new Uri(this.MediaLocation) : null, ProvisionGuestAgent = !this.DisableGuestAgent, ResourceExtensionReferences = this.DisableGuestAgent ? null : Mapper.Map<List<Management.Compute.Models.ResourceExtensionReference>>( new VirtualMachineExtensionImageFactory(this.ComputeClient).MakeList( VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultPublisher, VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultName, VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultVersion)) }; if (!_isVMImage && vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.Name)) { var mediaLinkFactory = new MediaLinkFactory(currentStorage, this.ServiceName, vm.RoleName); vm.OSVirtualHardDisk.MediaLink = mediaLinkFactory.Create(); } string customDataBase64Str = null; if (!string.IsNullOrEmpty(this.CustomDataFile)) { string fileName = this.TryResolvePath(this.CustomDataFile); customDataBase64Str = PersistentVMHelper.ConvertCustomDataFileToBase64(fileName); } var configurationSets = new Collection<ConfigurationSet>(); var netConfig = CreateNetworkConfigurationSet(); if (ParameterSetName.Equals(WindowsParamSet, StringComparison.OrdinalIgnoreCase)) { if (this.AdminUsername != null && this.Password != null) { var windowsConfig = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.WindowsProvisioningConfigurationSet { AdminUsername = this.AdminUsername, AdminPassword = SecureStringHelper.GetSecureString(Password), ComputerName = string.IsNullOrEmpty(Name) ? ServiceName : Name, EnableAutomaticUpdates = true, ResetPasswordOnFirstLogon = false, StoredCertificateSettings = CertUtilsNewSM.GetCertificateSettings(this.Certificates, this.X509Certificates), WinRM = GetWinRmConfiguration(), CustomData = customDataBase64Str }; if (windowsConfig.StoredCertificateSettings == null) { windowsConfig.StoredCertificateSettings = new Model.CertificateSettingList(); } configurationSets.Add(windowsConfig); } netConfig.InputEndpoints.Add(new InputEndpoint {LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop"}); if (!this.NoWinRMEndpoint.IsPresent && !this.DisableWinRMHttps.IsPresent) { netConfig.InputEndpoints.Add(new InputEndpoint {LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName}); } configurationSets.Add(netConfig); } else if (ParameterSetName.Equals(LinuxParamSet, StringComparison.OrdinalIgnoreCase)) { if (this.LinuxUser != null && this.Password != null) { var linuxConfig = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.LinuxProvisioningConfigurationSet { HostName = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name, UserName = this.LinuxUser, UserPassword = SecureStringHelper.GetSecureString(this.Password), DisableSshPasswordAuthentication = false, CustomData = customDataBase64Str }; if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0) { linuxConfig.SSH = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.LinuxProvisioningConfigurationSet.SSHSettings { PublicKeys = this.SSHPublicKeys, KeyPairs = this.SSHKeyPairs }; } configurationSets.Add(linuxConfig); } var rdpEndpoint = new InputEndpoint {LocalPort = 22, Protocol = "tcp", Name = "SSH"}; netConfig.InputEndpoints.Add(rdpEndpoint); configurationSets.Add(netConfig); } PersistentVMHelper.MapConfigurationSets(configurationSets).ForEach(c => vm.ConfigurationSets.Add(c)); return vm; }
private Management.Compute.Models.Role CreatePersistenVMRole(CloudStorageAccount currentStorage) { var vm = new Management.Compute.Models.Role { AvailabilitySetName = AvailabilitySetName, RoleName = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal RoleSize = InstanceSize, RoleType = "PersistentVMRole", Label = ServiceName, OSVirtualHardDisk = _isVMImage ? null : Mapper.Map <Management.Compute.Models.OSVirtualHardDisk>( new OSVirtualHardDisk { DiskName = null, SourceImageName = ImageName, MediaLink = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation), HostCaching = HostCaching }), VMImageName = _isVMImage ? this.ImageName : null, MediaLocation = _isVMImage && !string.IsNullOrEmpty(this.MediaLocation) ? new Uri(this.MediaLocation) : null, ProvisionGuestAgent = !this.DisableGuestAgent, ResourceExtensionReferences = this.DisableGuestAgent ? null : Mapper.Map <List <Management.Compute.Models.ResourceExtensionReference> >( new VirtualMachineExtensionImageFactory(this.ComputeClient).MakeList( VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultPublisher, VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultName, VirtualMachineBGInfoExtensionCmdletBase.ExtensionDefaultVersion)) }; if (!_isVMImage && vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.Name)) { var mediaLinkFactory = new MediaLinkFactory(currentStorage, this.ServiceName, vm.RoleName); vm.OSVirtualHardDisk.MediaLink = mediaLinkFactory.Create(); } string customDataBase64Str = null; if (!string.IsNullOrEmpty(this.CustomDataFile)) { string fileName = this.TryResolvePath(this.CustomDataFile); customDataBase64Str = PersistentVMHelper.ConvertCustomDataFileToBase64(fileName); } var configurationSets = new Collection <ConfigurationSet>(); var netConfig = CreateNetworkConfigurationSet(); if (ParameterSetName.Equals(WindowsParamSet, StringComparison.OrdinalIgnoreCase)) { if (this.AdminUsername != null && this.Password != null) { var windowsConfig = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.WindowsProvisioningConfigurationSet { AdminUsername = this.AdminUsername, AdminPassword = SecureStringHelper.GetSecureString(Password), ComputerName = string.IsNullOrEmpty(Name) ? ServiceName : Name, EnableAutomaticUpdates = true, ResetPasswordOnFirstLogon = false, StoredCertificateSettings = CertUtilsNewSM.GetCertificateSettings(this.Certificates, this.X509Certificates), WinRM = GetWinRmConfiguration(), CustomData = customDataBase64Str }; if (windowsConfig.StoredCertificateSettings == null) { windowsConfig.StoredCertificateSettings = new Model.CertificateSettingList(); } configurationSets.Add(windowsConfig); } netConfig.InputEndpoints.Add(new InputEndpoint { LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop" }); if (!this.NoWinRMEndpoint.IsPresent && !this.DisableWinRMHttps.IsPresent) { netConfig.InputEndpoints.Add(new InputEndpoint { LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName }); } configurationSets.Add(netConfig); } else if (ParameterSetName.Equals(LinuxParamSet, StringComparison.OrdinalIgnoreCase)) { if (this.LinuxUser != null && this.Password != null) { var linuxConfig = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.LinuxProvisioningConfigurationSet { HostName = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name, UserName = this.LinuxUser, UserPassword = SecureStringHelper.GetSecureString(this.Password), DisableSshPasswordAuthentication = false, CustomData = customDataBase64Str }; if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0) { linuxConfig.SSH = new Microsoft.WindowsAzure.Commands.ServiceManagement.Model.LinuxProvisioningConfigurationSet.SSHSettings { PublicKeys = this.SSHPublicKeys, KeyPairs = this.SSHKeyPairs }; } configurationSets.Add(linuxConfig); } var rdpEndpoint = new InputEndpoint { LocalPort = 22, Protocol = "tcp", Name = "SSH" }; netConfig.InputEndpoints.Add(rdpEndpoint); configurationSets.Add(netConfig); } PersistentVMHelper.MapConfigurationSets(configurationSets).ForEach(c => vm.ConfigurationSets.Add(c)); return(vm); }