制作OpenStack centos镜像

制作OpenStack centos镜像

##制作OpenStack centos镜像   

##宿主机操作
#首先创建一个qcow2格式镜像文件,用于虚拟机的根磁盘,大小10G就够了。

mkdir -p /data/kvms/images/
cd /data/kvms/images/

qemu-img create -f qcow2 centos.qcow2 10G 

#使用以下脚本创建并启动虚拟机:
###先下载iso镜像
###wget http://vault.centos.org/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-minimal.iso

wget http://vault.centos.org/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso

NAME=centos
ROOT_DISK=centos.qcow2
CDROM=/data/kvms/images/CentOS-7-x86_64-Minimal-1708.iso

virt-install --virt-type kvm --name $NAME --ram 1024 --disk $ROOT_DISK,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --location=$CDROM 

#virt-install --name $NAME --ram 1024 --disk $ROOT_DISK,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --cdrom=$CDROM 

##查看vnc端口
virsh vncdisplay centos

#####:0     0代表是5900,大于0的从5900之后递增。例如,显示:1,则代表5901

##虚拟机操作

##如果没有启动成功,可以在server端 执行virsh reboot centos 命令。
##再连接,安装acpi。acpid服务是用于可以让hypervisior可以重启或关闭虚拟机
yum install -y acpid

chkconfig acpid on

##安装cloud-init。用于启动虚拟机时候nova-meatdata服务进行密钥注入到虚拟机。
yum install -y epel-release.noarch
yum install -y cloud-init

##修改cloud-init启动模块加载resolv-conf。
###在/etc/cloud/cloud.cfg文件中,cloud_init_modules属性下添加一行:- resolv-conf
sed -i '/cloud_init_modules:/ a - resolv-conf' /etc/cloud/cloud.cfg
grep -A2 'cloud_init_modules' /etc/cloud/cloud.cfg<br></br><br></br>##开启sshd密码认证<br></br>sed -i 's/^ssh_pwauth:.*/ssh_pwauth:1/g'  /etc/cloud/cloud.cfg

##安装 cloud-utils-growpart。该然间是支持虚拟机磁盘扩容。
yum install -y cloud-utils-growpart

#####如果上面步骤不能安装cloud-init,则可以在/etc/rc.d/rc.local文件中,在touch /var/lock/subsys/local这行前加入以下脚本

[ $(rpm -aq |grep -c 'cloud-utils-growpart') -eq 0 ] && sed '/touch /var/lock/subsys/local/ a
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 "*****************"
fi
done ' /etc/rc.d/rc.local

#############
##关闭zeroconf route
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
tail /etc/sysconfig/network

###配置console,为了确保控制台的信息出现在 dashboard 的日志标签页中,以及 nova console-log 输出中。
##centos 7 修改/etc/default/grub的配置GRUB_CMDLINE_LINUX选项. 删除 rhgb quiet 添加 console=tty0 console=ttyS0,115200n8。
###例子:
#GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8 

sed -i 's#GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"#GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap console=tty0 console=ttyS0,115200n8"#g' /etc/default/grub
grep GRUB_CMDLINE_LINUX /etc/default/grub

####更新grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg 

###关闭虚拟机
shutdown -h now

##宿主机操作

##在宿主机上运行以下命名,移除宿主机信息,比如mac地址等。
yum install -y libguestfs-tools
virt-sysprep -d centos 

##删除虚拟机,镜像制作完成。

virsh undefine centos

source /root/admin-openrc.sh
glance image-create --file /data/kvms/images/centos.qcow2 --disk-format qcow2  --container-format bare --name CentOS-7.4 --progress
/CentOS-7-x86_64-Minimal-1708.iso

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。