KVM虚拟机创建OpenStack镜像

一.KVM平台搭建以及虚拟机部署

二.在KVM虚拟机上创建镜像

  • 实验环境
角色 系统 IP地址
KVM宿主机 centos7.6 192.168.43.102/24
KVM虚拟机 centos7.6 192.168.43.131/24
控制节点 centos7.7

(NAT)192.168.43.201/24

(仅主机)192.168.100.10/24

注意:相关源与脚本,

链接:https://pan.baidu.com/s/1xnLoaWWgtHkr69JuyVH08w 
提取码:wgmu

centos镜像可去阿里云下载

  • 确保kvm虚拟机能够ping通外网

[root@kvm ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:cc:77:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.131/24 brd 192.168.43.255 scope global noprefixroute dynamic eth0
       valid_lft 1731sec preferred_lft 1731sec
    inet6 fe80::141b:1adf:8d0a:4221/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@kvm ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=145 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=145 ms
  • 在kvm虚拟机上制作源
[root@kvm ~]# cd /etc/yum.repos.d/
[root@kvm yum.repos.d]# mkdir bak
[root@kvm yum.repos.d]# mv C* bak
[root@kvm yum.repos.d]# scp [email protected]:/opt/CentOS7-Base-163.repo ./
[email protected]'s password: 
CentOS7-Base-163.repo                                                    100% 1458     1.1MB/s   00:00    
[root@kvm yum.repos.d]# ls
bak  CentOS7-Base-163.repo

##清理原来的缓存、加载新的缓存
[root@kvm yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base extras updates
[root@kvm yum.repos.d]# yum makecache
  • 关闭安全性功能,并且安装相关工具
[root@kvm ~]# systemctl stop firewalld
[root@kvm ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@kvm ~]# setenforce 0
[root@kvm ~]# vi /etc/sysconfig/selinux 
##安装工具包
[root@kvm ~]#  yum -y install vim net-tools bash-completion
  • 上传centos-cloud-init.sh
[root@kvm ~]# scp [email protected]:/opt/centos-cloud-init.sh /
[email protected]'s password: 
centos-cloud-init.sh                                                     100% 1735   564.8KB/s   00:00    
[root@kvm ~]# cd /

##改名
[root@kvm /]# mv centos-cloud-init.sh cloud-init.sh
##添加权限
[root@kvm /]# chmod 755 cloud-init.sh 


[root@kvm /]# sed -i 's/\r//g' cloud-init.sh 

##将该执行文件放到系统识别的地方
[root@kvm /]# mv cloud-init.sh /usr/bin
[root@kvm /]# echo ' /bin/bash /usr/bin/cloud-init.sh' >> /etc/rc.d/rc.local 

[root@kvm ~]# vi /usr/bin/cloud-init.sh 
#!/bin/bash
# /usr/bin/cloud-init.sh in centos/rhel
# append '/bin/sh /usr/bin/cloud-init.sh' to /etc/rc.local

STATUS_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://169.254.169.254/latest`
if [ ! "$STATUS_CODE" -eq "200" ]; then 
    /bin/sleep 3
fi

# set the root password using user data
STATUS_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/user-data`
if [ "$STATUS_CODE" -eq "200" ]; then 
    PASS=`curl -m 10 -s http://169.254.169.254/latest/user-data | grep -Po '(?<=password": ")\S+(?="})'`
    if [ "$PASS" != " " ]; then 
        echo $PASS | /usr/bin/passwd --stdin root
    fi
fi

# get the user ssh key using the meta-data service 
STATUS_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key`
if [ "$STATUS_CODE" -eq "200" ]; then 
    mkdir -p /root/.ssh
    echo > /root/.ssh/authorized_keys
    curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
    chmod 0700 /root/.ssh
    chmod 0600 /root/.ssh/authorized_keys
fi

# set the hostname using the meta-data service 
STATUS_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/meta-data/hostname`
if [ "$STATUS_CODE" -eq "200" ]; then 
    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 | awk -F '.novalocal' '{print $1}'`
        sed -i "s/^HOSTNAME=.*$/HOSTNAME=$TEMP_HOST/g" /etc/sysconfig/network
        # centos7 
        #echo $TEMP_HOST > /etc/hostname
        /bin/hostname $TEMP_HOST
        rm -f /tmp/metadata-hostname
    fi
fi
  • 优化grub
vim /etc/sysconfig/grub
#添加
GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0,115200n8 rhgb quiet"

#执行下列命令,使得参数有效
grub2-mkconfig -o /boot/grub2/grub.cfg
  • 优化ssh服务
#修改dns权限
[root@kvm ~]# sed 's/.*UseDNS.*/UseDNS no/g' /etc/ssh/sshd_config -i

#允许远程ssh
[root@kvm ~]# sed 's/^#PermitRootLogin.*/PermitRootLogin yes/g'  /etc/ssh/sshd_config -i

#优化ssh
[root@kvm ~]# sed 's/GSSAPIAuthentication.*/GSSAPIAuthentication no/g' /etc/ssh/sshd_config -i
  • 测试镜像是否可用
#关闭kvm虚拟机
#重启kvm宿主机
#在kvm宿主机上执行
[root@localhost vm]# virsh start centos7.0
域 centos7.0 已开始

[root@localhost vm]# virsh console centos7.0
连接到域 centos7.0
换码符为 ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

#查看vm虚拟机状态
[root@localhost vm]# virsh dominfo centos7.0
Id:             -
名称:       centos7.0
UUID:           589b8e45-6787-4f0f-870d-70406a845526
OS 类型:    hvm
状态:       关闭
CPU:          1
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0

[root@localhost vm]# 

三.上传镜像到CEPH并且应用

  • 把镜像上传到control
[root@localhost vm]# ls
centos7.img 
[root@localhost vm]# scp centos7.img [email protected]:/opt
The authenticity of host '192.168.43.201 (192.168.43.201)' can't be established.
ECDSA key fingerprint is SHA256:8RxPB+Ym5DhblOLKyhqtL6SQ+xhhnAAXC3n1Wx4kmfc.
ECDSA key fingerprint is MD5:1a:07:48:7f:89:19:22:b8:aa:99:d5:f4:9a:50:3e:0d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.43.201' (ECDSA) to the list of known hosts.
[email protected]'s password: 
centos7.img                                                                        centos7.img                                     100%   20GB  43.9MB/s   07:46    
[root@localhost vm]#
  • 在控制节点查看
[root@control opt]# ls
centos7.img    openstack_rocky
centos7.qcow2  openstack_rocky.tar.gz
[root@control opt]# 
  • 把镜像上传到OpenStack平台
[root@control ~(keystone_admin)]# openstack image create "centos7"   --file centos7.img  --disk-format raw --container-format bare  --public

注:也可以把镜像下载到本机,再通过OpenStack的web界面上传镜像,创建实例,具体方式参考:https://blog.csdn.net/qq_42761527/article/details/104616615

发布了139 篇原创文章 · 获赞 168 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_42761527/article/details/104786636
今日推荐