翻译官网概述。

操作员将节点注册为Ironic,例如 通过openstack baremetal CLI命令。 电源管理认证应该在这一步提供给Ironic。

如节点状态所述,节点被置于正确的自省状态。

运算符使用 ironic-inspector API和 CLI发送自检节点。

在接收节点UUID ironic-inspector

验证电源认证,当前功率和供应状态

允许访问节点的PXE引导服务

为节点发出重启命令,以便启动虚拟硬盘。

虚拟磁盘收集所需的信息并将其发回ironic-inspector

在从ramdisk接收数据时,ironic-inspector

验证收到的数据

在Ironic数据库中使用它的BMC地址(在SSH驱动的情况下是MAC地址)找到节点,用收到的数据填充缺少的节点属性并创建丢失的端口。

状态机图

下面的图表显示了反省状态,即在节点内省,发现和重新处理过程中,ironic-inspector经历的内省状态。 该图还显示触发状态转换的事件。

内省规则:

Inspector支持一个简单的基于JSON的DSL来定义在自省过程中运行的规则。 Inspector提供了一个API来管理这些规则,并在运行所有处理钩子后自动运行它们。

规则由检查条件和要运行的操作组成。 如果条件在内省数据上评估为真,则在节点上运行操作。

条件:

条件由具有字段的对象表示:

op比较操作的类型,默认可用操作符包括:

eq,le,ge,ne,lt,gt - 基本比较运算符;
in-net - 检查IP地址是否在给定的网络中;
匹配 - 要求与给定的正则表达式完全匹配;
包含 - 要求包含给定正则表达式的值;
is-empty - 检查该字段是否为空字符串,列表,字典或无值。
在内省数据中为字段使用JSON路径来比较。

从Mitaka版本开始,您也可以将条件应用于讽刺节点字段。 使用模式的前缀字段(data://或node://)来区分内省数据和节点的值。 两种方案都使用JSON路径:

{"field": "node://property.path", "op": "eq", "value": "val"}
{"field": "data://introspection.path", "op": "eq", "value": "val"}

如果方案(节点或数据)缺失,则条件将数据与自省数据进行比较。

反转布尔值,是否反转比较结果。

多个如何处理字段查询返回多个结果的情况(例如字段包含列表),可用的选项有:

任何(默认)需要任何匹配,
都要求全部匹配,
首先需要首先匹配。
所有其他字段被传递给条件插件,例如 数值比较操作需要一个值字段进行比较。

动作:

一个动作由一个带有字段的对象来表示:

行动类型的行动。可能的值由插件定义。

所有其他字段都传递给动作插件。

可用的默认操作包括:

自省失败。需要失败消息的消息参数。
set-attribute在Ironic节点上设置一个属性。需要一个路径字段,该字段是讽刺用途(例如/ properties / something)所使用的属性的路径,以及要设置的值。
设置能力在讽刺节点上设置能力。需要名称和值域,这是相应的新功能的名称和值。相同能力的现有值被替换。
extend-attribute与set-attribute相同,但将现有值视为列表并将值附加到它。如果可选的唯一参数设置为True,如果给定的值已经在列表中,则不会添加任何内容。
从mitaka发布开始,动作中的值字段支持从内省中获取数据,它使用的是Python字符串格式化符号

插件:

ironic-inspector 严重依赖插件进行数据处理。 即使标准功能主要基于插件。 在配置文件中设置processing_hooks选项,以更改要在内省数据上运行的插件集。 注意这个顺序在这个选项中很重要,特别是对于依赖于其他钩子的钩子。

调度
验证和更新基本硬件调度属性:CPU数量和架构,内存和磁盘大小。

validate_interfaces验证网络接口信息。 创建新的端口,可选地删除内省数据中不存在的端口。 还为PXE引导端口设置pxe_enabled标志,并将其设置为所有其他端口,以避免nova挑选随机端口来引导节点。
以下插件默认启用,但不需要时可以禁用:

ramdisk_error
报告错误,如果错误字段由ramdisk设置,还可以选择存储来自日志字段的日志
capabilities
检测节点功能:CPU,引导模式等。
pci_devices
收集由ramdisk返回的所有PCI设备的列表,并与配置文件的pci_devices部分的别名字段中定义的列表进行比较。 然后将识别的PCI设备及其计数存储在节点属性中。 这个信息稍后可以在nova中用于节点调度。
以下是一些可以额外启用的插件:

raid_device
从ramdisk收集块设备并在多次运行中暴露根设备。
extra_hardware
将ramdisk返回的'data'键的值作为JSON编码的字符串存储在Swift对象中。该插件也将尝试将数据转换为内省规则可用的格式。如果这是成功的,那么新格式将被存储在“额外”键中。然后将数据键从自检数据中删除,除非通过内省规则将其转换为不可用。
local_link_connection
处理从检查返回的LLDP数据,特别是查找端口ID和机箱ID,如果发现它在具有该数据的节点Ironic端口上配置本地链路连接信息。要在IPA清单中启用LLDP,ipa-collect-lldp = 1应作为内核参数传递给IPA ramdisk。为了避免两次处理原始LLDP数据,lldp_basic插件也应该在插件之前安装并运行。
lldp_basic
处理从检查返回的LLDP数据并分析基本管理(802.1AB),802.1Q和802.3中的TLV,并将处理的数据存回Swift中的Ironic检查器数据。

发觉:

从mitaka开始,ironic-inspector能够在Ironic中注册新的节点。

现有的node-not-found-hook处理如果ironic-inspector收到来自其无法识别的节点的检查数据时发生的情况。如果一个节点手动启动,而没有首先注册Ironic,就会发生这种情况。

为了发现,配置文件选项node_not_found_hook应该被设置为加载被称为enroll的挂钩。这个挂钩将使用假驱动程序将未标识的节点注册到Ironic(该驱动程序是一个可配置的选项,在ironic-inspector配置文件中将enroll_node_driver设置为所需的Ironic驱动程序)。

注册钩子也将在新节点上设置ipmi_address属性(如果它在我们收到的内省数据中可用)

注册挂钩完成后,ironic-inspector将按照与识别节点相同的方式处理自检数据。它运行处理插件,之后运行内省规则,这将允许更多的可定制节点配置。

将节点的Ironic驱动程序设置为agent_ipmitool驱动程序并为该驱动程序填充所需的driver_info的规则如下所示:

[{
"description": "Set IPMI driver_info if no credentials",
"actions": [
{"action": "set-attribute", "path": "driver", "value": "agent_ipmitool"},
{"action": "set-attribute", "path": "driver_info/ipmi_username",
"value": "username"},
{"action": "set-attribute", "path": "driver_info/ipmi_password",
"value": "password"}
],
"conditions": [
{"op": "is-empty", "field": "node://driver_info.ipmi_password"},
{"op": "is-empty", "field": "node://driver_info.ipmi_username"}
]
},{
"description": "Set deploy info if not already set on node",
"actions": [
{"action": "set-attribute", "path": "driver_info/deploy_kernel",
"value": "<glance uuid>"},
{"action": "set-attribute", "path": "driver_info/deploy_ramdisk",
"value": "<glance uuid>"}
],
"conditions": [
{"op": "is-empty", "field": "node://driver_info.deploy_ramdisk"},
{"op": "is-empty", "field": "node://driver_info.deploy_kernel"}
]
}]

所有通过登记挂钩发现并注册的节点都将在自省数据中包含一个auto_discovered标志,这个标志可以使用规则条件eq区分内省规则中的手动注册节点和自动发现节点

{
"description": "Enroll auto-discovered nodes with fake driver",
"actions": [
{"action": "set-attribute", "path": "driver", "value": "fake"}
],
"conditions": [
{"op": "eq", "field": "data://auto_discovered", "value": true}
]
}

功能检测:

从Newton版本开始,Ironic Inspector可以选择发现多个节点功能。 最近IPA图像是需要它的工作。

引导模式
当前启动模式(BIOS或UEFI)可以检测并记录为Ironic的boot_mode功能。 这将使一些驱动改变他们的行为来说明这种能力。

将[capabilities] boot_mode配置选项设置为True以启用。

CPU功能
默认情况下检测到几个CPU标志,并记录下列功能:

cpu_aes AES指令。
cpu_vt虚拟化支持。
cpu_txt TXT支持。
cpu_hugepages巨大页面(2 MiB)的支持。
cpu_hugepages_1g大页面(1 GiB)的支持。
可以定义自己的规则来检测CPU功能。 将[capabilities] cpu_flags配置选项设置为CPU标志和功能之间的映射,例如:

cpu_flags = aes:cpu_aes,svm:cpu_vt,vmx:cpu_vt

How Ironic Inspector Works的更多相关文章

  1. Ironic 裸金属管理服务

    目录 文章目录 目录 Ironic 软件架构设计 资源模型设计 全生命周期的状态机设计 Inspection 裸金属上架自检阶段 Provision 裸金属部署阶段 Clean 裸金属回收阶段 快速体 ...

  2. ironic组件硬件自检服务——ironic-inspector

    介绍 ironic-inspector是一个用于硬件自检的辅助型服务,它可以对被ironic组件管理的裸金属节点进行硬件自检,通过在裸金属节点上运行内存系统,发现裸金属节点的硬件信息,例如CPU数量和 ...

  3. 手动集成 Ironic 裸金属管理服务(Rocky)

    目录 文章目录 目录 前文列表 横向扩展裸金属管理服务节点 配置基础设施 安装 Ironic(BareMetal) 安装 Nova Compute(BareMetal) 配置 Neutron 提供 P ...

  4. 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)

    和其他的Sencha开发人员一样,我会花费大约半天的时间在我喜欢的IDE工具上编写JavaScript,而另一半时间则是在浏览器上测试和调试我的应用程序.在过去几年,每一个主要的浏览器都已大为改善.现 ...

  5. How the Bitcoin protocol actually works

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  6. 理解裸机部署过程ironic

    部署物理机跟部署虚拟机的概念在nova来看是一样,都是nova通过创建虚拟机的方式来触发,只是底层nova-scheduler和nova-compute的驱动不一样.虚拟机的底层驱动采用的libvir ...

  7. ironic images

    参考: http://blog.csdn.net/wanghuiict/article/details/52757359 ironic 整个部署流程中有两组映像,分别是 deploy 映像和 user ...

  8. 洛谷 P3486 [POI2009]KON-Ticket Inspector

    P3486 [POI2009]KON-Ticket Inspector 题目描述 Byteasar works as a ticket inspector in a Byteotian Nationa ...

  9. 注册 Ironic 裸金属节点并部署裸金属实例

    目录 文章目录 目录 前文列表 注册(Enrollment)裸机 创建裸金属实例的 Flavor 部署裸金属实例 日志分析 问题:Failed to create neutron ports for ...

随机推荐

  1. F5-WAF-12.0

    平台: CentOS 类型: 虚拟机镜像 软件包: f5bigip basic software security waf 服务优惠价: 按服务商许可协议 云服务器费用:查看费用 立即部署 产品详情 ...

  2. Windows系统HTTP身份验证方法

    当Windows客户端尝试使用HTTP协议访问基于Web的资源时,会在客户端和服务器之间建立"对话".换句话说,服务器告诉客户端,访问资源之前进行身份验证 ,并且服务器还告诉客户端 ...

  3. 怎么旋转PDF文件的方向并保存成功

    http://jingyan.baidu.com/article/59a015e39d7802f79488651e.html PDF格式的文档是非常普遍的一种阅读电子书格式,基本上非常好用了,不过有时 ...

  4. World Wind Java开发之十五——加载三维模型(转)

    之前的一篇博客是关于加载粗三维模型的,见http://blog.csdn.net/giser_whu/article/details/43452703,这个地方还存在着不能加载纹理的问题,一直没呢解决 ...

  5. 2018.6.9 MyEclipse连接Oracle数据库方法及步骤

    在windows栏找到showXXX 然后选择最后一个others 找到Database 然后选择oracle 接着就是jar包的问题了 这个不同于mysql oracle如果装在了本机上面可以在文件 ...

  6. js数据结构处理--------扁平化数组处理为树结构数据

    将扁平化的数组处理为树结构数据,我们可以利用对象来处理,对象的复制是浅拷贝,指向相同的内存地址: var arr = [ { id: 0, pid: -1, name: 'sadas' }, { id ...

  7. BZOJ2287: 【POJ Challenge】消失之物(背包dp)

    题意 ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. “要使用剩下的 N - 1 物品装满容积为 x 的背包,有几种方法呢?” ...

  8. [BZOJ] 3875: [Ahoi2014&Jsoi2014]骑士游戏

    设\(f[x]\)为彻底杀死\(x\)号怪兽的代价 有转移方程 \[ f[x]=min\{k[x],s[x]+\sum f[v]\} \] 其中\(v\)是\(x\)通过普通攻击分裂出的小怪兽 这个东 ...

  9. <%%>用法初步认识

    <%%>是用于向客户端插入服务器代码所使用的一种标记 例如为了在HTML页面上展示由服务器提供的当前用户的某条信息或名字等便可使用 前台 <a href="home.asp ...

  10. swpan&expect交互脚本

    #!/usr/bin/expectset timeout 30set user USERNAMEset pass PASSWORDspawn sudo pg_dump npi -U admin -p ...