Openstack4J API初体验之启动一个实例并为实例分配IP(将实例挂在某个网段上)

6 篇文章 3 订阅
4 篇文章 0 订阅

上一篇文章讲了如何授权,在学会使用Openstack4J提供给我们授权的API后,现在我们要开始创建一台VM/实例了。

先授权:

OSClientV3 os = OSFactory.builderV3().endpoint("http://10.0.0.11:5000/v3").credentials("username", "psw", Identifier.byName("default")) .scopeToProject(Identifier.byId("8b21d3e746af43a9af7152d72ad54d02")).authenticate();

授权中需要填写的参数不清楚的可以看上一篇文章哈,这里就不再赘述了。

授权后拿到os,先查看在Openstack上已经有的子网(我们之后创建的虚拟机最后将挂在这个网段上):

List<? extends Subnet> subnets = os.networking().subnet().list();

声明和定义两个字符串变量(一个是subnetID之后会用到,ip就假设是用户想给VM分配的IP地址):

String subnetID = null;
String ip = "192.168.7.33";

刚刚拿到了存在的所有子网的集合,现在我们要在子网中找到跟用户输入的ip同一个网段,然后获取这个网段的netWorkID号,这个ID号之后在创建虚拟机的时候会用到。代码如下:

for (Subnet subnet : subnets) {
            if (subnet.getCidr().substring(0, subnet.getCidr().lastIndexOf("."))
                    .equals(ip.substring(0, ip.lastIndexOf(".")))) {
                subnetID = subnet.getNetworkId();
            }
        }

现在一切就绪,可以创建并启动实例了:

ServerCreate sc = Builders.server().name("Ubuntu 3").flavor("2").image("cbeb615d-fae5-4df7-9fb6-5913fa4c63e9").builsc.addNetwork(subnetID, ip);
erver server = os.compute().servers().boot(sc);
os.compute().servers().action(server.getId(), Action.START);

在一行中有几个参数,这里说明一下:
name:这里输入的字符串就是将来启动的实例的名字。
flavor:flavor标志着给这个实例分配的资源,例如RAM,Vcpu数量等。在装好Openstack后好像一个是有5个默认的flavor的,这里需要输入flavor的ID号 如图 在这里可以看到:
这里写图片描述
在管理员-系统-flavor数中 可以看到上图所示,倒数第二列的标识实际上就是flavor的ID号,我这里选择的ID为2的flavor。
image:镜像同上,找到镜像的标识号就行了。
上面的代码片的第二句:

sc.addNetwork(subnetID, ip);

这个填写刚刚需要挂的网段ID和用户给VM的IP地址。
这里说一下为什么要找到与用户输入的IP地址的同一网段的子网ID,想一下,用户如果输入的IP地址为:
192.168.10.4 而在Openstack中根本无192.168.10.0这个网段,那怎么可能把实例挂得上去,你总不可能把网段是10.0的挂在网段是7.0上面吧?
最上面的代码片的最后一句,就是启动实例啦。~
启动成功后在Openstack中的dashboard中效果如图:
这里写图片描述

当然 看到一朵云的图标了吗?那个就是我自己在Openstack上创建的网段,也就是192.168.7.0/24这个网段。没有这个网段,用户刚刚输入的ip地址就挂不上去啦。
本文结束~~!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值