Ironic

0. 知识准备

Ironic是openstack中管理裸机的服务,能够控制物理机的开机关机,安装与卸载操作系统等操作,在讲解Ironic之前,我们先说说如何给一台裸机通过网络安装操作系统,我们需要了解一下镜像、PXE、IPMI等知识。

kernel与ramdisk镜像

对于Linux用户来说,Ramdisk并不陌生,可是为什么需要它呢?本文对Ramdisk在内核启动过程中的作用,以及它的内部机制进行深入介绍。ramdisk 包括initrd/initramfs。

在早期的Linux系统中,一般就只有软盘或者硬盘被用来作为Linux的根文件系统,因此很容易把这些设备的驱动程序集成到内核中。但是现在根文件系统 可能保存在各种存储设备上,包括SCSI, SATA, U盘等等。因此把这些设备驱动程序全部编译到内核中显得不太方便,违背了“内核”的精神。在Linux内核模块自动加载机制的介绍中,我们看到利用udevd可以实现实现内核模 块的自动加载,因此我们希望根文件系统的设备驱动程序也能够实现自动加载。但是这里有一个矛盾,udevd是一个可执行文件,在根文件系统被挂载前,是不可能执行udevd的,但是如果udevd没有启动,那就无法自动加载根根据系统设备的驱动程序,同时也无法在/dev目录下建立相应的设备节点。

为了解决这个矛盾,于是出现了initrd(boot loader initialized RAM disk)。initrd是一个被压缩过的小型根目录,这个目录中包含了启动阶段中必须的驱动模块,可执行文件和启动脚本。包括上面提到的udevd,当系统启动的时候,booload会把initrd文件读到内存中,然后把initrd的起始地址告诉内核。内核在运行过程中会解压initrd,然后把 initrd挂载为根目录,然后执行根目录中的/initrc脚本,您可以在这个脚本中运行initrd中的udevd,让它来自动加载设备驱动程序以及 在/dev目录下建立必要的设备节点。在udevd自动加载磁盘驱动程序之后,就可以mount真正的根目录,并切换到这个根目录中。

initramfs与initrd功能类似,但是改进了initrd大小不可变、块设备缓冲区等缺点。

参考资料: http://blog.csdn.net/ruixj/article/details/3772752

什么是PXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。

1.操作系统安装的流程

  通用流程:首先,bios启动,选择操作系统的启动(安装)模式(此时,内存是空白的),然后根据相关的安装模式,寻找操作系统的引导程序(不同的模式,对应不同的引导程序当然也对应着不同的引导程序存在的位置),引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz),完成操作系统安装前的初始化;接着,操作系统开始安装相关的系统和应用程序。

2.pxe模式安装操作系统的原理

PXE协议分为client和server两端,PXE client在网卡的ROM中,当计算机启动时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

  • 硬盘安装的流程:bios启动——MBR寻找grub——grub程序读取menu.list等配置文件,找到内核启动镜像和相关初始化程序,安装(或者启动)。
  • PXE网络安装的流程:bios启动——pxe client中的程序进入内存,显示命令菜单——此程序开始寻找网络引导程序(bootstrap文件,这个文件的名字随着发行版的不同而不同,在centos中,它是pxelinux.0)——引导程序读取配置文件pxelinux.cfg,获得系统初始化的相关文件信息——系统启动,开始进行安装。

2.1安装流程:

  • 客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP,并搜寻引导文件的位置
  • DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上)
  • 客户机向本网络中的TFTP服务器索取bootstrap文件
  • 客户机取得bootstrap文件后之执行该文件
  • 根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统
  • 进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装

2.2流程小结

  • 网卡的client寻找dhcp服务器,由/etc/dhcp.conf得到ip和引导程序所在地点
  • 由dhcp.conf(引导程序文件名)和tftp的配置(tftp跟路径,里面有引导程序和系统初始化程序),得到引导程序pxelinux启动文件的绝对路径,运行引导程序,读取启动配置文件pxelinux.cfg/default,得到操作系统初始化的两个相关文件
  • 选择安装方式   客户端广播dhcp请求——服务器相应请求,建立链接——由dhcp和tftp配置得到ip还有引导程序所在地点——客户端下载引导程序并开始运行——引导程序读取 PXE过程图 pxe过程图

2.3相关文件位置与内容:

  • dhcp配置文件/etc/dhcpd/dhcp.conf——ip管理与引导程序名称
  • tftp配置文件/etc/xinetd.d/tftp——tftp根目录,和上面的引导程序名称组成完整路径
  • 引导程序读取的配置文件/tftpboot/pxelinux.cfg/default——启动内核其他

参考资料: PXE网络安装操作系统过程

PXE能安装操作系统,但安装操作系统总得开机吧,但是如何远程开机呢,这件事就是由IPMI来做的。

什么是IPMI

智能平台管理接口(IPMI:Intelligent Platform Management Interface)是一项应用于服务器管理系统设计的标准,提供管理和监控CPU、固件(BIOS、UEFI)和操作系统等功能,由Intel、HP、Dell和NEC公司于1998年共同提出。利用此接口标准设计有助于在不同类服务器系统硬件上实施系统管理,使不同平台的集中管理成为可能,目前有超过200家公司支持IPMI。IPMI信息通过基板管理控制器 (BMC)进行交流,不依赖BOIS或者操作系统,通过网络进行连接。

DCMI (Data Center Management Interface) 数据中心管理接口是一个基于IPMI但是为数据中心管理设计的一个类似的标准,它使用IPMI的接口但是,但是最小化可选接口,也有一些其他的不通电。

IPMI可以在操作系统启动之前、管理系统启动之前、操作系统或者管理系统失败(与带内系统管理的最大特性)对物理机进行管理,利用IPMI可以实现以下功能:

  1. 可以在服务器通电(没有启动操作系统)情况下,对它进行远程管理:开机,关机,重启
  2. 基于文本的控制台重定向,可以远程查看和修改BIOS设置,系统启动过程,登入系统等
  3. 可以远程通过SoL连接服务器,解决ssh服务无法访问,远程安装系统,查看系统启动故障等问题
  4. 可以通过系统的串行端口进行访问
  5. 故障日志记录和 SNMP 警报发送,访问系统事件日志 (System Event Log ,SEL) 和传感器状况

Roles and functions:

IPMI

IPMI技术功能总结:

  • 远程电源控制 (on / off / cycle / status)
  • 串口的IP映射 Serial over LAN (SoL)
  • 支持健康关机(Graceful shutdown support)
  • 机箱环境监控 (温度, 风扇转速, CPU电压等)
  • 远程设备身份LED控制(Remote ID LED control)
  • 系统事件日志(System event log)
  • 平台事件跟踪(Platform Event Traps)
  • 数据记录(Data logging)
  • 虚拟KVM会话(Virtual KVM)
  • 虚拟媒体(Virtual Media)

参考资料: https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface

什么是iSCSI

iSCSI是一个指令集,iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

早期的企业使用的服务器若有大容量磁盘的需求时,通常是透过SCSI来串接SCSI 磁盘,因此服务器上面必须要加装SCSI卡,而且这个SCSI是专属于该服务器的。 后来这个外接式的SCSI设备被SAN的架构所取代,在SAN的标准架构下,虽然有很多的服务器可以对同一个SAN 进行存取的动作,不过为了速度需求,通常使用的是光纤通道。但是光纤通道很贵,不但设备贵,服务器上面也要有光纤卡,很麻烦,所以光纤的SAN在中小企业很难普及。

后来网络实在太普及,尤其是以IP封包为基础的LAN技术已经很成熟,再加上以太网路的速度越来越快,所以就有厂商将SAN的连接方式改为利用IP技术来处理。 然后再透过一些标准的设定,最后就得到Internet SCSI (iSCSI)这个的产生! iSCSI主要是透过TCP/IP的技术,将储存设备端透过iSCSI target (iSCSI目标端)功能,做成可以提供磁盘的服务器端,再透过iSCSI initiator (iSCSI初始化用户)功能,做成能够挂载使用iSCSI target的用户端,如此便能透过iSCSI设置来进行磁盘的应用了。

也就是说,iSCSI 这个架构主要将储存装置与使用的主机分为两个部分,分别是: iSCSI target:就是储存设备端,存放磁盘或RAID的设备,目前也能够将Linux主机模拟成iSCSI target了! 目的在提供其他主机使用的磁盘。

iSCSI initiator:就是能够使用target的用户端,通常是服务器。 也就是说,想要连接到iSCSI target的服务器,也必须要安装iSCSI initiator的相关功能后才能够使用iSCSI target提供的磁盘。


1.Ironic简介

如今Openstack在虚拟化管理部分已经很成熟了, 通过nova我们可以创建虚拟机, 虚拟磁盘, 管理电源状态,快速通过镜像启动虚拟机。但是在物理机管理上一直没有成熟的解决方案。在这样的背景下Ironic(Bare-Metal Provisioning)诞生了,它可以解决物理机的添加,删除,电源管理和安装部署。Ironic提供了一系列常用的驱动,同时提供了插件的机制让厂商可以开发自己的driver,这让它支持几乎所有的硬件。

为什么要提供裸机服务

下面列举了在云计算中需要用裸机的情况:

  • 高性能的计算集群
  • 有些计算任务需要访问无法虚拟化的硬件设备
  • 数据库托管(有些数据库在hypervisor中运行效率很差)
  • 单租户、专用性能硬件、安全、可靠性和其他管理要求
  • 或者在云上快速部署

Ironic的前世和今生

最早baremetal的概念出现在nova里,物理机和虚拟机管理有很多地方非常相似,比如物理机和虚拟机都需要开机关机,安装部署,添加和删除,为了避免重复造轮子,他们在nova中实现了一个物理机的driver,这样把物理机管理做为计算资源管理的一个子集了。后来发现这样做有问题:

  • 早期baremetal作为一个driver有自己的数据库,同一个项目中有两套数据库不合适。
  • 在部署和管理baremetal的过程中有很多需要存储的信息是和部署管理虚拟机是不同的,通过nova api来获取这些信息比较尴尬, 把baremetal剥离出来有助于划清baremetal和虚拟机部署的界限。
  • 有时候baremetal需要做一些比较特殊的行为,比如discovery, hardware raid configuration, firmware updates, burn-in这些操作,它们不适合放在nova里面。比较好的办法是当完成这些操作的时候,向nova去注册信息,作为nova中的可用的资源,最后通过nova boot去调用这些资源。

经过很多次讨论,从Juno开始社区把bare metal分离出来了, 命名为用Ironic, 今后会通过nova调用Ironic的api来实现对物理机资源的管理和控制。

传统的hypervisor一般包括创建虚拟机、枚举虚拟设备、管理电源、加载操作系统等功能,与之对应,Ironic可以看成结合多个驱动提供一套hypervisor API来操作物理机,相当于一个hypervisor,作为一个驱动给Nova来用。

Ironic提供的功能(API)

  • 节点相关
    • 节点增删改查(List, Searching, Creating, Updating, and Deleting)
    • 合法性检查
    • 设置和清除维修状态
    • 设置获取启动盘
    • 获取节点信息
    • 更改电源状态
    • 更改节点状态( manage, provide, inspect, clean, active, rebuild, delete (deleted), abort)
    • 设置RAID
    • 启动、停止、获取console
    • 查看、调用厂商定制方法(passthru方法)
    • 查看与Node连接的端口
  • 接口相关
    • 对物理接口(Port)的增删改查(Listing, Searching, Creating, Updating, and Deleting ),新建的时候就要指定接口的物理地址(一般是MAC地址)与Node进行绑定。(硬件的port与软件中的port不同,通常称为接口,比如串行接口serial port、 并行端口Parallel port等)
  • 驱动相关
    • 列举所有驱动
    • 查看驱动的详细信息、属性
    • 查看和调用厂商的驱动
  • Chassis
    • 增删改查
    • Chassis这个资源类型是为了给节点分组用的,目前只有列举一组节点的功能。不赞成使用这个类型,将来可能会去除掉。

| 版本 | 特点 | 说明 | | Icehouse | -- | 第1版 | | 0:2 | 1:2 | 2:2 | | 0:3 | 1:3 | 2:3 | | 0:4 | 1:4 | 2:4 | | 0:5 | 1:5 | 2:5 | | 0:6 | 1:6 | 2:6 | | 0:7 | 1:7 | 2:7 |

概念架构

下图显示了在提供物理机服务时各个组件的关系。(Ceilometer和Swift能与Ironic一起使用,但是在图中没有显示)

概念架构

逻辑架构

Ironic 逻辑架构 Ironic服务由以下组件构成。

  • Ironic API,一个RESTful API服务,管理员和其他服务通过API与Ironic进行交互;
  • Ironic Conductor, 完成Ironic服务的绝大部分工作,通过API对外开放其功能,与API通过RPC进行交互;
  • Dirvers,通过一系列的驱动来支持不同的硬件;
  • 消息队列
  • Database,用来存储资源信息。

project架构

- ironic: 包含ironic-api 和ironic-conductor进程
- python-ironicclinet: python clinet and CLI
- ironic-python-agent: 用于加载厂商的驱动,嵌入deployment ramdisk中
- pyghmi: 一个python的IPMI库,是一个可供选择的IPMItool
- ironic-inspector: 硬件自检工具
- bifrost:单独部署Ironic的Ansible脚本
- ironic-lib: 通用库函数
- ironic-webclinet :web客户端
- ironic-ui: ironic的horizon插件

部署架构

云平台管理员可以使用RESTful API注册硬件,制定硬件的属性,比如MAC地址、IPMI证书。可以开启多个API服务实例。

由于Ironic Conductor是唯一一个需要访问数据层和IPMI控制层的服务,为了安全起见,最好将conductor service 放在一个独立的主机上。 为了支持各类驱动和管理故障迁移,可以有多个conductor实例存在,每个conductor实例可以运行多个drivers,conductor实例应该放在单独的节点上。

ironic部署架构


理解裸机配置过程

下面来讲讲Ironic怎么对物理机进行管理的。

Ironic部署裸机过程

当一个启动实例的请求到达Ironic之后会发生哪些动作呢?下面这张图显示了在提供一台裸机实例时的步骤。

在这之前有一些准备工作需要做:

  • 在ironic-conductor运行的节点上配置好一些独立的包,比如tftp-server\ipmi\syslinux等。
  • 必须配置好Nova。
  • 为可用的硬件配置好flavor,Nova必须知道使用flavor来启动。
  • 在Glance上创建好镜像,需要以下镜像:
    • bm-deploy-kernel
    • bm-deploy-ramdisk
    • user-image
    • user-image-vmlinuz
    • user-image-initrd
  • 硬件已经通过Ironic RESTful API服务进行注册了。

Bare Metal Deployment Steps 部署过程如下:

  1. 通过Nova API给出一个启动实例的请求,通过消息队列到达Nova Scheduler。
  2. Nova Schedule 应用过滤条件找到合格的计算节点。Nova Schedule会使用flavor的信息来匹配目标物理节点,比如‘cpu_arch’、‘baremetal:deploy_kernel_id’、‘baremetal:deploy_ramdisk_id’。
  3. 一个任务由Computer Manager调用driver的sapwn方法进行唤起,该dirvier知道需要启动的信息,比如从哪个镜像启动等。
  4. 通过Ironic API从Ironic Database取得bare metal node的信息之后,该node被预定。
  5. 服务bare metal node的Ironic conductor从Glance拉去镜像到本地磁盘。其中,pxe为前缀的驱动包含deploy ramdisk和user instance images;而agent为前缀的驱动存取deploy ramdisk,用户实例镜像作为一个对象存储的临时链接被给出。
  6. 加载虚拟接口,同时 Neutron API更新DHCP端口用于支持PXE/TFTP选项。
  7. Nova的ironic驱动通过Ironic API向Ironic conductor发出一个部署请求。
  8. PXE驱动准备TFTP bootloader。
  9. IPMI驱动发出从网络启动节点命令并且打开电源。
  10. 启动deploy ramdisk,然后根据不同的驱动进行不同的操作,使用pxe前缀的驱动时,conductor通过iSCSI复制镜像到物理机;或者使用agent为前缀的驱动时,deploy ramdisk从临时URL下载镜像,然后上传至openstack 对象存储服务上。
  11. IPMI驱动重启bare metal node。注意在部署过程中有两次开机,第一次是地9步提到的部署镜像,第二次是这里提到的。
  12. 更新bare metal 节点状态信息,节点实例变成可用状态。

下面显示两个部署实例

  1. 使用pxe_* 为前缀的驱动的部署过程

pex_*

  1. 使用agent_* 为前缀的驱动的部署过程

angent_*


驱动

驱动的种类

  • pxe
  • agent
  • fake
  • iscsi

Ironic Python Agent(IPA)

Ironic Python Agent(简称IPA或者agent)是一个基于python的代理,用于处理ironic中裸机节点的一系列动作,比如检查、配置、清除和部署镜像。运行在ramdisk中,暴露出REST API给conductor。

驱动可以分为两类:

  • 一是以pex 或者 iscsi 为前缀的驱动,IPA暴露出根硬盘给ironic conductor,由conductor将镜像复制到这里,然后交给IPA进行启动
  • 二是以agent_ 为前缀的驱动,conductor准备一个进行的存储在swift上的镜像URL给IPA,由IPA下载镜像和完成部署的操作

从Kilo版开始,所有驱动使用IPA进行部署。使用IPA的前提是准备一个部署虚拟盘(deploy ramdisk),ramdisk内包含IPA,IPA支持使用代理下载镜像

IPA相当于一个驱动的代理,上面给conductor提供API,下面与实际的驱动一起工作。

Liberty版支持agent的驱动有:

  • agent_ilo
  • agent_ipmitool
  • agent_pyghmi
  • agent_ssh
  • agent_vbox

使用lookup、hearteat机制,

  1. 启动时agent给Conductor的vendor_passthru lookup endpoint(地址为/v1/drivers/{driver}/vendor_passthru/lookup)发送一个硬件的profile
  2. 然后Ironic就可以得出该节点的uuid,在成功发现该节点之后,agent隔N秒发送心跳包给Conductor(hearteat地址为/v1/nodes/{node_ident}/vendor_passthru/heartbeat )
  3. conductor执行一系列动作,包括查询已经运行的命令的状态,

硬件管理器

硬件管理器(HardwareManager)是IPA中的一个概念,IPA通过重写硬件管理器来支持多种硬件平台。通过自定义 hardware managers 可以允许用户引入特定的硬件工具集、文件和清除步骤等等,比如可以引入 BIOS flashing utility and BIOS file,然后在cleaning step中重写BIOS版本。

修改硬件的方法按照优先顺序发送给每个管理器,管理器检查是否包含该方法,如果没有则抛出IncompatibleHardwareMethodError异常,IPA继续发送给下一个管理器,直到某个管理器包含该方法并且返回方法的结果,如果所有的管理器都没有改方法则抛出 HardwareManagerMethodNotFound异常。

驱动列表

种类 说明 实现的驱动
DRAC 戴尔公司的一种系统管理硬件和软件解决方案(Dell Remote Access Controller) pxe_drac
AMT 英特尔主动管理技术,远程带外管理个人电脑的硬件和固件的技术,用于监控、维修、更新、升级硬件和固件 pex_amt
SNMP SNMP电源驱动用户管理数据中心机架的配电单元,可与PXE驱动结合起来用于网络部署和配置 pxe_snmp
iLO iLO是Integrated Ligths-out的简称,是HP服务器上集成的远程管理端口,只要将服务器接入网络并且没有断开服务器的电源,不管HP服务器的处于何种状态(开机、关机、重启),都可以允许用户通过网络进行远程管理 iscsi_ilo, agent_ilo, pxe_ilo。 iscsi_ilo和agent_ilo使用iLO实现带外管理,iscsi_ilo使用diskimage-builder建立镜像,从网络启动;而agent_ilo使用IPA的部署镜像,裸机节点从本地启动。pxe_ilo使用PXE/iSCSI部署(和常规PXE驱动一样)
SeaMicro SeaMicro电源驱动可以使用SeaMicro服务器的电源周期管理功能。SeaMicro服务器是由AMD公司发布的,基于ARM处理器,特点是节能。 pxe_seamicro, 使用PXE/iSCSI进行部署镜像,然后使用SeaMicro替代IPMI对裸机进行管理。
iRMC 富士通的驱动,通过ServerView Common Command Interface(SCCI,富士通的卡)控制电源 - pxe_irmc,使用PXE部署 - iscis_irmc,支持用虚拟光驱来部署镜像 - agent_irmc,支持使用虚拟光驱部署IPA
VirtualBox VirtualBox驱动用来将虚拟机模拟成裸机节点进行测试Ironic。Ironic使用pex_ssh和agent_ssh驱动连接VirtualBox主机(要安装在Linux下,Windows下SSH不太好用) - pxe_vbox:使用基于iSCSI的部署机制- agent_vbox:使用基于agent的部署机制- fake_vbox:使用VirtualBox管理,使用fake部署
UCS 思科的驱动,用户管理思科 UCS B/C 系列的服务器(类似IPMI) - pxe_ucs: 使用PXE/iSCSI部署镜像,使用UCS代替IPMI管理节点 - agent_ucs:使用IPAramdisk部署镜像,使用UCS代替IPMI管理节点
CIMC 思科为standalone Cisco UCS C系列服务器提供的驱动,可以利用CIMC进行管理裸机(代替IPMI) pxe_iscsi_cimc,使用PXE+iSCSI部署 - pxe_agent_cimc,使用PXE启动+Agent部署
Wake-On-Lan Wake-On-Lan是一个允许通过网络消息打开电脑电源的标准,不需要额外硬件,但还在测试阶段。Wake-On-Lan只有打开电源的功能,关闭电源需要手工执行。它没有获取电源状态的能力,任何电源状态的API调用它只返回数据库里的值。 pex_wol:使用PXE/iPXE启动,iSCSI部署。
iBoot iBoot power driver通过DxP协议对使用了Dataprobe(美国一家制造商)iBoot 设备的服务器进行电源周期管理 实现:pxe_iboot,使用PXE/iPXE启动,iSCSI部署。
驱动 用途
pxe_ssh 用VM模拟物理机时使用,

DRAC 戴尔公司的一种系统管理硬件和软件解决方案(Dell Remote Access Controller); 实现:pxe_drac

AMT 英特尔主动管理技术,远程带外管理个人电脑的硬件和固件的技术,用于监控、维修、更新、升级硬件和固件。

实现:

SNMP SNMP电源驱动用户管理数据中心机架的配电单元,可与PXE驱动结合起来用于网络部署和配置。

实现:pxe_snmp

iLO iLO是Integrated Ligths-out的简称,是HP服务器上集成的远程管理端口,只要将服务器接入网络并且没有断开服务器的电源,不管HP服务器的处于何种状态(开机、关机、重启),都可以允许用户通过网络进行远程管理。

实现: iscsi_ilo, agent_ilo, pxe_ilo。 iscsi_ilo和agent_ilo使用iLO实现带外管理,iscsi_ilo使用diskimage-builder建立镜像,从网络启动;而agent_ilo使用IPA的部署镜像,裸机节点从本地启动。pxe_ilo使用PXE/iSCSI部署(和常规PXE驱动一样)

SeaMicro SeaMicro电源驱动可以使用SeaMicro服务器的电源周期管理功能。SeaMicro服务器是由AMD公司发布的,基于ARM处理器,特点是节能。

实现: pxe_seamicro, 使用PXE/iSCSI进行部署镜像,然后使用SeaMicro替代IPMI对裸机进行管理。

iRMC 富士通的驱动,通过ServerView Common Command Interface(SCCI,富士通的卡)控制电源

实现:

  • pxe_irmc,使用PXE部署
  • iscis_irmc,支持用虚拟光驱来部署镜像
  • agent_irmc,支持使用虚拟光驱部署IPA

VirtualBox VirtualBox驱动用来将虚拟机模拟成裸机节点进行测试Ironic。Ironic使用pex_ssh和agent_ssh驱动连接VirtualBox主机(要安装在Linux下,Windows下SSH不太好用)

实现:

  • pxe_vbox:使用基于iSCSI的部署机制
  • agent_vbox:使用基于agent的部署机制
  • fake_vbox:使用VirtualBox管理,使用fake部署

UCS 思科的驱动,用户管理思科 UCS B/C 系列的服务器(类似IPMI)

实现:

  • pxe_ucs: 使用PXE/iSCSI部署镜像,使用UCS代替IPMI管理节点
  • agent_ucs:使用IPAramdisk部署镜像,使用UCS代替IPMI管理节点

CIMC 思科为standalone Cisco UCS C系列服务器提供的驱动,可以利用CIMC进行管理裸机(代替IPMI) 实现:

  • pxe_iscsi_cimc,使用PXE+iSCSI部署
  • pxe_agent_cimc,使用PXE启动+Agent部署

Wake-On-Lan Wake-On-Lan是一个允许通过网络消息打开电脑电源的标准,不需要额外硬件,但还在测试阶段。 Wake-On-Lan只有打开电源的功能,关闭电源需要手工执行。它没有获取电源状态的能力,任何电源状态的API调用它只返回数据库里的值。

实现: pex_wol:使用PXE/iPXE启动,iSCSI部署。

iBoot iBoot power driver通过DxP协议对使用了Dataprobe(美国一家制造商)iBoot 设备的服务器进行电源周期管理

实现:pxe_iboot,使用PXE/iPXE启动,iSCSI部署。

Ironic-部署物理机流程代码分析

部署流程图

ironic 这是Liberty版的裸机部署流程图

results matching ""

    No results matching ""