制作openstack-centos镜像

本文详细介绍如何在CentOS 6.3系统上利用QEMU、Libvirt等工具制作适用于OpenStack环境的系统镜像,并完成镜像上传及实例启动过程。

一、准备工作

我在计算节点上面制作镜像,计算节点为centos6.3 64位系统

1.安装底层支持包
yum groupinstall Virtualization "Virtualization Client"
yum install libvirt

2.下载或从本地上传进去一个完整的系统镜像

mkdir /openstack-image
cd /openstack-image
下载centos镜像文件:CentOS-6.3-i386-minimal.iso

3.启动服务
service libvirtd restart

二、制作镜像
1.建立镜像文件
cd /openstack-image
qemu-img create -f qcow2 CentOS6.3-openstack.img 10G
chown qemu:qemu /openstack-image -R

2.通过virt-install来创建一个新的虚拟机
virt-install -n CentOSimg -r 4096 --cpu host -c CentOS-6.3-i386-minimal.iso --disk path=/openstack-image/CentOS6.3-openstack.img,device=disk,bus=virtio,size=30,format=qcow2 --vnc --vncport=5900 --vnclisten=0.0.0.0 -v

这里要注意-n的指定我们虚拟机的名字,一会儿还要用到,这个命令运行之后,你就可以用VNC软件来连入了,ip就是你服务器的ip,端口就是5900(如果这个端口被占用,可以依次替换,5901,5902,……),推荐使用Tigervnc

制作Openstack上使用的CentOS系统镜像

3.安装操作系统
操作系统的安装和正常的安装几乎一样,你需要什么样的包,就安装什么样的包,有两点需要注意的:

注意一:分区,分区的时候只给”/” 根目录分一个区即可,其他都不要。
注意二:网络设置方面,确保你的网卡eth0是DHCP状态的,而且请务必勾上”auto connect”的对勾

之后系统就按照你正常装的样子安装完毕了,安装完毕之后,我们刚才使用的vnc-install命令会自动退出。

4.设置系统
此时我们还需要为openstack的镜像而打磨一下我们刚装好的系统,你可以使用virsh list来看当前已启动的虚拟机。
virsh start CentOSimg
virsh list(可以查看到openstack管理的实例如:intance-0000001,做完镜像后可以用virsh destroy INSTACENAME来删除这个实例)

查看确定是我们刚才制作的虚拟机”CentOSimg”重新开启了
之后再次用VNC连入到这个虚拟机中,端口不变,我们需要做下面的一些操作

4.1.删除网络配置
删除ifcfg-eth0的HWADDR一行,最后你的ifcfg-eth0的配置文件应该是这样的:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

删除已生成的网络设备规则
rm -rf /etc/udev/rules.d/70-persistent-net.rules

4.2.关闭防火墙和selinux
sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config
service iptables stop && chkconfig iptables off
service ip6tables stop && chkconfig ip6tables off

4.3(可选)设置系统能自动获取openstack指定的hostname和ssh-key
使用vim编辑/etc/rc.local文件
然后将以下内容输入进去,放在”touch /var/lock/subsys/local”之前

if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0

 

while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
if [ $? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo “Successfully retrieved public key from instance metadata”
echo “*****************”
echo “AUTHORIZED KEYS”
echo “*****************”
cat /root/.ssh/authorized_keys
echo “*****************”

curl -f http://169.254.169.254/latest/meta-data/hostname > /tmp/metadata-hostname 2>/dev/null
if [ $? -eq 0 ]; then
TEMP_HOST=`cat /tmp/metadata-hostname`
sed -i “s/^HOSTNAME=.*$/HOSTNAME=$TEMP_HOST/g” /etc/sysconfig/network
/bin/hostname $TEMP_HOST
echo “Successfully retrieved hostname from instance metadata”
echo “*****************”
echo “HOSTNAME CONFIG”
echo “*****************”
cat /etc/sysconfig/network
echo “*****************”

else
echo “Failed to retrieve hostname from instance metadata. This is a soft error so we’ll continue”
fi
rm -f /tmp/metadata-hostname
else
FAILED=$(($FAILED + 1))
if [ $FAILED -ge $ATTEMPTS ]; then
echo “Failed to retrieve public key from instance metadata after $FAILED attempts, quitting”
break
fi
echo “Could not retrieve public key from instance metadata (attempt #$FAILED/$ATTEMPTS), retrying in 5 seconds…”
sleep 5
fi
done

三、上传镜像,开启实例
如果以上的内容都做完了,那么就可以直接把这个生成的镜像关机了
init 0
之后,我们可以看看之前生成的那个qcow2格式的img,发现不超过2G应该。我们只需要将这个镜像传到Openstack的环境里,然后使用glance add添加即可
glance add name=XXXX is_public=true container_format=ovf disk_format=qcow2 < /tmp/CentOS6.3-openstack.img

再之后,用这个镜像创建一个实例~~启动起来看看吧~~你会发现直接获取的就是Openstack分配的ip ~而且直接可以ssh到哦

转载于:https://my.oschina.net/OQKuDOtsbYT2/blog/119980

<think>好的,我需要解决用户在CentOS上安装OpenStackNova和PlacementAPI时遇到的依赖问题,特别是openstack-nova-compute20.6.0安装失败,缺少qemu-kvm-rhev依赖的问题。用户提到使用的是centos-openstack-train的yum源,需要正确的配置方法。首先,我应该回顾用户提供的引用内容。引用[1]指出安装openstack-nova-compute时出现依赖错误,需要qemu-kvm-rhev>=2.10.0。引用[2]提到在安装时遇到类似问题,并且提到可能缺少仓库配置。引用[4]给出了解决方案,即添加包含qemu-kvm-rhev的源,比如sohu的镜像源。引用[3]则涉及配置libvirt的virt_type为qemu以及启动服务后的操作步骤。接下来,我需要整合这些信息。用户的问题核心是缺少qemu-kvm-rhev包,而默认的centos-openstack-train源可能没有包含这个包,或者没有正确配置其他仓库来提供它。解决方法应该是添加包含该包的yum源,比如Virt仓库,如引用[4]所述。同时,可能需要安装其他依赖,或者调整现有的仓库配置,确保优先级正确,避免冲突。 另外,用户可能还需要处理Placement API的依赖问题。虽然当前问题主要集中在Nova compute,但Placement的安装可能涉及其他组件,如python模块或数据库配置。需要确保所有相关服务如MariaDB、RabbitMQ等已经正确安装和配置。可能的步骤包括: 1.添加包含qemu-kvm-rhev的yum源,如Virt仓库。 2.清理yum缓存并重新安装。 3.处理可能的软件包冲突或依赖问题。 4.配置Nova和Placement的相关设置,如数据库连接、API端点等。 5.启动服务并验证安装。 需要确保用户按照正确的顺序添加仓库,并优先从正确的源安装依赖。例如,先启用CentOSBase、EPEL,然后添加OpenStack Train仓库和Virt仓库。同时,注意软件包版本兼容性,可能需要更新qemu-kvm相关包到指定版本。此外,用户可能在安装过程中遇到其他依赖缺失,需要逐一解决。例如,检查是否有其他缺失的依赖包,如python库或其他OpenStack组件。配置文件的正确性也很重要,如nova.conf中的virt_type设置是否正确,引用[3]中提到设置为qemu,这可能影响虚拟化类型的选择。最后,验证步骤包括检查nova服务状态,查看日志文件是否有错误,以及通过OpenStack命令验证计算节点是否成功注册。</think>### 解决方案:OpenStack Nova和Placement API依赖问题处理 #### 一、解决qemu-kvm-rhev依赖缺失 1. **添加Virt仓库** 在CentOS 7系统中,`qemu-kvm-rhev`包默认不在标准仓库中,需手动添加包含该包的镜像源。 ```bash # 创建新的仓库文件 vim /etc/yum.repos.d/centos-virt.repo ``` 添加以下内容: ``` [Virt] name=CentOS-Virt-KVM-Common baseurl=http://mirrors.sohu.com/centos/7/virt/x86_64/kvm-common/ enabled=1 gpgcheck=0 ``` 保存后运行 `yum clean all && yum makecache`[^4]。 2. **调整仓库优先级(可选)** 若存在多个仓库冲突,可安装`yum-plugin-priorities`并设置优先级: ``` # 在仓库文件中添加 priority=1 # OpenStack Train仓库设为高优先级 priority=2 # Virt仓库设为次优先级 ``` 3. **重新安装依赖** ```bash yum install qemu-kvm-rhev openstack-nova-compute ``` --- #### 二、配置Nova与Placement服务 1. **检查Nova配置文件** 编辑`/etc/nova/nova.conf`,确保以下关键配置正确: ```ini [DEFAULT] compute_driver = libvirt.LibvirtDriver [libvirt] virt_type = qemu # 若使用纯QEMU虚拟化[^3] ``` 2. **Placement API安装与配置** - 安装依赖包: ```bash yum install openstack-placement-api ``` - 配置数据库连接: ```ini # /etc/placement/placement.conf [placement_database] connection = mysql+pymysql://placement:密码@控制节点IP/placement ``` - 同步数据库: ```bash su -s /bin/sh -c "placement-manage db sync" placement ``` --- #### 三、验证与调试 1. **启动服务并检查状态** ```bash systemctl start openstack-nova-compute libvirtd systemctl enable openstack-nova-compute ``` 2. **查看日志定位问题** ```bash journalctl -u openstack-nova-compute # 检查Nova计算服务日志 tail -f /var/log/placement/placement-api.log # 检查Placement日志 ``` 3. **注册计算节点** 在控制节点执行: ```bash su nova -s /bin/sh -c 'nova-manage cell_v2 discover_hosts --verbose' ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值