制作OpenStack上使用的CentOS系统镜像
2014-06-30 18:17
471 查看
http://www.linuxidc.com/Linux/2012-10/72483.htm
很多进行Openstack测试的人都发现,自己的openstack测试环境搭建的很成功,安全策略也添加了,但是上传镜像之后,却出现无法Ping通,无法ssh到实例等问题,实际上这很可能是由于我们没有使用一个正确的镜像导致的。那么如何创建一个自己想要的镜像呢,这里我就给大家说一下制作CentOS镜像的步骤。
一、准备工作
首先你需要有一台CentOS的机器,作为制作镜像的机器。比如自己的虚拟机。我的环境是用一台R410上面装CentOS6.3的系统来做的。
1.安装底层支持包
2.下载或从本地上传进去一个完整的系统镜像
(这里我下载的是从163镜像源下载的CentOS6.3,如果你需要其他版本的CentOS,请下载对应的版本)
3.启动服务
二、制作镜像
1.建立镜像文件
2.通过virt-install来创建一个新的虚拟机
这里要注意-n的指定我们虚拟机的名字,一会儿还要用到,这个命令运行之后,你就可以用VNC软件来连入了,ip就是你服务器的ip,端口就是5900,推荐使用vncviewer这个绿色的小软件来打开:
3.安装操作系统
操作系统的安装和正常的安装几乎一样,你需要什么样的包,就安装什么样的包,有两点需要注意的:
注意一:分区,分区的时候只给"/" 根目录分一个区即可,其他都不要。
注意二:网络设置方面,确保你的网卡eth0是DHCP状态的,而且请务必勾上"auto connect"的对勾
之后系统就按照你正常装的样子安装完毕了,安装完毕之后,我们刚才使用的vnc-install命令会自动退出。
4.设置系统
此时我们还需要为openstack的镜像而打磨一下我们刚装好的系统,你可以使用virsh list来看当前已启动的虚拟机。
查看确定是我们刚才制作的虚拟机"CentOSimg"重新开启了.
之后再次用VNC连入到这个虚拟机中,端口不变,我们需要做下面的一些操作
4.1.删除网络配置
删除ifcfg-eth0的HWADDR一行,最后你的ifcfg-eth0的配置文件应该是这样的:
删除已生成的网络设备规则
4.2.关闭防火墙和selinux
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
三、上传镜像,开启实例
如果以上的内容都做完了,那么就可以直接把这个生成的镜像关机了
之后,我们可以看看之前生成的那个qcow2格式的img,发现不超过2G应该。
我们只需要将这个镜像传到Openstack的环境里,然后使用glance add添加即可
再之后,用这个镜像创建一个实例~~启动起来看看吧~~你会发现直接获取的就是Openstack分配的ip ~而且直接可以ssh到哦~!
很多进行Openstack测试的人都发现,自己的openstack测试环境搭建的很成功,安全策略也添加了,但是上传镜像之后,却出现无法Ping通,无法ssh到实例等问题,实际上这很可能是由于我们没有使用一个正确的镜像导致的。那么如何创建一个自己想要的镜像呢,这里我就给大家说一下制作CentOS镜像的步骤。
一、准备工作
首先你需要有一台CentOS的机器,作为制作镜像的机器。比如自己的虚拟机。我的环境是用一台R410上面装CentOS6.3的系统来做的。
1.安装底层支持包
yum groupinstall Virtualization "Virtualization Client" yum install libvirt |
(这里我下载的是从163镜像源下载的CentOS6.3,如果你需要其他版本的CentOS,请下载对应的版本)
mkdir /openstack-image cd /openstack-image wget http://mirrors.163.com/centos/6/isos/x86_64/CentOS-6.3-x86_64-bin-DVD1.iso |
service libvirtd restart |
1.建立镜像文件
cd /openstack-image qemu-img create -f qcow2 CentOS6.3-openstack.img 10G chown qemu:qemu /openstack-image -R |
virt-install -n CentOSimg -r 4096 --cpu host -c /images/CentOS-6.3-x86_64-bin-DVD1.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 |
3.安装操作系统
操作系统的安装和正常的安装几乎一样,你需要什么样的包,就安装什么样的包,有两点需要注意的:
注意一:分区,分区的时候只给"/" 根目录分一个区即可,其他都不要。
注意二:网络设置方面,确保你的网卡eth0是DHCP状态的,而且请务必勾上"auto connect"的对勾
之后系统就按照你正常装的样子安装完毕了,安装完毕之后,我们刚才使用的vnc-install命令会自动退出。
4.设置系统
此时我们还需要为openstack的镜像而打磨一下我们刚装好的系统,你可以使用virsh list来看当前已启动的虚拟机。
virsh start CentOSimg virsh list |
之后再次用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 |
sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config service iptables stop && chkconfig iptables off service ip6tables stop && chkconfig ip6tables off |
使用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 |
我们只需要将这个镜像传到Openstack的环境里,然后使用glance add添加即可
glance add name=XXXX is_public=true container_format=ovf disk_format=qcow2 < /tmp/CentOS6.3-openstack.img |
相关文章推荐
- 制作Openstack上使用的CentOS系统镜像
- 制作OpenStack上使用的CentOS系统镜像
- openstack使用2——制作centos7镜像
- 在Centos7 系统中使用supermin制作CentOS6 的Docker镜像
- 为OpenStack制作自定义的镜像(centos/windows)
- openstack起步 在ubuntu上制作系统镜像镜像
- 使用kvm制作Eucalyptus镜像(CentOS 6.5为例)
- 制作OpenStack用的RHEL7系统镜像
- 使用ISO镜像制作适用于OpenStack的云镜像
- CentOS6.3下为OpenStack制作CentOS镜像
- 制作openstack用的centos6.5镜像
- 制作openstack-centos镜像
- openstack 制作大于2TB根分区自动扩容的CENTOS镜像
- 为OpenStack制作CentOS镜像的一种方法
- 使用kvm制作Eucalyptus镜像(CentOS 6.5为例)
- openstack起步 在ubuntu上制作系统镜像镜像
- 为openstack 制作CentOS镜像
- 为OpenStack制作UBUNTU 12.04系统镜像
- CentOS mirrorlist导致的OpenStack 镜像制作失败
- 制作openstack Centos镜像 -- Example: CentOS image