openstack ironic standalone 方式部署
基本原理http://docs.openstack.org/developer/ironic/#introductionIronic 原来属于nova项目,叫做Nova “bare metal” driver。后来ironic成为一个独立的openstack项目。ironic像管理虚拟机一样管理物理机,主要用于安装配置物理机。ironic采用了可插拔的driver体系,可支持厂商特定的硬件。每个d
·
Ironic 原来属于nova项目,叫做Nova “bare metal” driver。后来ironic成为一个独立的openstack项目。
ironic像管理虚拟机一样管理物理机,主要用于安装配置物理机。
ironic采用了可插拔的driver体系,可支持厂商特定的硬件。每个driver抽象了一种硬件的功能。
默认提供了几个底层driver,抽象了PXE 和 IPMI等功能。
ironic api服务对外提供api。
ironic conductor服务跟api服务之间通过rpc通信。
ironic drivers向bare metal发出操作。
例如,用户发出boot请求,通过 Nova API 和 Nova Scheduler发到nova compute服务,
然后传到 Ironic API,然后到达 Ironic Conductor, 最终由某个 Driver 实际操作物理机。
创建物理机实例与创建虚拟机的过程有相似之处,Ironic 会与其他服务例如nova,neutron,glance等交互,
创建一个 bare metal instance。
PXE是从网卡启动,BIOS从DHCP获取IP地址,然后一般通过TFTP协议下载
Network Bootstrap Program (NBP),加载到内存,开始引导。
ironic注册硬件,主要是登记网卡MAC地址,IPMI地址及认证信息。
API会暴露支持的driver的列表,以及承载这些driver的conductor的主机列表。
ironic需要两套镜像:deploy image,用来部署实际的OS。user image,是实际的OS需要安装到裸机的磁盘上。
两种下载image的方法。
1. 通过iSCSI下载。物理节点暴露iscsi给conductor。
2. 直接下载。物理节点从conductor下载。
安装ironic deploy主机
安装操作系统。以下
假设hostname是
ironic-deploy,IP地址10.10.102.96。
ironic需要工具qemu-img,fuser,安装相应的包。
# yum install -y qemu-img psmisc
安装openstack allinone
。必须安装ironic组件。
ironic如果配置成
standalone服务,其他服务如glance,neutron,nova,cinder等无需安装。
配置ironic
配置成
standalone服务。
编辑 /etc/ironic/ironic.conf 的
auth_strategy 和 dhcp_provider。
[DEFAULT]
auth_strategy=noauth
[dhcp]
dhcp_provider=none
重启服务
# systemctl restart openstack-ironic-conductor openstack-ironic-api
安装 ironic-ui
集成ironic到dashboard。
git clone https://git.openstack.org/openstack/ironic-ui
cd ironic-ui/
python setup.py install
安装
ironic-ui。这里为测试,直接拷贝到相应目录。
pythondir="/usr/lib/python2.7/site-packages"
dashboarddir="/usr/share/openstack-dashboard"
cp ${pythondir}/ironic_ui/enabled/_2200_ironic.py ${dashboarddir}/openstack_dashboard/local/enabled/
cp -a ${pythondir}/ironic_ui/static/dashboard/admin/ironic ${dashboarddir}/static/dashboard/admin/
cp -a ${pythondir}/ironic_ui/content/ironic/ ${dashboarddir}/openstack_dashboard/dashboards/admin/
cp ${pythondir}/ironic_ui/api/ironic.py ${dashboarddir}/openstack_dashboard/api/
cp ${pythondir}/ironic_ui/api/ironic_rest_api.py ${dashboarddir}/openstack_dashboard/api/rest/
systemctl restart httpd
准备dhcp和tftp服务
ironic的standalone方式,
需要自行安装tftp和dhcp服务。过程略。
准备镜像文件
如果已经准备好了镜像文件,这一步可以跳过。
# cd /tftpboot/
# mkdir -p ironic
# cd ironic/
# wget http://tarballs.openstack.org/ironic-python-agent/coreos/files/coreos_production_pxe.vmlinuz
# wget http://tarballs.openstack.org/ironic-python-agent/coreos/files/coreos_production_pxe_image-oem.cpio.gz
安装diskimage-build
# git clone https://github.com/openstack/dib-utils.git
# cd dib-utils/
# python setup.py install
# git clone git://git.openstack.org/openstack/diskimage-builder
# cd diskimage-builder/
# python setup.py install
下载 fedora镜像
# disk-image-create fedora baremetal dhcp-all-interfaces grub2 -o my-fedora
修改镜像的默认密码
# yum install libguestfs-tools-c
# cp my-fedora.qcow2 /tmp/
# chmod 777 /tmp/my-fedora.qcow2
# virt-sysprep -a /tmp/my-fedora.qcow2 --root-password password:111111
# mv my-fedora.initrd my-fedora.vmlinuz my-fedora.qcow2 /tftpboot/ironic/
# mv /tmp/my-fedora.qcow2 /tftpboot/ironic/
将 /tftpboot 修改为ironic拥有。
# chown -R ironic:ironic /tftpboot
# chmod 664 /tftpboot/ironic/*
最后,需要的镜像文件有五个:两个deploy镜像文件,三个user镜像文件。
# ll /tftpboot/ironic/
总用量 829436
-rw-rw-r-- 2 ironic ironic 347257429 coreos_production_pxe_image-oem.cpio.gz
-rw-rw-r-- 2 ironic ironic 33837088 coreos_production_pxe.vmlinuz
-rw-rw-r-- 2 ironic ironic 17685716 my-fedora.initrd
-rw-rw-r-- 2 ironic ironic 6679512 my-fedora.vmlinuz
-rw-rw-r-- 1 ironic ironic 443875328 my-fedora.qcow2
配置dhcp和tftp服务
准备测试 ironic 部署的脚本
#!/bin/bash
nodeuuid="1e1ba69d-a6df-4f4a-8653-fa0402c591d6"
macaddr="00:03:25:11:31:21
"
portid="4609e71f-c7db-490d-ba75-b3c338129b24"
ipmiaddr="10.10.10.200
"
ipmiuser="admin"
ipmipass="password"
systemctl restart tftp dhcpd
source /root/keystonerc_admin
ironic node-create -d pxe_ipmitool \
-u ${nodeuuid} \
-i ipmi_address=${ipmiaddr} -i ipmi_username=${ipmiuser} -i ipmi_password=${ipmipass} \
-i deploy_kernel=file:///tftpboot/ironic/coreos_production_pxe.vmlinuz \
-i deploy_ramdisk=file:///tftpboot/ironic/coreos_production_pxe_image-oem.cpio.gz
ironic port-create -n $nodeuuid -a $macaddr -u ${portid}
ironic node-update $nodeuuid add \
instance_info/image_source=file:///tftpboot/ironic/my-fedora.qcow2 \
instance_info/root_gb=12 \
instance_info/kernel=file:///tftpboot/ironic/my-fedora.vmlinuz \
instance_info/ramdisk=file:///tftpboot/ironic/my-fedora.initrd \
instance_info/capabilities='{"boot_option": "local"}'
ironic node-validate $nodeuuid
ironic node-set-provision-state $nodeuuid active
ironic node-show $nodeuuid
创建的tftp部署文件
[root@ironic-deploy ~]# ll /tftpboot/pxelinux.cfg/
总用量 4
-rw-r--r-- 1 ironic ironic 1054 9月 29 16:35 01-00-03-25-11-31-21
[root@ironic-deploy ~]# cat /tftpboot/pxelinux.cfg/01-00-03-25-11-31-21
default deploy
label deploy
kernel 1e1ba69d-a6df-4f4a-8653-fa0402c591d6/deploy_kernel
append initrd=1e1ba69d-a6df-4f4a-8653-fa0402c591d6/deploy_ramdisk selinux=0 disk=cciss/c0d0,sda,hda,vda iscsi_target_iqn=iqn.2008-10.org.openstack:1e1ba69d-a6df-4f4a-8653-fa0402c591d6 deployment_id=1e1ba69d-a6df-4f4a-8653-fa0402c591d6 deployment_key=3TG9BB0YPTAMK77ZJWAXI08YNFNZUW96 ironic_api_url=http://10.10.102.96:6385 troubleshoot=0 text nofb nomodeset vga=normal boot_option=local ipa-api-url=http://10.10.102.96:6385 ipa-driver-name=pxe_ipmitool boot_mode=bios coreos.configdrive=0
ipappend 3
label boot_partition
kernel 1e1ba69d-a6df-4f4a-8653-fa0402c591d6/kernel
append initrd=1e1ba69d-a6df-4f4a-8653-fa0402c591d6/ramdisk root={{ ROOT }} ro text nofb nomodeset vga=normal
label boot_whole_disk
COM32 chain.c32
append mbr:{{ DISK_IDENTIFIER }}
label trusted_boot
kernel mboot
append tboot.gz --- 1e1ba69d-a6df-4f4a-8653-fa0402c591d6/kernel root={{ ROOT }} ro text nofb nomodeset vga=normal intel_iommu=on --- 1e1ba69d-a6df-4f4a-8653-fa0402c591d6/ramdisk
运行上面的测试脚本,如果没有错误,ironic部署过程开始。首先ironic node从dhcp服务器获得ip地址,然后由tftp下载deploy镜像,在系统引导之后,利用iscsi下载user镜像到本地硬盘。下载完成之后,意味着系统安装完成,ipmi重启机器。机器启动,从本地引导,进入新安装的系统。
版权声明:本文为博主原创文章,欢迎转载。转载请注明来源http://blog.csdn.net/wanghuiict http://blog.csdn.net/wanghuiict/article/details/52757359
更多推荐
已为社区贡献71条内容
所有评论(0)