Я пытаюсь создать несколько виртуальных машин в Azure, используя Java SDK.Дело в том, что после создания машин я не могу подключиться (публичный ip добавляется вручную после того, как java-код создает виртуальные машины - это не обязательно для меня, публичный ip не является обязательным).
Это код, который я использую для создания машин.
List<Creatable<VirtualMachine>> creatableVirtualMachines = new ArrayList<>();
List<Creatable<NetworkInterface>> creatableNetworkInterfaces = new ArrayList<>();
List<Creatable<Disk>> creatableDisk = new ArrayList<>();
for (int i = 0; i < vmCount; i++) {
Creatable<NetworkInterface> networkInterfaceCreatable = azure.networkInterfaces()
.define("testNIC-" + i)
.withRegion(Region.EUROPE_WEST)
.withExistingResourceGroup("TestRes2")
.withExistingPrimaryNetwork(network)
.withSubnet("default")
.withPrimaryPrivateIPAddressDynamic();
creatableNetworkInterfaces.add(networkInterfaceCreatable);
Creatable<Disk> disksCreatable= azure.disks()
.define(SdkContext.randomResourceName("test_dsk", 30))
.withRegion(Region.EUROPE_WEST)
.withNewResourceGroup("TestRes2")
.withWindowsFromVhd("image url")
.withSizeInGB(127)
.withSku(DiskSkuTypes.STANDARD_LRS);
creatableDisk.add(disksCreatable);
}
networkInterfaces = azure.networkInterfaces().create(creatableNetworkInterfaces);
networkInterfacesKeys = new ArrayList(networkInterfaces.keySet());
disks = azure.disks().create(creatableDisk);
disksKeys = new ArrayList(disks.keySet());
for (int i = 0; i < vmCount; i++) {
// Create one virtual machine Creatable
Creatable<VirtualMachine> virtualMachineCreatable = azure.virtualMachines()
.define("TESTVM-" + i)
.withRegion(Region.EUROPE_WEST)
.withExistingResourceGroup("TestRes2")
.withExistingPrimaryNetworkInterface(networkInterfaces.get(networkInterfacesKeys.get(i)))
.withSpecializedOSDisk(disks.get(disksKeys.get(i)), OperatingSystemTypes.WINDOWS)
.withSize(VirtualMachineSizeTypes.STANDARD_B2S);
// add the virtual machine Creatable to the list
creatableVirtualMachines.add(virtualMachineCreatable);
}
virtualMachines = azure.virtualMachines().create(creatableVirtualMachines);
virtualMachinesKeys = new ArrayList(virtualMachines.keySet());
РЕДАКТИРОВАТЬ:
Когда я не использую изображение, а скорее"LatestImage"
.withLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
работает.