• Openstack云平台镜像制作CentOS6.7


    一、镜像需求
    1、磁盘分区,自动 resizefs( 虚拟机启动时自动将额外分区扩展到 /data目录下 )
    2、没有硬件 MAC address information
    3、ssh server 运行
    4、禁用防火墙、 selinux
    二、镜像制作
    1、环境准备
    A、硬件环境
    服务器类型 :  VMware 虚拟机
    服务器系统 : CentOS7.1503
    服务器网络 :桥接模式
    服务器 IP     :192.168.1.11
    B、软件环境
    hypervisor       :qemu­kvm­1.5.3­141.el7_4.4
    镜像网络模式  :Bridge
    镜像版本         :CentOS7.1
    VNC 客户端     :VNC­Viewer­6.17.1113­Windows­64bit
    2、KVM环境搭建
    软件安装
    安装KVM 等工具
    yum install -y qemu-kvm libvirt libvirt-python \
    libguestfs-tools virt-install
    启动服务
    systemctl enable libvirtd && systemctl start libvirtd
    3、网络设置
    由于用的是 VMware 虚拟机,启动的镜像也采用 bridge 模式会使后续的远程连接调试更加方便
    添加网桥 br0 需修改 ifcfg­ens33 ifcfg­br0(dhcp 模式 ), 配置如下 :
    cat  /etc/sysconfig/network-scripts/ifcfg-ens33
    TYPE="Ethernet"
    DEVICE="ens33"
    ONBOOT="yes"
    BRIDGE="br0"
    cat  /etc/sysconfig/network-scripts/ifcfg-br0
    TYPE="bridge"
    BOOTPROTO="dhcp"
    DEVICE="br0"
    ONBOOT="yes"
    4、创建磁盘 ( 创建将来的 Openstack 镜像 )
    qemu-img create -f qcow2 /tmp/CentOS67.qcow2 30G
    5、启动虚拟机
    virt-install --name CentOS67 --vcpu 4 --ram 4096 \
    --disk path=/tmp/CentOS67.qcow2 \
    --network bridge=br0 \
    --graphics vnc,listen=0.0.0.0 --noautoconsole \--os-type=linux --os-variant=rhel6 \
    --cdrom=/data/img/CentOS-6.7-x86_64-minimal.iso
    注意:cdrom 后面的镜像需要从 CentOS 官网下载
    6、连接 vnc 进行系统安装系统初始化
    查看 vnc 端口
    virsh # vncdisplay CentOS67
    :0
    外部连接的 vnc 端口为 590x 例如上面就为 5900 ,以 192.168.1.11:5900 连接之后进行安装系统
    如果要实现分区自动伸缩,必须在安装系统的时候手动将文件系统格式配置成 ext4 lvm 不支持自动
    伸缩功能
    安装完系统之后就开始一 一实现功能
    7、基础软件包
    yum install -y ntp vim wget net-tools tcpdump strace \
    sysstat iotop pciutils lsof telnet iftop lrzsz \
    unzip dos2unix ipmitool psmisc tree
    8、基础优化配置
    echo "
    * soft nproc 655360
    * hard nproc 655360
    * soft nofile 655360
    * hard nofile 655360" >>/etc/security/limits.conf
    sed -i -e "/UseDNS/c UseDNS no" /etc/ssh/sshd_config
    sed -i -e "/StrictHostKeyChecking/c StrictHostKeyChecking no\nUserKnownHo
    stsFile /dev/null" /etc/ssh/ssh_config
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    # 关闭 SElinux
    echo "net.ipv4.ip_forward=1
    net.ipv4.conf.default.rp_filter=0
    net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
    sysctl -p
    service postfix stop
    service iptables stop
    chkconfig --del iptables
    # 禁用防火墙
    chkconfig --del postfix
    9、磁盘分区,自动 resizefs( 虚拟机启动时自动将额外 分区扩展到   /data )
    redhat 系统 可以通过 cloud-utils-growpart 工具来实现,安装即可用 lvm 才可用
    yum install -y epel-release
    yum install cloud-utils-growpart
    10、访问 instance use ssh public key (cloud­init), 装即可用
    A、安装 cloud­int
    默认安装之后会把 ssh 密码登陆关掉需手动开启
    yum install cloud-init -y
    B、开启 ssh 密码登陆
    修改 /etc/cloud/cloud.cfg
    users:
    - default
    disable_root: 0
    ssh_pwauth: 1
    修改 /etc/ssh/sshd_config
    sed -i '/^#Port/c Port 22' /etc/ssh/sshd_config
    sed -i '/^PasswordAuthentication/c PasswordAuthentication yes' /etc/ssh/s
    shd_config
    安装 ssh 客户端
    yum install -y openssh-clients
    C、安装 qemu­guest­agent
    yum install -y qemu-guest-agent
    D、接受 user­data metadata
    保证虚拟机能连接到 openstack 元数据即可,一般情况用 dhcp 元数据,所以用不到 zeroconf route
    需将 zeroconf 禁用掉,否则 zeroconf router 在虚拟机开机时会自动生成路由 169.254.0.0/16 0.0.0.0
    导致无法与元数据通信
    编辑 vim /etc/sysconfig/network-scripts/ifup-eth 注释掉以下部分
    if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo"
    ]; then
    ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat
    /sys/class/net/${REALDEVICE}/ifindex))) scope link
    fi
    或者
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network
    重启网络 service network restart
    11、没有硬件 MAC address information
    centos6 udev rule 会在服务器启动时生成 mac 地址信息,如果不清的话 eth0 网卡将无法正常使用
    做完以上操作 清除 mac 信息
    rm -f /etc/udev/rules.d/70-persistent-net.rules
    如果网卡配置不是按照上面配的,网卡配置中也可能有 mac 地址 需要删掉
    以上完成,就可以清除掉操作信息,关闭虚拟机导入上传镜像
    12、清除操作痕迹
    history -c
    关闭虚拟机
    poweroff
    压缩镜像 , 便于传输
    qemu-img convert -c -O qcow2 CentOS67.qcow2 CentOS67_convert.qcow2
    13、测试镜像
    镜像创建完先在 vmvare 上启动虚拟机测试一下 , 用创建的镜像启动虚拟机
    cp CentOS67_convert.qcow2 CentOS67_convert_test.qcow2
    qemu-img resize CentOS67_convert_test.qcow2 +30G
    # 扩容镜像 验证镜像分区自动扩展功能,首次启动之后虚拟还需重启一次才会扩容分区
    virt-install --name centos67 --vcpu 2 --ram 4096 \
    --disk /tmp/CentOS67_convert_test.qcow2 \
    --import --network bridge=br0,model=virtio \
    --graphics vnc,listen=0.0.0.0 --noautoconsole
    启动之后一一验证功能,验证没问题之后,上传至 openstack
    14、上传镜像到OpenStack云平台
    拷贝镜像到 Openstack 控制节点
    转化成 raw 格式
    Openstack glance nova 后端用 ceph 的话 raw 格式最快
    qemu-img convert -f qcow -O raw CentOS67_convert_test.qcow2 CentOS67.raw 上传至 Openstack
    source ~/keystonerc_admin
    glance image-create --name centos6.7 \
    --file CentOS67.raw --dish-format raw \
    --container-format bare --is-public true --progress
    15、参考文献
    https://docs.openstack.org/image­guide/openstack­images.html
    https://docs.openstack.org/image­guide/centos­image.html

    写在最后:

    神话是人生的隐喻,每个人身上,都隐藏着自己独特的英雄力量(神话学大师 坎贝尔)

    你每天学习一点点,每天只进步1%,一年以后你的水平值是多少呢?
    37.78(1.01×365=37.78)

    相信概率,不要相信运气,在过程中提升概率

    《礼记·中庸》:凡事豫则立,不豫则废。言前定则不跲,事前定则不困,行前定则不疚,道前定则不穷

    详情请见,微信公众号:

     

  • 相关阅读:
    对公司严抓考勤的重新深度认知分享-考勤对传统型公司的重要性
    【Node.js从基础到高级运用】六、创建第一个 Node.js 应用
    代理池项目查询
    并查集与最小生成树
    创建型模式-工厂方法模式(二)
    Typora收费?搭建VS Code MarkDown写作环境
    【AI学习笔记】TensorFlow 与 Keras的安装(Windows Anaconda 虚拟环境版)
    判断一个日期是这一年的第几天
    很烦的Node报错积累
    【基础编程题目集编程题及其答案】
  • 原文地址:https://blog.csdn.net/KEYMA/article/details/125492570