mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-22 14:19:03 +00:00
VMSS creation fixes (#2358)
This commit is contained in:
@ -259,18 +259,7 @@ public class VmssOperations : IVmssOperations {
|
|||||||
return getOsResult.ErrorV;
|
return getOsResult.ErrorV;
|
||||||
}
|
}
|
||||||
|
|
||||||
var vmssData = new VirtualMachineScaleSetData(location) {
|
|
||||||
DoNotRunExtensionsOnOverprovisionedVms = false,
|
|
||||||
Sku = new ComputeSku() { Name = vmSku, Capacity = vmCount },
|
|
||||||
Overprovision = false,
|
|
||||||
SinglePlacementGroup = false,
|
|
||||||
UpgradePolicy = new UpgradePolicy() { Mode = UpgradeMode.Manual },
|
|
||||||
Identity = new ManagedServiceIdentity(managedServiceIdentityType: ManagedServiceIdentityType.UserAssigned),
|
|
||||||
};
|
|
||||||
vmssData.Identity.UserAssignedIdentities.Add(_creds.GetScalesetIdentityResourcePath(), new UserAssignedIdentity());
|
|
||||||
vmssData.VirtualMachineProfile = new VirtualMachineScaleSetVmProfile() { Priority = VirtualMachinePriorityTypes.Regular };
|
|
||||||
var imageRef = new ImageReference();
|
var imageRef = new ImageReference();
|
||||||
|
|
||||||
if (image.StartsWith('/')) {
|
if (image.StartsWith('/')) {
|
||||||
imageRef.Id = image;
|
imageRef.Id = image;
|
||||||
} else {
|
} else {
|
||||||
@ -280,19 +269,50 @@ public class VmssOperations : IVmssOperations {
|
|||||||
imageRef.Sku = info.Sku;
|
imageRef.Sku = info.Sku;
|
||||||
imageRef.Version = info.Version;
|
imageRef.Version = info.Version;
|
||||||
}
|
}
|
||||||
vmssData.VirtualMachineProfile.StorageProfile = new VirtualMachineScaleSetStorageProfile() { ImageReference = imageRef };
|
|
||||||
vmssData.VirtualMachineProfile.OSProfile = new VirtualMachineScaleSetOSProfile() { ComputerNamePrefix = "node", AdminUsername = "onefuzz" };
|
|
||||||
|
|
||||||
var networkConfiguration = new VirtualMachineScaleSetNetworkConfiguration("onefuzz-nic") { Primary = true };
|
var vmssData = new VirtualMachineScaleSetData(location) {
|
||||||
var ipConfig = new VirtualMachineScaleSetIPConfiguration("onefuzz-ip-config");
|
DoNotRunExtensionsOnOverprovisionedVms = true,
|
||||||
ipConfig.SubnetId = new ResourceIdentifier(networkId);
|
UpgradePolicy = new() {
|
||||||
networkConfiguration.IPConfigurations.Add(ipConfig);
|
Mode = UpgradeMode.Manual,
|
||||||
|
},
|
||||||
vmssData.VirtualMachineProfile.NetworkProfile = new VirtualMachineScaleSetNetworkProfile();
|
Sku = new() {
|
||||||
vmssData.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations.Add(networkConfiguration);
|
Name = vmSku,
|
||||||
|
Tier = "Standard",
|
||||||
|
Capacity = vmCount,
|
||||||
|
},
|
||||||
|
Overprovision = false,
|
||||||
|
SinglePlacementGroup = false,
|
||||||
|
Identity = new(ManagedServiceIdentityType.UserAssigned) {
|
||||||
|
UserAssignedIdentities = {
|
||||||
|
{ _creds.GetScalesetIdentityResourcePath(), new UserAssignedIdentity() },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
VirtualMachineProfile = new() {
|
||||||
|
Priority = VirtualMachinePriorityTypes.Regular,
|
||||||
|
StorageProfile = new() {
|
||||||
|
ImageReference = imageRef,
|
||||||
|
},
|
||||||
|
OSProfile = new() {
|
||||||
|
ComputerNamePrefix = "node",
|
||||||
|
AdminUsername = "onefuzz",
|
||||||
|
},
|
||||||
|
NetworkProfile = new() {
|
||||||
|
NetworkInterfaceConfigurations = {
|
||||||
|
new("onefuzz-nic") {
|
||||||
|
Primary = true,
|
||||||
|
IPConfigurations = {
|
||||||
|
new("onefuzz-ip-config") {
|
||||||
|
SubnetId = new ResourceIdentifier(networkId)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
if (extensions is not null) {
|
if (extensions is not null) {
|
||||||
vmssData.VirtualMachineProfile.ExtensionProfile = new VirtualMachineScaleSetExtensionProfile();
|
vmssData.VirtualMachineProfile.ExtensionProfile = new();
|
||||||
foreach (var e in extensions) {
|
foreach (var e in extensions) {
|
||||||
vmssData.VirtualMachineProfile.ExtensionProfile.Extensions.Add(e);
|
vmssData.VirtualMachineProfile.ExtensionProfile.Extensions.Add(e);
|
||||||
}
|
}
|
||||||
@ -303,20 +323,27 @@ public class VmssOperations : IVmssOperations {
|
|||||||
vmssData.VirtualMachineProfile.OSProfile.AdminPassword = password;
|
vmssData.VirtualMachineProfile.OSProfile.AdminPassword = password;
|
||||||
break;
|
break;
|
||||||
case Os.Linux:
|
case Os.Linux:
|
||||||
vmssData.VirtualMachineProfile.OSProfile.LinuxConfiguration = new LinuxConfiguration();
|
vmssData.VirtualMachineProfile.OSProfile.LinuxConfiguration = new() {
|
||||||
vmssData.VirtualMachineProfile.OSProfile.LinuxConfiguration.DisablePasswordAuthentication = true;
|
DisablePasswordAuthentication = true,
|
||||||
var i = new SshPublicKeyInfo() { KeyData = sshPublicKey, Path = "/home/onefuzz/.ssh/authorized_keys" };
|
SshPublicKeys = {
|
||||||
vmssData.VirtualMachineProfile.OSProfile.LinuxConfiguration.SshPublicKeys.Add(i);
|
new() {
|
||||||
|
KeyData = sshPublicKey,
|
||||||
|
Path = "/home/onefuzz/.ssh/authorized_keys",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return OneFuzzResultVoid.Error(ErrorCode.INVALID_CONFIGURATION, $"unhandled OS: {getOsResult.OkV} in image: {image}");
|
return OneFuzzResultVoid.Error(ErrorCode.INVALID_CONFIGURATION, $"unhandled OS: {getOsResult.OkV} in image: {image}");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ephemeralOsDisks) {
|
if (ephemeralOsDisks) {
|
||||||
vmssData.VirtualMachineProfile.StorageProfile.OSDisk = new VirtualMachineScaleSetOSDisk(DiskCreateOptionTypes.FromImage);
|
vmssData.VirtualMachineProfile.StorageProfile.OSDisk = new(DiskCreateOptionTypes.FromImage) {
|
||||||
vmssData.VirtualMachineProfile.StorageProfile.OSDisk.DiffDiskSettings = new DiffDiskSettings();
|
DiffDiskSettings = new DiffDiskSettings {
|
||||||
vmssData.VirtualMachineProfile.StorageProfile.OSDisk.DiffDiskSettings.Option = DiffDiskOptions.Local;
|
Option = DiffDiskOptions.Local,
|
||||||
vmssData.VirtualMachineProfile.StorageProfile.OSDisk.Caching = CachingTypes.ReadOnly;
|
},
|
||||||
|
Caching = CachingTypes.ReadOnly,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spotInstance.HasValue && spotInstance.Value) {
|
if (spotInstance.HasValue && spotInstance.Value) {
|
||||||
@ -325,9 +352,9 @@ public class VmssOperations : IVmssOperations {
|
|||||||
//
|
//
|
||||||
// https://docs.microsoft.com/en-us/azure/
|
// https://docs.microsoft.com/en-us/azure/
|
||||||
// virtual-machine-scale-sets/use-spot#resource-manager-templates
|
// virtual-machine-scale-sets/use-spot#resource-manager-templates
|
||||||
vmssData.VirtualMachineProfile.EvictionPolicy = VirtualMachineEvictionPolicyTypes.Deallocate;
|
vmssData.VirtualMachineProfile.EvictionPolicy = VirtualMachineEvictionPolicyTypes.Delete;
|
||||||
vmssData.VirtualMachineProfile.Priority = VirtualMachinePriorityTypes.Spot;
|
vmssData.VirtualMachineProfile.Priority = VirtualMachinePriorityTypes.Spot;
|
||||||
vmssData.VirtualMachineProfile.BillingMaxPrice = 1.0;
|
vmssData.VirtualMachineProfile.BillingMaxPrice = -1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var tag in tags) {
|
foreach (var tag in tags) {
|
||||||
|
Reference in New Issue
Block a user