原标题:ironic部署物理机
ironic是openstack的帐篷项目之一,主要用来部署和管理裸机,提供统一接口,方便nova同时管理裸机和虚机,ironic的概念架构图如图1所示。本文以tecs3.0为例,介绍ironic部署裸机的流程。
图1 ironic概念架构图
ironic安装
目前tecs3.0默认不安装ironic。有两种方法安装ironic。
● 修改answer-file安装
● 安装完tecs之后使用yum安装
修改anser-file文件安装
tecs是使用packstack工具来部署openstack环境的,tecs.conf对应packstack的answer-file。然后安装tecs的时候选择配置文件方式安装。tecs.conf中的如下内容:
yum安装
首先使用tecs3.0的bin文件安装tecs,这个时候ironic是没有默认安装的,需要我们手动安装。安装步骤如下:
1
rpm包安装
2
权限配置
下面--project后面的services要根据实际情况填写。开源社区默认是service, tecs3.0使用的是services。具体可以通过openstack project list命令查看。
3
创建数据库
数据库密码IRONIC_DBPASSWORD根据实际情况替换,也可以不替换。
4
配置裸机服务
Ø ironic-api配置
修改/etc/ironic/ironic.conf数据库连接用户名,密码,DB_IP要和前面的对应,另外mysql端口号如果不是3306需要在DB_IP之后加上端口号。
eg:
确认mysql的端口号可以通过查看`/etc/my.cnf.d/server.cnf`的[mysqld]部分的ports确认。
Ø 创建数据库表
创建命令如下,如果前面已经创建过表,把create_schema换成update。
重启ironic-api服务
systemctl restart openstack-ironic-api
Ø ironic-conductor配置
HOST_IP替换成实际ip(ironic-conductor服务所在节点ip)enabled_drivers后的驱动根据实际添加,这里使用pxe_ipmitool。
Ø 重启服务
systemctl restart openstack-ironic-conductor
到这里ironic就已经安装完成了,后面就是nova和neutron的一些配置。
共管配置
由于一个nova-compute一次只能使用一种驱动,起虚机是用的libvirt驱动,而部署物理机是需要使用ironic驱动。
目前nova已经提供了共管的方式来同时管理裸机和虚机,参考:nova共管配置
需要说明的是共管方式是:
● 共管方式只是用拿出一个节点提供ironic驱动,专门用来部署裸机。
● 提供ironic驱动的机器不能用来起虚机。
● 裸机使用的flavor必须要设置hw:compute_type=ironic属性。
nova配置
Ø 修改/etc/nova/nova.conf
Ø 重启nova服务
neutron配置
部署裸机和虚机用的neutron配置是一样的,目前tecs3.0有些neutron默认没有设置,需要我们自己设置一下。
Ø 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini,配置如下:
Ø 编辑/etc/neutron/plugins/ml2/openvswitch_agent.ini
Ø 创建网桥
Ø 重启服务
systemctl restart neutron-plugin-openvswitch-agent
最终要保证如下几个服务是正常的:
如果l3-agent启动失败,检查下/etc/neutron/l3_agent.ini`是否配置了:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
Ø 修改/etc/neutron/fwaas_driver.ini文件,内容如下:
Ø 修改/etc/neutron/dhcp_agent.ini,配置dhcp_driver和interface_driver
Ø 创建网络
镜像创建
Ironic部署一台物理机需要两组镜像:deploy images和user images。这两组镜像都可以通过diskimage-builder工具创建。这里建议此工具采用源码安装的方式安装,方便代码修改跟踪:
或者就按照文档中提到的pip安装:
pip install diskimage-builder
deploy image
在Mitaka版本中部署镜像和物理机发现下载的镜像是同一套镜像,都是通过下面命令实现的:
disk-image-create ironic-agent centos7 -o ironic-deploy
这里面使用到了一个重要的模块:Ironic-python-agent,它既完成目标主机在部署阶段提供tgt+iscsi服务,又提供物理机发现阶段收集上报目标主机的物理信息。
成功执行后会生成两个文件:ironic-deploy.vmlinuz和ironic-deploy.initramfs,这里实际上是ironic-deploy. Kernel和ironic-deploy.initramfs,对于fedora这样的OS来说,都不会生成ironic-deploy.vmlinuz。
user image
对于partition images制作,采用下面命令:
image-create centos7 baremetal dhcp-all-interfaces grub2 -o my-image
成功完成后,会生成my-image.qcow2、my-image.vmlinuz和my-image.initrd三个文件。
添加镜像到glance服务
这里还是以partition images来介绍,添加 images到glance服务:
创建flavor
这里我们先创建一个flavor,flavor里的硬件信息我们先手动填写,里面的cpu,内存,硬盘和要部署的裸机硬件信息学保持一致。
如果是实际大批量部署,需要用到ironic-inspector来收集硬件信息。
当然,在创建flavor之前,必须先确保quota额度够了。通过nova quota-show可以看一下,不够可以分别通过下面命令进行cores和ram的扩展(后面的ID是tenant为admin的ID)
PXE配置
在部署之前,我们需要配置tftp服务,先安装tftp-serve和xinet的rpm包。
yum -y install tftp-server syslinux-tftpboot
xinetd也要安装,并且安装后需要进行enable和start操作:
创建对应的目录,并修改一下其所有者。
配置tftp服务, /etc/xinetd.d/tftp配置文件如下:
ironic部署的时候会自动生成指定的镜像,以及pxe需要的default文件,并存放在/tftpboot目录下。根据ironic node的uuid和mac地址来区分。
开始部署
使用`ironic node-validate $NODE_UUID`判断node是否可以部署确保boot、deploy、management和power相关接口是True状态。
说明:
一般创建完ironic node之后需要等待大概1min才能进行nova boot操作,否则会出现no valid host错误。这是因为nova-compute会定期去同步ironic node的信息到nova数据库中。
检查nova hypervisor-list 和nova hypervisor-show $ID,确保信息按配置修改。没有则等待一段时间。
Ø 创建实例
这时候可以使用kvm连接我们要部署的裸机,裸机会从网口启动,下载部署镜像。
责任编辑: