in src/go/cmd/createvmss/main.go [210:303]
func createCacheWarmerVmssModel(
vmssName string,
location string,
vmssSKU string,
nodeCount int64,
userName string,
password string,
sshKeyData string,
publisher string,
offer string,
sku 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),
},
},
},
}
}
// 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),
},
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),
},
},
},
},
},
},
},
},
},
},
}
}