【openstack N版】——手把手教你制作生产环境镜像
一.CentOS7镜像制作
1.1创建CentOS7虚拟机
1.1.1创建虚拟磁盘
#注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance
[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 \
--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--x86_64-DVD-.iso
#桥接网卡
[root@linux-node1 ~]# virt-install \
--virt-type kvm \
--name centos \
--ram \
--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-.iso
1.1.3VNC连接虚拟机

#选择英文语言,下一步

#选择时区:亚洲上海

#选择最小化安装包组

#自定义磁盘分区

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

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

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

#开始安装系统

#给root用户创建密码
1.2连接虚拟机并优化
1.2.1安装常用基础软件包
[root@example ~]# yum install -y snmap net-tools tree screen wget git vim salt-minion zabbix-agent lsof tcpdump
1.2.2修改网卡信息
#删除UUI、mac等信息,只保留以下内容
[root@example ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
1.2.3修改yum源
[root@example ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
1.2.4关闭Networkemanager和防火墙
[root@example ~]# systemctl disable firewalld
[root@example ~]# systemctl stop firewalld
[root@example ~]# systemctl stop NetworkManager
1.2.5关闭selinux
#修改selinux配置文件
[root@example ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
#重启后,检查结果如下
[root@example ~]# getsebool
getsebool: SELinux is disabled
1.3编写metadata脚本
[root@example ~]# vim /tmp/init.sh
#!/bin/bash set_key(){
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod /root/.ssh
fi
for ((i=;i<=;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 ];then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod /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下
[root@example ~]# cp /etc/rc.d/rc.local /tmp
#CentOS7开机执行rc.local,需将rc.local添加执行权限
[root@example ~]# chmod +x /etc/rc.d/rc.local
#编辑rc.local
[root@example ~]# vim /etc/rc.d/rc.local
/bin/sh /tmp/init.sh
1.4关机并压缩镜像
#关机
[root@example ~]# init
#压缩镜像,清理磁盘碎片
[root@linux-node1 ~]# qemu-img convert -c disk -O qcow2 centos7.qcow2
1.5上传镜像至glance
注:镜像就是一开始创建虚拟机的qcow2的虚拟磁盘
[root@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
— 欢迎大家随时来交流
—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
【openstack N版】——手把手教你制作生产环境镜像的更多相关文章
- PWA入门:手把手教你制作一个PWA应用
摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...
- 手把手教你制作AppPreview视频并上传到appStore进行审核
手把手教你制作AppPreview视频并上传到appStore进行审核 注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效! 最终效果 1. 新建一个事 ...
- 第一节:学会Java前提-手把手教你配置JDK环境变量
前言 大家好,今天写一遍学会Java前提-手把手教你配置JDK环境变量的概述,希望你们喜欢 下载地址 下载jdk,和eclipse就比较简单了,提供JDK 9 地址: http://www.oracl ...
- 【必知必会】手把手教你配置MySQL环境变量——图文详解
一.先决条件 假设我们已经成功安装MySQL数据库.如果还有小伙伴不知道如何安装MySQL数据库,可以在本文下留言,留言数超20,则出一期"手把手教你安装MySQL数据库--图文详解&quo ...
- 手把手教你制作微信小程序,开源、免费、快速搞定
最近做了个"罗孚传车"的小程序 一时兴起,做了一个小程序,将个人收集的同汽车相关的行业资讯和学习资料,分享到小程序中,既作为历史资料保存,又提供给更多的人学习和了解,还能装一下:) ...
- 首发 手把手教你制作 Windows8 应用程序内部的 hubtile (动态瓷砖控件) MetroStyle(转)
http://blog.csdn.net/wangrenzhu2011/article/details/8175492 (转) 在metro 风格中 动态磁贴是他的精髓 在wp7 的开发中 我们可以使 ...
- 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)
前言 好久没更新博客和公众号了,感谢大家还没取关哈,好吧,我承认是我太懒了,今天分享一个福利! 趁着前段时间嘉立创和捷配打价格战,一天之内,多次降价,看着真是热闹.捷配降到最低3元一款,而嘉立创降到最 ...
- Caffe系列3——制作Hdf5数据源详细教程(手把手教你制作Hdf5数据源)
制作Hdf5数据源详细教程
- Caffe系列2——Windows10制作LMDB数据详细过程(手把手教你制作LMDB)
Windows10制作LMDB详细教程 原创不易,转载请注明出处:https://www.cnblogs.com/xiaoboge/p/10678658.html 摘要: 当我们在使用Caffe做深度 ...
随机推荐
- 使用nodejs爬取和讯网高管增减持数据
为了抓取和讯网高管增减持的数据,首先得分析一下数据的来源: 网址: http://stockdata.stock.hexun.com/ggzjc/history.shtml 使用chrome开发者工具 ...
- UVa 10827 - Maximum sum on a torus
题目大意:UVa 108 - Maximum Sum的加强版,求最大子矩阵和,不过矩阵是可以循环的,矩阵到结尾时可以循环到开头.开始听纠结的,想着难道要分情况讨论吗?!就去网上搜,看到可以通过补全进行 ...
- Jmeter 新手
转载:http://www.cnblogs.com/TankXiao/p/4059378.html 什么是压力测试 顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,看程序运行是否稳定/服 ...
- Java 之 Spring加载(Java之负基础实战)
1.下载后解压 2.在WEB-INF里面创建lib文件夹 3.拖入jar包 只拖入*.RELEASE.jar包
- 2.12. 后端 SQL 的可见性(Core Data 应用程序实践指南)
上一节已经插入了数据,非常好.但是,我得更进一步.要知道里面究竟发生了什么,持久化存储区的数据有什么变化,生成了哪些查询语句.每次运行程序时,是否重复插入了对象. 有一个调试选项可以提供足够的信息,开 ...
- HDU-1864-最大报销额
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1864 这题开始题意没搞清楚,就做题了,导致浪费了很多的时间,不应该啊, 注意事项:每张发票上,单项物品 ...
- SVG的path的使用
SVG的path的使用: 参考:http://justcoding.iteye.com/blog/2226354 <%@ page language="java" conte ...
- Java中多线程原理详解
Java是少数的集中支持多线程的语言之一,大多数的语言智能运行单独的一个程序块,无法同时运行不同的多个程序块,Java的多线程机制弥补了这个缺憾,它可以让不同的程序块一起运行,这样可以让程序运行更加顺 ...
- 细说WPF数据绑定
简单的事例: <Slider Name="mySlider" Height="28" HorizontalAlignment="Left&q ...
- Java中的==、equals、hasCode方法
== java 的数据类型分为“基本数据类型” 和“引用数据类型”在基本数据类型的比较中,== 比的就是基本数据类型变量中所保存的值在引用数据类型的比较中,== 才比较的是变量所指向的对象的地址. e ...