public static NestedResourceConfig <FrontendIPConfiguration, LoadBalancer> CreateFrontendIPConfiguration( this ResourceConfig <LoadBalancer> loadBalancer, string name, IList <string> zones, ResourceConfig <PublicIPAddress> publicIPAddress, NestedResourceConfig <Subnet, VirtualNetwork> subnet) => Strategy.CreateConfig( parent: loadBalancer, name: name, createModel: subscriptionId => { var frontEndConfig = CreateFrontendIpConfig( froontendPoolName: name, subscriptionId: subscriptionId, subnetId: subnet.GetId(subscriptionId).IdToString(), publicIpAddressId: publicIPAddress.GetId(subscriptionId).IdToString(), privateIpAddress: null, zones: zones); return(frontEndConfig); });
public static ResourceConfig <NetworkInterface> CreateNetworkInterfaceConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, NestedResourceConfig <Subnet, VirtualNetwork> subnet, ResourceConfig <PublicIPAddress> publicIPAddress, ResourceConfig <NetworkSecurityGroup> networkSecurityGroup = null) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: subscription => new NetworkInterface { IpConfigurations = new [] { new NetworkInterfaceIPConfiguration { Name = name, Subnet = new Subnet { Id = subnet.GetId(subscription).IdToString() }, PublicIPAddress = new PublicIPAddress { Id = publicIPAddress.GetId(subscription).IdToString() } } }, NetworkSecurityGroup = networkSecurityGroup == null ? null : new NetworkSecurityGroup { Id = networkSecurityGroup.GetId(subscription).IdToString() } }, dependencies: new IEntityConfig[] { subnet, publicIPAddress, networkSecurityGroup });
internal static ResourceConfig <VirtualMachineScaleSet> CreateVirtualMachineScaleSetConfig( this ResourceConfig <ResourceGroup> resourceGroup, string name, NestedResourceConfig <Subnet, VirtualNetwork> subnet, IEnumerable <NestedResourceConfig <FrontendIPConfiguration, LoadBalancer> > frontendIpConfigurations, NestedResourceConfig <BackendAddressPool, LoadBalancer> backendAdressPool, bool isWindows, string adminUsername, string adminPassword, Image image, string vmSize, int instanceCount, UpgradeMode?upgradeMode) => Strategy.CreateResourceConfig( resourceGroup: resourceGroup, name: name, createModel: subscriptionId => { var vmss = new VirtualMachineScaleSet() { Zones = frontendIpConfigurations ?.Select(f => f.CreateModel(subscriptionId)) ?.Where(z => z?.Zones != null) .SelectMany(z => z.Zones) .Where(z => z != null) .ToList(), UpgradePolicy = upgradeMode.HasValue ? new UpgradePolicy { Mode = upgradeMode } : new UpgradePolicy { Mode = UpgradeMode.Manual }, Sku = new Microsoft.Azure.Management.Compute.Models.Sku() { Capacity = instanceCount, Name = vmSize, }, VirtualMachineProfile = new VirtualMachineScaleSetVMProfile() }; vmss.VirtualMachineProfile.OsProfile = new VirtualMachineScaleSetOSProfile { ComputerNamePrefix = name.Substring(0, Math.Min(name.Length, 9)), WindowsConfiguration = isWindows ? new WindowsConfiguration { } : null, LinuxConfiguration = isWindows ? null : new LinuxConfiguration(), AdminUsername = adminUsername, AdminPassword = adminPassword, }; vmss.VirtualMachineProfile.StorageProfile = new VirtualMachineScaleSetStorageProfile { ImageReference = new ImageReference { Publisher = image.publisher, Offer = image.offer, Sku = image.sku, Version = image.version } }; var ipConfig = new VirtualMachineScaleSetIPConfiguration { Name = name, LoadBalancerBackendAddressPools = new List <Microsoft.Azure.Management.Compute.Models.SubResource>( new[] { new Microsoft.Azure.Management.Compute.Models.SubResource( id: backendAdressPool.GetId(subscriptionId).IdToString()) }), Subnet = new ApiEntityReference { Id = subnet.GetId(subscriptionId).IdToString() } }; vmss.VirtualMachineProfile.NetworkProfile = new VirtualMachineScaleSetNetworkProfile { NetworkInterfaceConfigurations = new[] { new VirtualMachineScaleSetNetworkConfiguration { Name = name, IpConfigurations = new List <VirtualMachineScaleSetIPConfiguration>( new [] { ipConfig }), Primary = true } } }; return(vmss); }, dependencies: new IEntityConfig[] { subnet, backendAdressPool } .Concat(frontendIpConfigurations));