参考:
http://blog.csdn.net/wanghuiict/article/details/52757359
ironic 整个部署流程中有两组映像,分别是 deploy 映像和 user 映像, 其中 deploy 映像用在 inspector 和 部署阶段, user 映像是用户需要安装的操作系统映像。
Deploy 映像
制作ironic deploy镜像其实就是在普通镜像中添加一个ipa服务,用来裸机和ironic通信。 官方推荐制作镜像的工具有两个,分别是CoreOS tools和disk-image-builder 具体链接如下: https://docs.openstack.org/project-install-guide/baremetal/ocata/deploy-ramdisk.html
coreos 映像
coreos 是一个 docker 镜像, 你可以自己构建,也可以直接下载社区 构建好的: http://tarballs.openstack.org/ironic-python-agent/coreos/files/
dib 映像
映像密码
有时候,部署会卡很长时间,我们希望能登录到裸机,查看原因。 这个时候需要有密码可以或者是 ssh 能免密码登录。
对应 dib 添加密码,是通过 dynamic-login element 来完成的。 首先制作带 dynamic-login 的映像:
disk-image-create ironic-agent centos7 dynamic-login -o ironic-deploy
dynamic-login 的原理是在系统里起一个 dynamic-login
服务,在系统 上电时,解析 /proc/cmdline
里的参数,如果用户传了 rootpwd 或者 sshkey, 则写到对应的文件中,这样用户就可以登录系统了。
dynamic-login 使用的是密文,我们可以使用 openssl
生产密码:
$ openssl passwd Password: Verifying - Password: mNw2hVHmny2Ho 然后我们把在 /etc/ironic/ironic.conf 添加我们的密码。 $ cat /etc/ironic/ironic.conf [pxe] pxe_append_params = rootpwd="mNw2hVHmny2Ho" 如果使用 ssh 方式登录,则添加 sshkey $ cat ~/.ssh/id_rsa.pub # 添加 sshkey="<your_sshkey>" $ cat /etc/ironic/ironic.conf [pxe] pxe_append_params = sshkey=""
User 映像
user 映像又分为 partition 映像和 whole disk 映像,两者的区别是 whole disk 映像包含分区表和 boot。目前 partition 映像已经很少 使用了,现在基本都使用 whole disk 映像。
镜像驱动问题
我们使用虚机制作的镜像安装在物理机上,很可能缺少驱动,而导致用户 系统起不来。这里我们以 CentOS 为例,说明如何重新制作驱动。
mount -o loop CentOS.iso /mnt cd /mnt/isolinux lsinitrd initrd.img | grep "\.ko" | awk -F / '{print $NF}' | tr "\n" " " # 将如上命令获得的ko列表拷贝到 /etc/dracut.conf 中 add_drivers+="" rm -rf /boot/*kdump.img dracut --force
也可以用网上做好的镜像:
准备镜像文件 如果已经准备好了镜像文件,这一步可以跳过。 首先,下载ironic deploy镜像 # 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 第二,准备user image,用户镜像。 安装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