Openstack nova boot裸金属,选择池中的特定机器进行“引导”

Openstack nova boot裸金属,选择池中的特定机器进行“引导”,openstack,openstack-nova,Openstack,Openstack Nova,我使用Ironic帮助我在使用1U Dell服务器的数据中心环境中部署裸机。它工作得很好,我可以用讽刺的方式在机架上组装几十台服务器,然后当我需要通过nova的裸机实例时,我只需要使用与这些服务器相关的风格,我就可以得到其中一台。有没有办法让我得到一个具体的?例如,我的服务器从顶部开始编号,从control0、control1一直到control39。所以,首先我创建了所有的裸机服务器,并对它们进行了反思。然后我创建了一个如下的风格,请原谅伪代码,并将每个裸机服务器与该配置文件关联 openst

我使用Ironic帮助我在使用1U Dell服务器的数据中心环境中部署裸机。它工作得很好,我可以用讽刺的方式在机架上组装几十台服务器,然后当我需要通过nova的裸机实例时,我只需要使用与这些服务器相关的风格,我就可以得到其中一台。有没有办法让我得到一个具体的?例如,我的服务器从顶部开始编号,从control0、control1一直到control39。所以,首先我创建了所有的裸机服务器,并对它们进行了反思。然后我创建了一个如下的风格,请原谅伪代码,并将每个裸机服务器与该配置文件关联

openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 control
openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="control" control

i = 0
for each baremetal server's uuid:
  ironic node-update server-uuid add name=control$i
  i = i + 1
  ironic node-update server-uuid add properties/capabilities="profile:control,boot_option:local"
当我在列表中循环时,我知道服务器的物理顺序是自上而下的。我想做的是让nova在control3这样具有讽刺意味的裸机上创建一个启动实例。我可以为每一个创建不同的口味,但我认为必须有一种方法来选择特定的硬件?或者按照我指定的顺序选择它们的策略

我对讽刺很陌生。我在谷歌上搜索了很多关于这个话题的东西,但什么也没找到。以下是我如何启动nova:

nova boot --flavor control --image rhel-server-7.1-x86_64-dvd.iso --nic 'net-id=723e7b11-3e61-481a-827e-e58b369dd28f' mybootinstance1
这很好用。我想做的是有一个nova引导行,它使用flavor控件,还有名称control0或任何其他我可以指定的属性,以使该机器唯一。比如:

nova boot --flavor control --ironic-instance-name control0 --image rhel-server-7.1-x86_64-dvd.iso --nic 'net-id=723e7b11-3e61-481a-827e-e58b369dd28f' mybootinstance1
这实际上是一个简化的新星池选择过程。我不想使用一个池,而是一个特定的硬件


如果这是不可能的,那么使用40种风格来创建单个“池”是否有一个很大的缺点?

我对这个主题不太熟悉,但我想分享如何通过可用性区域将实例引导到特定主机

在我的devstack master开发环境中,过程是:

$ nova availability-zone-list
+---------------------+----------------------------------------+
| Name                | Status                                 |
+---------------------+----------------------------------------+
| internal            | available                              |
| |- fcwszq           |                                        |
| | |- nova-conductor | enabled :-) 2015-11-23T06:31:46.000000 |
| | |- nova-cert      | enabled :-) 2015-11-23T06:31:41.000000 |
| | |- nova-scheduler | enabled :-) 2015-11-23T06:31:43.000000 |
| | |- nova-network   | enabled :-) 2015-11-23T06:31:44.000000 |
| nova                | available                              |
| |- fcwszq           |                                        |
| | |- nova-compute   | enabled :-) 2015-11-23T06:31:41.000000 |
+---------------------+----------------------------------------+
请注意,我的环境仅获取一个主机名为fcwszq的计算节点,但仍然可以指定为:

nova启动-可用区nova:fcwszq-味道1-图像c38f0c7e-8ee0-4b0f-8a56-022040b4696f测试02

如果指定一个不存在的节点,例如nova:non-existence,则无法正确创建实例,状态为ERROR

希望这能帮助你


另一种方法是使用host aggregate和flavor元数据在组中的随机服务器上启动实例,参考:

我认为您可以在nova boot中使用-hint来选择池中的特定机器。 先决条件:编辑/etc/nova/nova.conf,在scheduler_default_过滤器中添加'JsonFilter',然后重新启动nova-scheduler。然后像这样使用nova boot命令:


nova boot-flavor-image-nic netid=-hint reservation=-hint query='[=,$hypervisor_hostname,]'谢谢您的回答。看到一个包含多个节点的示例会很有帮助。我希望能够通过一些已经存在的机制来选择nova用于vm的节点。我不想添加单一居民的口味或区域。我想你的问题是选择一台唯一的机器,即使你的示例表明它需要一台特定的机器。如果你想让nova选择,你需要查看所有的日程表过滤器,找到一个适合你的。我需要一台特定的机器,而不仅仅是唯一的。我想知道机架中的哪台机器是哪个nova compute节点我想控制computenode0=第一台机架机器,computenode1=第二台机架机器,等等。我知道我可以用口味和区域来控制。我只是希望有一个直接的机制。quote:我想做的是有一个nova引导行,它使用flavor控件,还有名称control0或任何其他我可以指定的属性,以使该机器唯一。