• 【openstack N版】——手把手教你制作生产环境镜像


    一.CentOS7镜像制作

    1.1创建CentOS7虚拟机

    1.1.1创建虚拟磁盘
    1 #注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance
    2 [root@linux-node1 ~]# qemu-img create -f qcow2 /tmp/centos7.qcow2 10G
    1.1.2创建虚拟机
    #非桥接网卡
    [root@linux-node1 ~]# virt-install \
    --virt-type kvm \
    --name centos \
    --ram 1024 \
    --disk /tmp/centos2.qcow2,format=qcow2 \
    --network network=default \
    --graphics vnc,listen=0.0.0.0 --noautoconsole \
    --os-type=linux --os-variant=rhel7 \
    --location=/tmp/CentOS-7-x86_64-DVD-1511.iso
    #桥接网卡
    [root@linux-node1 ~]# virt-install \
      --virt-type kvm \
      --name centos \
      --ram 1024 \
      --disk /tmp/centos.qcow2,format=qcow2 \
      --network bridge=brqce3d2bda-d5 \
      --graphics vnc,listen=0.0.0.0 --noautoconsole \
      --os-type=linux --os-variant=rhel7 \
      --location=/tmp/CentOS-7.2-x86_64-DVD-1511.iso
    1.1.3VNC连接虚拟机

    #选择英文语言,下一步

    #选择时区:亚洲上海

    #选择最小化安装包组

    #自定义磁盘分区

    #不使用LVM,单机 "+" 添加分区

    #只分配一个 “/” 分区,不创建 swap分区,本身就是虚拟机,更影响性能。

    #创建完,单机左上角“done”

    #开始安装系统

    #给root用户创建密码

    1.2连接虚拟机并优化

    1.2.1安装常用基础软件包
    1 [root@example ~]# yum install -y snmap net-tools tree screen wget git vim salt-minion zabbix-agent lsof tcpdump
    1.2.2修改网卡信息
    1 #删除UUI、mac等信息,只保留以下内容
    2 [root@example ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    3 TYPE=Ethernet
    4 BOOTPROTO=dhcp
    5 NAME=eth0
    6 DEVICE=eth0
    7 ONBOOT=yes
    1.2.3修改yum源
    1 [root@example ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    1.2.4关闭Networkemanager和防火墙
    1 [root@example ~]# systemctl disable firewalld
    2 [root@example ~]# systemctl stop firewalld   
    3 [root@example ~]# systemctl stop NetworkManager
    1.2.5关闭selinux
    1 #修改selinux配置文件
    2 [root@example ~]# vim /etc/sysconfig/selinux
    3 SELINUX=enforcing 改为 SELINUX=disabled
    4 #重启后,检查结果如下
    5 [root@example ~]# getsebool
    6 getsebool:  SELinux is disabled

    1.3编写metadata脚本

     1 [root@example ~]# vim /tmp/init.sh
     2 #!/bin/bash
     3 
     4 set_key(){
     5   if [ ! -d /root/.ssh ]; then
     6          mkdir -p /root/.ssh
     7         chmod 700 /root/.ssh
     8   fi
     9 for ((i=1;i<=5;i++));do
    10      if [ ! -f /root/.ssh/authorized_keys ];then
    11         curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
    12         if [ $? -eq 0 ];then
    13         cat /tmp/metadata-key >> /root/.ssh/authorized_keys
    14         chmod 0600 /root/.ssh/authorized_keys
    15         restorecon /root/.ssh/authorized_keys
    16         rm -f /tmp/metadata-key
    17         echo "Successfully retrieved public key from instance metadata"
    18         echo "*****************"
    19         echo "AUTHORIZED KEYS"
    20         echo "*****************"
    21         cat /root/.ssh/authorized_keys
    22         echo "*****************"
    23         fi
    24     fi
    25 done
    26 }
    27 
    28 set_hostname(){
    29     PRE_HOSTNAME=$(curl -s http://169.254.169.254/latest/meta-data/hostname)
    30     DOMAIN_NAME=$(echo $PRE_HOSTNAME | awk -F '.' '{print $1}')
    31     hostnamectl set-hostname `echo ${DOMAIN_NAME}.example.com`
    32 }
    33 
    34 set_static_ip(){
    35     PRE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
    36     NET_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"
    37 echo  "TYPE=Ethernet" > $NET_FILE
    38 echo  "BOOTPROTO=static" >> $NET_FILE
    39 echo  "NAME=eth0" >> $NET_FILE
    40 echo  "DEVICE=eth0" >> $NET_FILE
    41 echo  "ONBOOT=yes" >> $NET_FILE
    42 echo  "IPADDR=${PRE_IP}" >> $NET_FILE
    43 echo  "NETMASK=255.255.255.0" >> $NET_FILE
    44 echo  "GATEWAY=192.168.56.2" >> $NET_FILE
    45 }
    46 
    47 main(){
    48    set_key;
    49    set_hostname;
    50    set_static_ip;
    51    /bin/cp /tmp/rc.local /etc/rc.d/rc.local
    52    reboot
    53 }
    54 
    55 main
    1.3.1修改rc.local
    1 #将rc.local拷贝到tmp下
    2 [root@example ~]# cp /etc/rc.d/rc.local /tmp
    3 #CentOS7开机执行rc.local,需将rc.local添加执行权限
    4 [root@example ~]# chmod +x /etc/rc.d/rc.local
    5 #编辑rc.local
    6 [root@example ~]# vim /etc/rc.d/rc.local
    7 /bin/sh /tmp/init.sh

    1.4关机并压缩镜像

    1 #关机
    2 [root@example ~]# init 0
    3 #压缩镜像,清理磁盘碎片
    4 [root@linux-node1 ~]# qemu-img convert -c disk -O qcow2 centos7.qcow2

    1.5上传镜像至glance

    注:镜像就是一开始创建虚拟机的qcow2的虚拟磁盘

    1 [root@linux-node1 ~]# openstack image create "CentOS-7-x86_64" \
    2 --file /tmp/centos7.qcow2 \
    3 --disk-format qcow2 \
    4 --container-format bare \
    5 --public

    至此,openstack的镜像就制作完毕,请根据自己公司优化需求来制定

     

    【开源是一种精神,分享是一种美德】

      — By GoodCook

      — 笔者QQ:253097001

      — 欢迎大家随时来交流

      —原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

  • 相关阅读:
    (二十三)、int与integer的区别
    (二十一)、Java序列化与反序列化
    (二十)、MVC设计思想的优缺点
    (十九)、列出自己常用的JDK包
    (十八)、Session与Cookie区别
    win10 下安装laravel
    冒泡排序
    常用php正则表达式
    AE网站
    AE压缩网站
  • 原文地址:https://www.cnblogs.com/goodcook/p/6484486.html
Copyright © 2020-2023  润新知