操作记录:

useradd -s /bin/bash -d /opt/stack stack
设置stack账号密码为“stack” ,切换到stack用户执行:
su - stack
$ git clone https://git.openstack.org/openstack/diskimage-builder
使用visudo命令更改stack用户的sudo权限与root一致,运行命令visudo之后,找到“root    ALL=(ALL)       ALL”,在其后面增加下面这行:
stack   ALL=(ALL)       ALL
$ cd diskimage-builder
$ sudo pip install -r requirements.txt
$ sudo python setup.py install
确保你已经安装了qemu-img 和kpartx。如果没有安装,运行以下命令:
$ sudo yum install -y qemu kpartx

至此,安装成功,使用  disk-image-create -h  查看该命令的使用方法

制作centos7镜像:

export DIB_DEV_USER_USERNAME=centos   //初始用户名centos
export DIB_DEV_USER_PASSWORD=centos   //初始密码centos
export DIB_DEV_USER_PWDLESS_SUDO=YES   //允许sudo
export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"   //cloud-init 的datasource是ConfigDrive, OpenStack
disk-image-create -a amd64 -t raw -o /opt/stack/images/centos7.raw centos7 vm  cloud-init-datasources devuser
注:-a amd64 64位操作系统,-t raw 裸格式,-o 文件路径,centos7 rm cloud-init-datasources devuser 都是element ,与上面的环境变量相呼应,比如DIB_DEV_USER_USERNAME环境变量在devuser这个element中用到,DIB_CLOUD_INIT_DATASOURCES 在cloud-init-datasources 中用到。

安装   并设置登录密码(直接用打好的镜像上传上去 centos用户登录不成功)

 yum install -y libguestfs-tools  #安装安装包
[root@localhost images]# virt-sysprep --root-password password:123.com -a centos7.raw

然后上传镜像测试。

    $ vi admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=    //你的实际openstack认证keystone地址
export OS_INTERFACE=internal
export OS_IDENTITY_API_VERSION=3

上传镜像:

    $ openstack image create --disk-format raw --file /opt/stack/images/centos7.raw centos7-raw-628

后面通过web界面生成虚拟机实例进行验证,主要验证以下几项:

1.主机名称注入;

2.是否能根据flavor动态调整磁盘大小;

3.是否能注入密钥;

注意,生成虚拟机的时候,需要选择一个带有DHCPagent的网络,cloud-init在注入元数据的时候需要访问地址169.254.169.254 ,这个地址的路由需要DHCPagent提供,否则,cloud-init访问不到相关元数据,虚拟机生成会出现问题。从另一个角度看,也可以不选网络,但是需要修改镜像里面cloud-init程序配置。

总结:

openstack的使用维护过程中,镜像的制作和维护是一个重要内容,一般来说都有定制化的需求,比如需要更改yum源,定制安装包,如果使用手工方法制作非常耗时,使用官网直接下载的镜像不能做到定制,使用disk-image-builder可以大大提高制作镜像的效率。

disk-image-builder的原理是把最初启动虚拟机时安装操作系统完成后的镜像保存为base镜像,基于该base镜像挂载到本地,然后chroot到根分区,根据不同的定制需要增加不同的模块,安装完成后保存为特定格式的镜像文件。

使用DIB还有一个优点,就是每次制作完成一个镜像,比如centos7,第一次制作,会从网上下载基础镜像文件,第二次以及以后制作同一版本的镜像时,直接使用原来下载下来的镜像缓存文件,非常快。另外,如果网络不稳定,还可以提前准备好基础镜像,然后后面指定本地文件作为基础镜像。

通过浏览element内的相关目录和环境变量,发现有很多可以挖掘的东西,比如里面有一个docker的element,可以从docker中生成镜像。

对于openstack的ironic组件需要对硬件设备支持的镜像,对trove组件需要用到数据库镜像,这些需求可以引入新的element实现,如果手工来制作这些镜像,可以想象一下工作量是非常大的。

即使不用ironic组件和trove数据库组件,我们也可以利用相关的element来生成数据库镜像或者支持硬件设备支持的镜像,也可以输出格式是iso的镜像。

总之,通过丰富的element可以非常灵活高效的定制自己需要的镜像,不管这个镜像是给openstack用,还是直接制作成为iso镜像刻录成光盘装机使用都可以。

转载于:https://blog.51cto.com/yuweibing/2133762

使用 disk-image-block制作centos7的镜像相关推荐

  1. 制作CentOS7.9镜像,使用U盘安装Linux系统

    使用U盘安装Linux系统 1. 下载镜像 2. ISO工具 3. 导入镜像文件 1. 下载镜像 CentOS清华大学开源软件镜像站下载: https://mirrors.tuna.tsinghua. ...

  2. 制作Centos7自动安装镜像(四)

    文章总览:制作Centos7自动安装镜像 通过kickstart软件,我们已经有了一个初始化的ks.cfg脚本了.下面要做的就是在这个脚本上添加上我们要加入的内容. 在此处做一些背景说明.虽然我前面的 ...

  3. 制作Centos7自动安装镜像(三)

    文章总览:制作Centos7自动安装镜像 在这里说明一下,我们制作自动化安装镜像用的是linux的kickstart技术. 这个技术的核心是制作一个ks.cfg文件,将所有需要自动化安装的内容写成一个 ...

  4. Centos7制作docker初始镜像

    Centos7用febootstrap制作docker初始镜像包 使用工具:febootstrap 下载地址:http://down.51cto.com/data/2330414 使用命令: febo ...

  5. trove mysql 镜像_trove 基于 centos7 制作 mysql5.6 镜像

    本文档是手动制作mysql5.6的trove镜像 openstack版本为newton 1.创建基础虚拟机 登录openstack创建一台虚拟机,这台虚拟机用于制作trove镜像,虚拟机的根磁盘最终会 ...

  6. Ultraiso制作Centos7 优盘Udisk 启动镜像

    2019独角兽企业重金招聘Python工程师标准>>> win 系统制作U盘安装硬盘镜像 用ultraiso_v9.5.3.2901将Centos.iso写进U盘. 1.安装过程全程 ...

  7. 制作Centos7自动安装镜像(二)

    文章总览:制作Centos7自动安装镜像 RPM安装包制作 Linux镜像的标准安装方式是将待安装的软件制作成RPM包,然后将RPM包解压并复制到指定的目录中去(据说除此之外还可以将带安装的软件做成t ...

  8. 制作Centos7自动安装镜像(五)

    文章总览:制作Centos7自动安装镜像 终于进入到最后的阶段了,这也是这个阶段最为复杂的一步了. 我们来逐步完善吧: 1. 同步系统安装包 建立一个目录,用于制作安装包,我建立的目录是/root/k ...

  9. trove mysql 镜像_trove 基于 centos7 制作 mysql5.5 镜像

    本文档是手动制作mysql5.5的trove镜像 openstack版本为newton 1.创建基础虚拟机 登录openstack创建一台虚拟机,这台虚拟机用于制作trove镜像,虚拟机的根磁盘最终会 ...

最新文章

  1. jemeter监听器的使用
  2. 蓝云公布2019云生态战略,如何解决企业上云关键问题?
  3. 2021惠阳一中高考成绩查询,惠阳一中实验学校2019高考成绩喜报、本科重本高优上线人数...
  4. spring面试重点
  5. mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句
  6. python 下载拉钩教育AES加密视频
  7. 中超联赛提交函数的c语言,国家体育总局
  8. mysql批量条件字段_mysql批量更新多条记录的同一个字段为不同值的方法
  9. 矩阵形状| 使用Python的线性代数
  10. C++string的查找和替换
  11. google四件套之Dagger2。从入门到爱不释手,之:Dagger2进阶知识及在Android中使用
  12. 从重大事件保障,看华为如何打造一流保障体系
  13. Android系统打不开,安卓手机打不开pdf文件怎么解决?
  14. js以索引形式遍历map对象
  15. 分布式记账的几种方式
  16. C++/MFC 面试题(一)
  17. Java方法创建及调用--------06
  18. 三星SAIT China Lab招聘研究员(校招/社招)及实习生
  19. word不能粘贴文字问题
  20. 钉钉撤回的信息服务器内能否看到,在钉钉群中撤回消息别人能看到“你撒回了一条消息”的文字吗?...

热门文章

  1. DeFi+NFT+实体藏品创新融合构建OPENLAND生态圈
  2. Dede列表页调用TAG标签的方法
  3. Python 并行计算
  4. 蓝桥杯 ALGO-951 预备爷的悲剧
  5. Linux下使用xargs优雅的kill掉全部相关线程
  6. 推荐这些冷门但实用的软件
  7. Dolphinscheduler 安装笔记
  8. 20145226 2016-2017-2 夏艺华 《Java程序设计》 课程总结
  9. LidarMultiNet:在单个多任务网络中统一LiDAR语义分割、三维目标检测和全景分割
  10. WeTest六周年|质领未来,向新而行