public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, OperatingSystemTypes osType, ResourceConfig <Disk> disk, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, SubResource> proximityPlacementGroup, string hostId, string priority, string evictionPolicy, double?maxPrice, bool?encryptionAtHostEnabled ) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { NetworkProfile = new NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { OsDisk = new OSDisk { Name = disk.Name, CreateOption = DiskCreateOptionTypes.Attach, OsType = osType, ManagedDisk = engine.GetReference(disk, ultraSSDEnabled ? StorageAccountTypes.UltraSSDLRS : StorageAccountTypes.PremiumLRS), }, DataDisks = DataDiskStrategy.CreateDataDisks(null, dataDisks) }, Identity = identity, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, ProximityPlacementGroup = proximityPlacementGroup(engine), Host = string.IsNullOrEmpty(hostId) ? null : new SubResource(hostId), Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice), SecurityProfile = new SecurityProfile { EncryptionAtHost = encryptionAtHostEnabled } });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, SubResource> proximityPlacementGroup, string hostId, string priority, string evictionPolicy, double?maxPrice) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { OsProfile = new OSProfile { ComputerName = name, WindowsConfiguration = imageAndOsType.CreateWindowsConfiguration(), LinuxConfiguration = imageAndOsType.CreateLinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }, Identity = identity, NetworkProfile = new NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateDataDisks( imageAndOsType?.DataDiskLuns, dataDisks) }, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, ProximityPlacementGroup = proximityPlacementGroup(engine), Host = string.IsNullOrEmpty(hostId) ? null : new SubResource(hostId), Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice) });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { OsProfile = new OSProfile { ComputerName = name, WindowsConfiguration = imageAndOsType.CreateWindowsConfiguration(), LinuxConfiguration = imageAndOsType.CreateLinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }, Identity = identity, NetworkProfile = new NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateDataDisks( imageAndOsType?.DataDiskLuns, dataDisks) }, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, OperatingSystemTypes osType, ResourceConfig <Disk> disk, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { NetworkProfile = new NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { OsDisk = new OSDisk { Name = disk.Name, CreateOption = DiskCreateOptionTypes.Attach, OsType = osType, ManagedDisk = engine.GetReference(disk, ultraSSDEnabled ? StorageAccountTypes.UltraSSDLRS : StorageAccountTypes.PremiumLRS), }, DataDisks = DataDiskStrategy.CreateDataDisks(null, dataDisks) }, Identity = identity, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, OperatingSystemTypes osType, ResourceConfig <Disk> disk, string size, ResourceConfig <AvailabilitySet> availabilitySet, IEnumerable <int> dataDisks, IList <string> zones) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { NetworkProfile = new NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { OsDisk = new OSDisk { Name = disk.Name, CreateOption = DiskCreateOptionTypes.Attach, OsType = osType, ManagedDisk = engine.GetReference(disk, "PremiumLRS"), }, DataDisks = DataDiskStrategy.CreateDataDisks(null, dataDisks) }, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones });
internal static ResourceConfig <VirtualMachineScaleSet> CreateVirtualMachineScaleSetConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, NestedResourceConfig <Subnet, VirtualNetwork> subnet, NestedResourceConfig <BackendAddressPool, LoadBalancer> backendAdressPool, IEnumerable <NestedResourceConfig <InboundNatPool, LoadBalancer> > inboundNatPools, ResourceConfig <NetworkSecurityGroup> networkSecurityGroup, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string vmSize, int instanceCount, VirtualMachineScaleSetIdentity identity, bool singlePlacementGroup, UpgradeMode?upgradeMode, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, SubResource> proximityPlacementGroup, string priority, string evictionPolicy, double?maxPrice, string[] scaleInPolicy, bool doNotRunExtensionsOnOverprovisionedVMs) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachineScaleSet() { Zones = zones, UpgradePolicy = new UpgradePolicy { Mode = upgradeMode ?? UpgradeMode.Manual }, Sku = new Azure.Management.Compute.Models.Sku() { Capacity = instanceCount, Name = vmSize, }, Identity = identity, SinglePlacementGroup = singlePlacementGroup, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, VirtualMachineProfile = new VirtualMachineScaleSetVMProfile { OsProfile = new VirtualMachineScaleSetOSProfile { ComputerNamePrefix = name.Substring(0, Math.Min(name.Length, 9)), WindowsConfiguration = imageAndOsType.CreateWindowsConfiguration(), LinuxConfiguration = imageAndOsType.CreateLinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }, StorageProfile = new VirtualMachineScaleSetStorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateVmssDataDisks( imageAndOsType?.DataDiskLuns, dataDisks) }, NetworkProfile = new VirtualMachineScaleSetNetworkProfile { NetworkInterfaceConfigurations = new[] { new VirtualMachineScaleSetNetworkConfiguration { Name = name, IpConfigurations = new [] { new VirtualMachineScaleSetIPConfiguration { Name = name, LoadBalancerBackendAddressPools = new [] { engine.GetReference(backendAdressPool) }, Subnet = engine.GetReference(subnet), LoadBalancerInboundNatPools = inboundNatPools ?.Select(engine.GetReference) .ToList() } }, Primary = true, NetworkSecurityGroup = engine.GetReference(networkSecurityGroup) } } }, Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice) }, ProximityPlacementGroup = proximityPlacementGroup(engine), ScaleInPolicy = (scaleInPolicy == null) ? null : new ScaleInPolicy { Rules = scaleInPolicy }, DoNotRunExtensionsOnOverprovisionedVMs = doNotRunExtensionsOnOverprovisionedVMs ? true : (bool?)null });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, SubResource> proximityPlacementGroup, string hostId, string hostGroupId, string capacityReservationGroupId, string VmssId, string priority, string evictionPolicy, double?maxPrice, bool encryptionAtHostPresent, List <SshPublicKey> sshPublicKeys, int?platformFaultDomain = null, string networkInterfaceDeleteOption = null, string osDiskDeleteOption = null, string dataDiskDeleteOption = null, string userData = null ) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { OsProfile = new OSProfile { ComputerName = name, WindowsConfiguration = imageAndOsType?.CreateWindowsConfiguration(), LinuxConfiguration = (imageAndOsType?.OsType != OperatingSystemTypes.Linux) ? null : new LinuxConfiguration { Ssh = new SshConfiguration(sshPublicKeys) }, AdminUsername = adminUsername, AdminPassword = adminPassword, }, Identity = identity, NetworkProfile = new Azure.Management.Compute.Models.NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface, networkInterfaceDeleteOption) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateDataDisks( imageAndOsType?.DataDiskLuns, dataDisks, dataDiskDeleteOption) }, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, ProximityPlacementGroup = proximityPlacementGroup(engine), Host = string.IsNullOrEmpty(hostId) ? null : new SubResource(hostId), VirtualMachineScaleSet = string.IsNullOrEmpty(VmssId) ? null : new SubResource(VmssId), HostGroup = string.IsNullOrEmpty(hostGroupId) ? null : new SubResource(hostGroupId), Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice), SecurityProfile = (encryptionAtHostPresent == true) ? new SecurityProfile(encryptionAtHost: encryptionAtHostPresent) : null, CapacityReservation = string.IsNullOrEmpty(capacityReservationGroupId) ? null : new CapacityReservationProfile { CapacityReservationGroup = new SubResource(capacityReservationGroupId) }, UserData = userData, PlatformFaultDomain = platformFaultDomain });
public static ResourceConfig <VirtualMachine> CreateVirtualMachineConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, ResourceConfig <NetworkInterface> networkInterface, OperatingSystemTypes osType, ResourceConfig <Disk> disk, string size, ResourceConfig <AvailabilitySet> availabilitySet, VirtualMachineIdentity identity, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, SubResource> proximityPlacementGroup, string hostId, string hostGroupId, string capacityReservationGroupId, string VmssId, string priority, string evictionPolicy, double?maxPrice, bool encryptionAtHostPresent, int?platformFaultDomain, string networkInterfaceDeleteOption = null, string osDiskDeleteOption = null, string dataDiskDeleteOption = null, string userData = null ) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachine { NetworkProfile = new Microsoft.Azure.Management.Compute.Models.NetworkProfile { NetworkInterfaces = new[] { engine.GetReference(networkInterface, networkInterfaceDeleteOption) } }, HardwareProfile = new HardwareProfile { VmSize = size }, StorageProfile = new StorageProfile { OsDisk = new OSDisk { Name = disk.Name, CreateOption = DiskCreateOptionTypes.Attach, OsType = osType, ManagedDisk = engine.GetReference(disk, ultraSSDEnabled ? StorageAccountTypes.UltraSSDLRS : StorageAccountTypes.PremiumLRS), DeleteOption = osDiskDeleteOption }, DataDisks = DataDiskStrategy.CreateDataDisks(null, dataDisks, dataDiskDeleteOption) }, Identity = identity, AvailabilitySet = engine.GetReference(availabilitySet), Zones = zones, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, ProximityPlacementGroup = proximityPlacementGroup(engine), Host = string.IsNullOrEmpty(hostId) ? null : new SubResource(hostId), VirtualMachineScaleSet = string.IsNullOrEmpty(VmssId) ? null : new SubResource(VmssId), HostGroup = string.IsNullOrEmpty(hostGroupId) ? null : new SubResource(hostGroupId), Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice), SecurityProfile = (encryptionAtHostPresent == true) ? new SecurityProfile(encryptionAtHost: encryptionAtHostPresent) : null, CapacityReservation = string.IsNullOrEmpty(capacityReservationGroupId) ? null : new CapacityReservationProfile { CapacityReservationGroup = new SubResource(capacityReservationGroupId) }, UserData = userData, PlatformFaultDomain = platformFaultDomain });
internal static ResourceConfig <VirtualMachineScaleSet> CreateVirtualMachineScaleSetConfigOrchestrationModeFlexible( this ResourceConfig <ResourceGroup> resourceGroup, string name, NestedResourceConfig <Subnet, VirtualNetwork> subnet, NestedResourceConfig <BackendAddressPool, LoadBalancer> backendAdressPool, ResourceConfig <NetworkSecurityGroup> networkSecurityGroup, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string vmSize, int instanceCount, VirtualMachineScaleSetIdentity identity, bool singlePlacementGroup, IEnumerable <int> dataDisks, IList <string> zones, bool ultraSSDEnabled, Func <IEngine, CM.SubResource> proximityPlacementGroup, Func <IEngine, CM.SubResource> hostGroup, string priority, string evictionPolicy, double?maxPrice, string[] scaleInPolicy, bool doNotRunExtensionsOnOverprovisionedVMs, bool encryptionAtHost, int?platformFaultDomainCount, string edgeZone, string orchestrationMode, string capacityReservationId ) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachineScaleSet() { Zones = zones, ExtendedLocation = edgeZone == null ? null : new CM.ExtendedLocation(edgeZone, CM.ExtendedLocationTypes.EdgeZone), Sku = new Azure.Management.Compute.Models.Sku() { Capacity = instanceCount, Name = vmSize, }, Identity = identity, SinglePlacementGroup = singlePlacementGroup, AdditionalCapabilities = ultraSSDEnabled ? new AdditionalCapabilities(true) : null, PlatformFaultDomainCount = platformFaultDomainCount, VirtualMachineProfile = new VirtualMachineScaleSetVMProfile { SecurityProfile = (encryptionAtHost == true) ? new SecurityProfile(encryptionAtHost: encryptionAtHost) : null, OsProfile = new VirtualMachineScaleSetOSProfile { ComputerNamePrefix = name.Substring(0, Math.Min(name.Length, 9)), WindowsConfiguration = imageAndOsType.CreateWindowsConfiguration(), LinuxConfiguration = imageAndOsType.CreateLinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }, StorageProfile = new VirtualMachineScaleSetStorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateVmssDataDisks( imageAndOsType?.DataDiskLuns, dataDisks) }, NetworkProfile = new VirtualMachineScaleSetNetworkProfile { NetworkApiVersion = flexibleOModeNetworkAPIVersion, NetworkInterfaceConfigurations = new[] { new VirtualMachineScaleSetNetworkConfiguration { Name = name, IpConfigurations = new [] { new VirtualMachineScaleSetIPConfiguration { Name = name, LoadBalancerBackendAddressPools = new [] { engine.GetReference(backendAdressPool) }, Subnet = engine.GetReference(subnet) } }, Primary = true, NetworkSecurityGroup = engine.GetReference(networkSecurityGroup) } } }, Priority = priority, EvictionPolicy = evictionPolicy, BillingProfile = (maxPrice == null) ? null : new BillingProfile(maxPrice), CapacityReservation = (capacityReservationId == null) ? null : new CapacityReservationProfile { CapacityReservationGroup = new Microsoft.Azure.Management.Compute.Models.SubResource(capacityReservationId) } }, ProximityPlacementGroup = proximityPlacementGroup(engine), HostGroup = hostGroup(engine), ScaleInPolicy = (scaleInPolicy == null) ? null : new ScaleInPolicy { Rules = scaleInPolicy }, DoNotRunExtensionsOnOverprovisionedVMs = doNotRunExtensionsOnOverprovisionedVMs ? true : (bool?)null, OrchestrationMode = orchestrationMode });
internal static ResourceConfig <VirtualMachineScaleSet> CreateVirtualMachineScaleSetConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, NestedResourceConfig <Subnet, VirtualNetwork> subnet, NestedResourceConfig <BackendAddressPool, LoadBalancer> backendAdressPool, IEnumerable <NestedResourceConfig <InboundNatPool, LoadBalancer> > inboundNatPools, ResourceConfig <NetworkSecurityGroup> networkSecurityGroup, ImageAndOsType imageAndOsType, string adminUsername, string adminPassword, string vmSize, int instanceCount, VirtualMachineScaleSetIdentity identity, Boolean singlePlacementGroup, UpgradeMode?upgradeMode, IEnumerable <int> dataDisks, IList <string> zones) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: engine => new VirtualMachineScaleSet() { Zones = zones, UpgradePolicy = new UpgradePolicy { Mode = upgradeMode ?? UpgradeMode.Manual }, Sku = new Azure.Management.Compute.Models.Sku() { Capacity = instanceCount, Name = vmSize, }, Identity = identity, SinglePlacementGroup = singlePlacementGroup, VirtualMachineProfile = new VirtualMachineScaleSetVMProfile { OsProfile = new VirtualMachineScaleSetOSProfile { ComputerNamePrefix = name.Substring(0, Math.Min(name.Length, 9)), WindowsConfiguration = imageAndOsType.CreateWindowsConfiguration(), LinuxConfiguration = imageAndOsType.CreateLinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }, StorageProfile = new VirtualMachineScaleSetStorageProfile { ImageReference = imageAndOsType?.Image, DataDisks = DataDiskStrategy.CreateVmssDataDisks( imageAndOsType?.DataDiskLuns, dataDisks) }, NetworkProfile = new VirtualMachineScaleSetNetworkProfile { NetworkInterfaceConfigurations = new[] { new VirtualMachineScaleSetNetworkConfiguration { Name = name, IpConfigurations = new [] { new VirtualMachineScaleSetIPConfiguration { Name = name, LoadBalancerBackendAddressPools = new [] { engine.GetReference(backendAdressPool) }, Subnet = engine.GetReference(subnet), LoadBalancerInboundNatPools = inboundNatPools ?.Select(engine.GetReference) .ToList() } }, Primary = true, NetworkSecurityGroup = engine.GetReference(networkSecurityGroup) } } } } });