【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做深度 ...
随机推荐
- iOS 选择框 单选框
UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom]; CGRect checkboxRect = CGRectMake( ...
- Nginx中的信号量(信号控制)
- 兼容IE6及以上的导航栏子菜单栏滑过显示隐藏效果
;(function(window){ var li = document.getElementById('parentnav').getElementsByTagName('li')[ ...
- Angular - - angular.equals
angular.equals 对比两个对象/值是否相等.支持值类型.正则表达式.数组和对象. 如果下列至少有一个是正确的,则将两个对象/值视为相等. 两个对象/值能通过===比较. 两个对象/值是同一 ...
- Bootstrap3网上api文档地址
http://v3.bootcss.com/css/#forms http://www.ziqiangxuetang.com/bootstrap/bootstrap-forms.html 另附加fa字 ...
- iOS 知识点
1. @dynamic.@synthesize 2. iOS NSTimer 3. iOS 之 Aggregate Target 4. iOS 属性之assign.copy.retain 5. iOS ...
- CSS 文本、字体、链接
CSS 文本属性可定义文本的外观. 通过文本属性,您可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. 缩进文本 把 Web 页面上的段落的第一行缩进,这是一种最常用的文本格式化 ...
- python 安装与pip安装
在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装, ...
- Objective-C Effective 技巧
1.除非有必要,否则不要引用头文件,一般来说应该利用@class使用前向声明,并在实现中引用头文件:如果实在无法使用,比如要声明某个类遵循一项协议,这种情况下,尽量把这条声明移到分类中,如果不行的话, ...
- Spring MVC 返回NULL时客户端用$.getJSON的问题
如果Spring MVC返回是NULL,那么客户端的$.getJSON就不会触发: 必须返回点什么东西: 如果返回的是一个字符串,客户端的$.getJSON也不会触发:把字符串 包装成List< ...