GCE如何在启动时将外部IP添加到现有实例

Michelantonio Trizio

我正在使用Gcloud-java管理一些VM实例。创建新实例的代码很清楚,如下所示:

Address externalIp = compute.getAddress(addressId);

InstanceId instanceId = InstanceId.of("us-central1-a", "test-instance");

NetworkId networkId = NetworkId.of("default");

PersistentDiskConfiguration attachConfiguration =
        PersistentDiskConfiguration.builder(diskId).boot(true).build();

AttachedDisk attachedDisk = AttachedDisk.of("dev0", attachConfiguration);

NetworkInterface networkInterface = NetworkInterface.builder(networkId)
    .accessConfigurations(AccessConfig.of(externalIp.address()))
    .build();

MachineTypeId machineTypeId = MachineTypeId.of("us-central1-a", "n1-standard-1");

InstanceInfo instance =
    InstanceInfo.of(instanceId, machineTypeId, attachedDisk, networkInterface);

Operation operation = compute.create(instance);
// Wait for operation to complete
operation = operation.waitFor();

if (operation.errors() == null) {
   System.out.println("Instance " + instanceId + " was successfully created");
} else {
     // inspect operation.errors()
     throw new RuntimeException("Instance creation failed");
}

但是,如果我有要启动的现有实例并想附加外部IP,该怎么办?

我已经尝试过这种方式:首先,我创建一个RegionAddressId并获取一个用来创建networkInterface的地址。

RegionAddressId addressId = RegionAddressId.of("europe-west1", "test-address");
    Operation operationAdd = compute.create(AddressInfo.of(addressId));
    operationAdd = operationAdd.waitFor();

Address externalIp = compute.getAddress(addressId);
NetworkId networkId = NetworkId.of("default");
NetworkInterface networkInterface = NetworkInterface.builder(networkId)
            .accessConfigurations(NetworkInterface.AccessConfig.of(externalIp.address()))
            .build();

我得到我的实例并添加accessConfig

InstanceId instanceId = InstanceId.of("my-server", "europe-west1-b","my-instance");
    Instance instance = compute.getInstance(instanceId);
    instance.addAccessConfig("default", NetworkInterface.AccessConfig.of(externalIp.address()));
    Operation operation = instance.start();

结果是我的实例使用另一个我不知道如何获取的外部IP引导。正确的程序是什么?谢谢

Michelantonio Trizio

我自己找到了解决方案。

Compute compute = ComputeOptions.defaultInstance().service();

InstanceId instanceId = InstanceId.of("my-server", "europe-west1-b","my-instance");

Operation operation = compute.start(instanceId);

Operation completedOperation = operation.waitFor();
if (completedOperation == null) {
    // operation no longer exists
} else if (completedOperation.errors() != null) {
    // operation failed, handle error
}

Instance instance = compute.getInstance(instanceId);
String publicIp = 
    instance.networkInterfaces().get(0).accessConfigurations().get(0).natIp();

我使用Compute的start方法启动实例,然后(在操作完成之后)获得实例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GCE:为现有 VM 实例启用 CDN/将现有 VM 实例添加到新的区域实例组

来自分类Dev

如何在开发时将现有文件添加到IsolatedStorage?

来自分类Dev

首次启动时如何将教程添加到Flutter应用中

来自分类Dev

如何将IAM角色添加到AWS中的现有实例?

来自分类Dev

将CoreData添加到现有项目时出错

来自分类Dev

如何使用gce_pd Ansible模块将磁盘添加到Google Compute Engine实例?

来自分类Dev

如何在mongo中使用$ addFields将元素添加到现有文档中?

来自分类Dev

如何在C#中调用将文本添加到现有代码中的函数?

来自分类Dev

如何在现有键处将唯一值添加到哈希图

来自分类Dev

如何动态将Source添加到现有图?

来自分类Dev

如何将dbmate添加到现有项目?

来自分类Dev

如何将字段添加到现有模型

来自分类Dev

如何将UITableView添加到现有视图

来自分类Dev

如何将现有目录添加到pydev?

来自分类Dev

如何将ngClick添加到现有元素

来自分类Dev

如何动态将Source添加到现有图?

来自分类Dev

如何在centos 7中将现有用户添加到现有组中?

来自分类Dev

如何添加到现有记录?

来自分类Dev

如何添加到现有属性?

来自分类Dev

通过将程序添加到注册表中,如何使程序在启动时运行?

来自分类Dev

将SSIS添加到现有的SQL Server实例

来自分类Dev

将属性添加到Python 2中现有类的实例

来自分类Dev

使用 Terraform 将现有 IAM 角色添加到 EC2 实例

来自分类Dev

如何将现有区域添加到现有团队?

来自分类Dev

如何将现有用户添加到现有组?

来自分类Dev

如何在没有npm的cordova cli的情况下将外部/外部插件添加到pgb?

来自分类Dev

如何在没有npm的cordova cli的情况下将外部/外部插件添加到pgb?

来自分类Dev

Azure VM:将预留IP地址添加到现有VM

来自分类Dev

ActiveRecord如何在Rails中通过has_many:through关系将现有记录添加到关联中?

Related 相关文章

  1. 1

    GCE:为现有 VM 实例启用 CDN/将现有 VM 实例添加到新的区域实例组

  2. 2

    如何在开发时将现有文件添加到IsolatedStorage?

  3. 3

    首次启动时如何将教程添加到Flutter应用中

  4. 4

    如何将IAM角色添加到AWS中的现有实例?

  5. 5

    将CoreData添加到现有项目时出错

  6. 6

    如何使用gce_pd Ansible模块将磁盘添加到Google Compute Engine实例?

  7. 7

    如何在mongo中使用$ addFields将元素添加到现有文档中?

  8. 8

    如何在C#中调用将文本添加到现有代码中的函数?

  9. 9

    如何在现有键处将唯一值添加到哈希图

  10. 10

    如何动态将Source添加到现有图?

  11. 11

    如何将dbmate添加到现有项目?

  12. 12

    如何将字段添加到现有模型

  13. 13

    如何将UITableView添加到现有视图

  14. 14

    如何将现有目录添加到pydev?

  15. 15

    如何将ngClick添加到现有元素

  16. 16

    如何动态将Source添加到现有图?

  17. 17

    如何在centos 7中将现有用户添加到现有组中?

  18. 18

    如何添加到现有记录?

  19. 19

    如何添加到现有属性?

  20. 20

    通过将程序添加到注册表中,如何使程序在启动时运行?

  21. 21

    将SSIS添加到现有的SQL Server实例

  22. 22

    将属性添加到Python 2中现有类的实例

  23. 23

    使用 Terraform 将现有 IAM 角色添加到 EC2 实例

  24. 24

    如何将现有区域添加到现有团队?

  25. 25

    如何将现有用户添加到现有组?

  26. 26

    如何在没有npm的cordova cli的情况下将外部/外部插件添加到pgb?

  27. 27

    如何在没有npm的cordova cli的情况下将外部/外部插件添加到pgb?

  28. 28

    Azure VM:将预留IP地址添加到现有VM

  29. 29

    ActiveRecord如何在Rails中通过has_many:through关系将现有记录添加到关联中?

热门标签

归档