设为首页 收藏本站
查看: 1309|回复: 0

[经验分享] 【openstack N版】——手把手教你制作生产环境镜像

[复制链接]

尚未签到

发表于 2017-6-24 22:37:20 | 显示全部楼层 |阅读模式
一.CentOS7镜像制作

1.1创建CentOS7虚拟机

1.1.1创建虚拟磁盘



#注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance
[iyunv@linux-node1 ~]# qemu-img create -f qcow2 /tmp/centos7.qcow2 10G
1.1.2创建虚拟机



#非桥接网卡
[iyunv@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
#桥接网卡
[iyunv@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连接虚拟机
DSC0000.png

  #选择英文语言,下一步
DSC0001.png

  #选择时区:亚洲上海
DSC0002.png

  #选择最小化安装包组
DSC0003.png

  #自定义磁盘分区
DSC0004.png

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

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

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

  #开始安装系统
DSC0008.png

  #给root用户创建密码

1.2连接虚拟机并优化

1.2.1安装常用基础软件包



[iyunv@example ~]# yum install -y snmap net-tools tree screen wget git vim salt-minion zabbix-agent lsof tcpdump
1.2.2修改网卡信息



#删除UUI、mac等信息,只保留以下内容
[iyunv@example ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
1.2.3修改yum源



[iyunv@example ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
1.2.4关闭Networkemanager和防火墙



[iyunv@example ~]# systemctl disable firewalld
[iyunv@example ~]# systemctl stop firewalld   
[iyunv@example ~]# systemctl stop NetworkManager
1.2.5关闭selinux



#修改selinux配置文件
[iyunv@example ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
#重启后,检查结果如下
[iyunv@example ~]# getsebool
getsebool:  SELinux is disabled
1.3编写metadata脚本



[iyunv@example ~]# vim /tmp/init.sh
#!/bin/bash

set_key(){
   if [ ! -d /root/.ssh ]; then
          mkdir -p /root/.ssh
         chmod 700 /root/.ssh
   fi
for ((i=1;i<=5;i++));do
      if [ ! -f /root/.ssh/authorized_keys ];then
         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
     fi
done
}

set_hostname(){
     PRE_HOSTNAME=$(curl -s http://169.254.169.254/latest/meta-data/hostname)
     DOMAIN_NAME=$(echo $PRE_HOSTNAME | awk -F '.' '{print $1}')
     hostnamectl set-hostname `echo ${DOMAIN_NAME}.example.com`
}

set_static_ip(){
     PRE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
     NET_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"
echo  "TYPE=Ethernet" > $NET_FILE
echo  "BOOTPROTO=static" >> $NET_FILE
echo  "NAME=eth0" >> $NET_FILE
echo  "DEVICE=eth0" >> $NET_FILE
echo  "ONBOOT=yes" >> $NET_FILE
echo  "IPADDR=${PRE_IP}" >> $NET_FILE
echo  "NETMASK=255.255.255.0" >> $NET_FILE
echo  "GATEWAY=192.168.56.2" >> $NET_FILE
}

main(){
    set_key;
    set_hostname;
    set_static_ip;
    /bin/cp /tmp/rc.local /etc/rc.d/rc.local
    reboot
}

main
1.3.1修改rc.local



#将rc.local拷贝到tmp下
[iyunv@example ~]# cp /etc/rc.d/rc.local /tmp
#CentOS7开机执行rc.local,需将rc.local添加执行权限
[iyunv@example ~]# chmod +x /etc/rc.d/rc.local
#编辑rc.local
[iyunv@example ~]# vim /etc/rc.d/rc.local
/bin/sh /tmp/init.sh
1.4关机并压缩镜像



#关机
[iyunv@example ~]# init 0
#压缩镜像,清理磁盘碎片
[iyunv@linux-node1 ~]# qemu-img convert -c disk -O qcow2 centos7.qcow2
1.5上传镜像至glance
  注:镜像就是一开始创建虚拟机的qcow2的虚拟磁盘



[iyunv@linux-node1 ~]# openstack image create "CentOS-7-x86_64" \
--file /tmp/centos7.qcow2 \
--disk-format qcow2 \
--container-format bare \
--public
  至此,openstack的镜像就制作完毕,请根据自己公司优化需求来制定

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

  — By GoodCook

  — 笔者QQ:253097001

  — 欢迎大家随时来交流

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-387733-1-1.html 上篇帖子: virsh命令行管理工具 下篇帖子: MXPlayer ac3音轨支持问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表