前言:

openstack 环境已经部署好了,接下来就是运行实例,运行实例就需要镜像了。镜像的来源分为官方镜像,三方镜像,以及自定义镜像。

官方的镜像不能自动扩容根目录大小

三方镜像嘛……这个看需求吧

自定义镜像,也就是自己动手来做一个镜像。我比较喜欢这种方式,在制作过程中可以学到新东西。由于本人使用的ubuntu 系统已经安装了virtualBox 此例就使用virtualBox 为例。


磁盘格式:

openstack 镜像服务支持的虚拟机镜像磁盘格式有

aki

亚马逊 kernel 镜像

ami

亚马逊 machine 镜像

ari

亚马逊 ramdisk 镜像

iso

光盘数据格式

qcow2

支持QEMU 能动态扩展,支持写时复制

raw

裸磁盘格式。各种格式可以在裸格式间转换

vdi

支持VirtualBox虚拟机和QEMU

vhd

VHD磁盘格式,支持VMware,Xen,Microsoft,VirtualBox和其它虚拟化

vhdx

增强版本的VHD格式,支持更大磁盘大小

vmdk

常见磁盘格式,支持常见虚拟化格式

需求:

可根据磁盘大小自动扩展根目,修改主机名,注入ssh密钥,根据作用安装相应软件,如Nginx、apache、tomcat、PHP-fpm、DB……

实现以上需求,需要借用几个工具实现

cloud-init (https://launchpad.net/cloud-init/)功能

设置默认语言环境

设置实例主机名

生成实例ssh私钥

添加ssh密钥到用户 .ssh/authorized_keys 使其能够登录

设置临时挂载点

cloud-utils https://launchpad.net/cloud-utils

扩大硬盘

linux-rootfs-resize https://github.com/flegmatik/linux-rootfs-resize

调用cloud-utils ,虚拟机启动时检测硬盘扩大,则自动扩展根目录


具体实现:

因本人电脑已经安装有VirtualBox,且已安装好Centos 6.8系统(VirtualBox如何安装系统略),这里就基于已安装好的系统做配置。


添加EPEL 库,安装cloud-init:

yuminstall-yhttp://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm

安装cloud-init 软件包及其他所需包:

yuminstall-ycloud-initcloud-utilscloud-utils-growpartacpidgitparted

安装linux rootfs resize:

gitclone
cdlinux-rootfs-resize
./install

将启动日志打印到Dashboard 控制台,修改内核引导参数:

vim/boot/grub/menu.lst

在kernel 行尾增加

console=tty0console=ttyS0,115200n8

在同一行上的同一文件中删除对以下参数的任何引用:

rhgbquiet

删除网络配置中对UUID和MAC地址的硬编码:

rm-f/etc/udev/rules.d/70-persistent-net.rules
PRIMARY_INTERFACE=$(iproutelistmatch0.0.0.0|awk'NR==1{print$5}')
sed-i'/UUID/d'/etc/sysconfig/network-scripts/ifcfg-$PRIMARY_INTERFACE
sed-i'/HWADDR/d'/etc/sysconfig/network-scripts/ifcfg-$PRIMARY_INTERFACE

为了是openstack实例能与元数据服务通行,修改网络配置:

echo"NOZEROCONF=yes">>/etc/sysconfig/network

关闭iptables、selinux:

sed-i's/^SELINUX=.*/SELINUX=disabled/g'/etc/selinux/config
serviceiptablesstop&&chkconfigiptablesoff
serviceip6tablessotp&&chkconfigiptablesoff

安装相关应用或应用源(可选)

清理yum:

yumcleanall

删除/tmp 目录中的所有内容:

rm-rf/tmp/*

清理最后的登录用户日志:

rm-f/var/log/wtmp/var/log/btmp

清理命令历史记录:

history-c

关闭虚拟机:

poweroff


转换格式:

先将vdi转为raw裸格式,在转换为qcow2

VirtualBox支持格式转换,命令如下

VBoxManageclonemedium[disk|dvd|floppy]<uuid|inputfile><uuid|outputfile>
[--formatVDI|VMDK|VHD|RAW|<other>]
[--variantStandard,Fixed,Split2G,Stream,ESX]
[--existing]
VBoxManageclonehd"centos.vdi"centos.img--formatraw--variantstandard


raw转为qcow2格式需要借用qemu-img完成

qemu-imgconvert-cfrawcentos-6.8.img-Oqcow2centos-6.8.qcow2

参数说明:

-f 指定需要转换文件的文件格式,既输入镜像格式(可省略)

-c 压缩

-O指定要转换的目标格式,既输出镜像格式


将镜像上传到glance Repository

openstackimagecreate"centos6.8"--filecentos-6.8.qcow2--disk-formatqcow2--container-formatbare--public


注意:

安装操作系统时只分一个根(/)目录,否则自扩容会失败。

网卡是DHCP自动获取方式,且已处于激活状态

关闭系统自带防火墙,使用openstack安全组

Create a virtualbox Based CentOS 6 OpenStack Cloud Image的更多相关文章

  1. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  2. 在两个屏幕上运行的iOS应用程序(无镜像)

    我创建了一个包含幻灯片的iPad应用程序,当用户点击此幻灯片时,他/她可以输入一些信息.我现在要做的是在通过AirPlay连接电视和iPad时在电视上显示幻灯片显示内容可以这样做吗?如何在iOS中完成?所以不要反映整个应用程序.解决方法您可以使用Airplay和AppleTV编写应用程序以处理2个UIScreens,然后为电视UIScreen和iPadUIScreen设置单独的根视图控制器.然后在电视的视图控制器上显示图像或幻灯片,并从iPad视图控制器的事件中运行该图像或幻灯片!

  3. ios – 如何镜像UIBezierPath?

    我有一个UIBezierPath,我想得到它的镜像.我该如何做到这一点?

  4. ios – Airplay:外部窗口镜像子视图

    米解决方法称为AirPlay镜像的技术命名不佳.它实际上以两种模式运行,一种是将整个iOS设备镜像到AirPlay设备,另一种模式下,一旦连接了镜像AirPlay设备,开发人员就可以使用两个UIWindow/UIScreen.您正在使用后一种模式,通常被称为“镜像”,但是您真的有一个完全独立的窗口/屏幕进行管理,应该有更好的术语来指代这种操作模式.上面所描述的内容基本上是将UIView从设备窗口移动到AirPlay窗口,它的工作原理与之一致!

  5. iOS AirPlay:我的应用程序仅在镜像开启时通知外部显示器?

    >为什么我的应用程序会收到通知我开镜像时的外部显示……我显然误解了一些东西,但是看起来像镜像应该通知我的应用程序外部显示器已经消失代码示例如下.在此先感谢您的帮助!

  6. openstack swift ring文件解析

    一直以为对swift的ring文件充满好奇,这段时间重新研究swift,正好借此机会好好研究下。

  7. KeyStone安装部署笔记

    KeyStone客户端:OpenStack身份服务API的命令行接口。OpenStack出于扩展性的考虑也支持多个region。下面的命令在regionOne创建了keystone的三种端点:为admin租户和用户申请令牌:最后验证admin租户和用户:输出结果验证了身份服务工作正常,Keystone安装部署成功。

  8. OpenStack对象存储――Swift

    Swift前身是RackspaceCloudFiles项目,随着Rackspace加入到OpenStack社区,于2010年7月贡献给OpenStack,作为该开源项目的一部分。Swift目前的最新版本是OpenStackEssex1.5.1。Swift特性在OpenStack官网中,列举了Swift的20多个特性,其中最引人关注的是以下几点。在OpenStack中还可以与镜像服务Glance结合,为其存储镜像文件。Auth认证服务目前已从Swift中剥离出来,使用OpenStack的认证服务Keysto

  9. OpenStack之swift安装笔记

    安装过程依然参考的是OpenStack的官方安装手册,但补充了一些细节。OpenStack的对象存储是一个多租户的、高可扩展的对象存储系统,通过RESTfulHTTPAPI管理着大量的非结构化数据,在部署对象存储之前必须至少安装了身份服务。首先在KeyStone中创建Swift的用户、服务及endpoint,具体命令及结果如下:然后安装proxy-server,swift客户端、memcached等:yuminstallopenstack-swift-proxypython-swiftclientpyth

  10. OpenStack入门到实战视频教程全集下载罗勇老师经典教程系列

    全网最经典的openstack视频教程,现在免费了!罗老师讲得实在是太好了,目前绝对是全网最好的openstack入门视频,而且讲得特别细,非常适合初学者学习,收集了好久终于齐了,现在贡献给大家。

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部