in pkg/engine/virtualmachines.go [219:312]
func createJumpboxVirtualMachine(cs *api.ContainerService) VirtualMachineARM {
armResource := ARMResource{
APIVersion: "[variables('apiVersionCompute')]",
DependsOn: []string{
"[concat('Microsoft.Network/networkInterfaces/', variables('jumpboxNetworkInterfaceName'))]",
},
}
kubernetesConfig := cs.Properties.OrchestratorProfile.KubernetesConfig
vm := compute.VirtualMachine{
Location: to.StringPtr("[variables('location')]"),
Name: to.StringPtr("[parameters('jumpboxVMName')]"),
Type: to.StringPtr("Microsoft.Compute/virtualMachines"),
}
storageProfile := compute.StorageProfile{
ImageReference: &compute.ImageReference{
Publisher: to.StringPtr("Canonical"),
Offer: to.StringPtr("UbuntuServer"),
Sku: to.StringPtr("16.04-LTS"),
Version: to.StringPtr("latest"),
},
DataDisks: &[]compute.DataDisk{},
}
var jumpBoxIsManagedDisks bool
if kubernetesConfig != nil && kubernetesConfig.PrivateCluster != nil {
jumpBoxIsManagedDisks = kubernetesConfig.PrivateJumpboxProvision() && kubernetesConfig.PrivateCluster.JumpboxProfile.StorageProfile == api.ManagedDisks
}
if jumpBoxIsManagedDisks {
storageProfile.OsDisk = &compute.OSDisk{
CreateOption: compute.DiskCreateOptionTypesFromImage,
DiskSizeGB: to.Int32Ptr(int32(kubernetesConfig.PrivateCluster.JumpboxProfile.OSDiskSizeGB)),
ManagedDisk: &compute.ManagedDiskParameters{
StorageAccountType: "[variables('vmSizesMap')[parameters('jumpboxVMSize')].storageAccountType]",
},
}
} else {
storageProfile.OsDisk = &compute.OSDisk{
CreateOption: compute.DiskCreateOptionTypesFromImage,
Vhd: &compute.VirtualHardDisk{
URI: to.StringPtr("[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('jumpboxStorageAccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'vhds/',parameters('jumpboxVMName'),'jumpboxdisk.vhd')]"),
},
Name: to.StringPtr("[variables('jumpboxOSDiskName')]"),
}
}
t, err := InitializeTemplateGenerator(Context{})
if err != nil {
panic(err)
}
customDataStr := getCustomDataFromJSON(t.GetJumpboxCustomDataJSON(cs))
vmProperties := compute.VirtualMachineProperties{
HardwareProfile: &compute.HardwareProfile{
VMSize: "[parameters('jumpboxVMSize')]",
},
OsProfile: &compute.OSProfile{
ComputerName: to.StringPtr("[parameters('jumpboxVMName')]"),
AdminUsername: to.StringPtr("[parameters('jumpboxUsername')]"),
LinuxConfiguration: &compute.LinuxConfiguration{
DisablePasswordAuthentication: to.BoolPtr(true),
SSH: &compute.SSHConfiguration{
PublicKeys: &[]compute.SSHPublicKey{
{
Path: to.StringPtr("[concat('/home/', parameters('jumpboxUsername'), '/.ssh/authorized_keys')]"),
KeyData: to.StringPtr("[parameters('jumpboxPublicKey')]"),
},
},
},
},
CustomData: to.StringPtr(customDataStr),
},
NetworkProfile: &compute.NetworkProfile{
NetworkInterfaces: &[]compute.NetworkInterfaceReference{
{
ID: to.StringPtr("[resourceId('Microsoft.Network/networkInterfaces', variables('jumpboxNetworkInterfaceName'))]"),
},
},
},
StorageProfile: &storageProfile,
}
vm.VirtualMachineProperties = &vmProperties
return VirtualMachineARM{
ARMResource: armResource,
VirtualMachine: vm,
}
}