【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

  — 欢迎大家随时来交流

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

原文地址:https://www.cnblogs.com/goodcook/p/6484486.html