in src/go/pkg/cachewarmer/vmss.go [209:316]
func createCacheWarmerVmssModel(
vmssName string,
location string,
vmssSKU string,
nodeCount int64,
userName string,
password string,
sshKeyData string,
publisher string,
offer string,
sku string,
planName string,
planPublisher string,
planProduct string,
priority compute.VirtualMachinePriorityTypes,
evictionPolicy compute.VirtualMachineEvictionPolicyTypes,
subnetId string,
customData string) compute.VirtualMachineScaleSet {
passwordPtr := to.StringPtr(password)
if len(sshKeyData) > 0 {
// disable password if using ssh key
passwordPtr = nil
}
var linuxConfiguration *compute.LinuxConfiguration
if len(sshKeyData) > 0 {
linuxConfiguration = &compute.LinuxConfiguration{
DisablePasswordAuthentication: to.BoolPtr(true),
SSH: &compute.SSHConfiguration{
PublicKeys: &[]compute.SSHPublicKey{
{
Path: to.StringPtr(fmt.Sprintf("/home/%s/.ssh/authorized_keys", userName)),
KeyData: to.StringPtr(sshKeyData),
},
},
},
}
}
var computePlan *compute.Plan
computePlan = nil
if len(planName) > 0 && len(planPublisher) > 0 && len(planProduct) > 0 {
computePlan = &compute.Plan{
Name: to.StringPtr(planName),
Publisher: to.StringPtr(planPublisher),
Product: to.StringPtr(planProduct),
}
}
// create the vmss model
return compute.VirtualMachineScaleSet{
Name: to.StringPtr(vmssName),
Location: to.StringPtr(location),
Sku: &compute.Sku{
Name: to.StringPtr(vmssSKU),
Capacity: to.Int64Ptr(nodeCount),
},
Plan: computePlan,
VirtualMachineScaleSetProperties: &compute.VirtualMachineScaleSetProperties{
Overprovision: to.BoolPtr(false),
UpgradePolicy: &compute.UpgradePolicy{
Mode: compute.UpgradeModeManual,
},
SinglePlacementGroup: to.BoolPtr(false),
VirtualMachineProfile: &compute.VirtualMachineScaleSetVMProfile{
Priority: priority,
EvictionPolicy: evictionPolicy,
OsProfile: &compute.VirtualMachineScaleSetOSProfile{
ComputerNamePrefix: to.StringPtr(vmssName),
AdminUsername: to.StringPtr(userName),
AdminPassword: passwordPtr,
CustomData: to.StringPtr(base64.StdEncoding.EncodeToString([]byte(customData))),
LinuxConfiguration: linuxConfiguration,
},
StorageProfile: &compute.VirtualMachineScaleSetStorageProfile{
ImageReference: &compute.ImageReference{
Offer: to.StringPtr(offer),
Publisher: to.StringPtr(publisher),
Sku: to.StringPtr(sku),
Version: to.StringPtr("latest"),
},
},
NetworkProfile: &compute.VirtualMachineScaleSetNetworkProfile{
NetworkInterfaceConfigurations: &[]compute.VirtualMachineScaleSetNetworkConfiguration{
{
Name: to.StringPtr(vmssName),
VirtualMachineScaleSetNetworkConfigurationProperties: &compute.VirtualMachineScaleSetNetworkConfigurationProperties{
Primary: to.BoolPtr(true),
//EnableAcceleratedNetworking: to.BoolPtr(true),
//EnableIPForwarding: to.BoolPtr(false),
IPConfigurations: &[]compute.VirtualMachineScaleSetIPConfiguration{
{
Name: to.StringPtr("internal"),
VirtualMachineScaleSetIPConfigurationProperties: &compute.VirtualMachineScaleSetIPConfigurationProperties{
Subnet: &compute.APIEntityReference{
ID: to.StringPtr(subnetId),
},
},
},
},
},
},
},
},
},
},
}
}