下面首先看一下 ramdisk-image-create 或者disk-image-create 常用参数
-a 指定i386|amd64|armhf架构类型,默认为amd64
-o imagename 指定输出的镜像名称,默认为镜像的名称
-t qcow2,tar,vhd,docker,aci,raw 指定输出的镜像文件类型,默认为qcow2
文件类型应当以逗号分隔,VHD输出请求vhd-util,设置在你的PATH中可以执行,ACI输出请求ACI_MANIFEST环境变量,是manifest文件的路径
-x 打开追踪
-u 不压缩镜像,虽然文件大,但是执行快
-c 表示开始工作之前先清理环境
--checksum 为你创建的镜像文件产生MD5和SHA256校验和文件
--image-size size 设置创建镜像的大小,单位为GB
--image-cache directory 本地缓存镜像的路径,默认为 '~/.cache/image-create'
--max-online-resize size 设置重置的时候,支持的最大文件系统块。
当镜像被摧毁,而你又需要一个真实大小的根分区时候,这个参数很实用,使用一个非常大的值,在运行resize2fs时,会导致一个未知的bug
--min-tmpfs size 设置建立镜像时需要的最小GB的tmpfs
--mkfs-options 设置传递个mkfs命令的参数,整个参数为一个字符串
--no-tmpfs 不使用tmpfs加速镜像创建
--offline 不更新缓存资源
--qemu-img-options 设置传递个qemu-img的选项
--root-label label 指定根文件系统的标签,默认为'cloudimg-rootfs'
--ramdisk-element 指定用于建立镜像的主要元素
默认有'ramdisk',当为RHEL和CentOS平台的时候,'dracut-ramdisk应当被设置'
--install-type 指定默认安装类型,默认为'source',也可以设置为'package'用于包的安装
--docker-target 如果输出类型为docker则需指定repo和tag,默认为镜像名称
单独RAMDISK有的选项
-n 跳过默认的'base'元素选项
-p package[, package, package] 列举在镜像中安装的包
-h | --help 显示帮助信息
--version 显示版本信息
ELEMENTS_PATH可以指定多个本地的元素
注意:至少的有一个根元素被指定, 如果使用VHD输出格式,还需要安装vhd-util作为镜像的根引导补丁。
例如:
ramdisk-image-create -a amd64 -o ubuntu-amd64 vm ubuntu
export ELEMENTS_PATH=~/source/tripleo-image-elements/elements
ramdisk-image-create -a amd64 -o fedora-amd64-heat-cfntools vm fedora heat-cfntools
ramdisk-image-create -a amd64 -o fedora-deploy deploy fedora
ramdisk-image-create -a ubuntu-ramdisk ramdisk ubuntu
下面介绍创建裸金属服务的镜像
创建用户镜像,以CentOS7为例子
export FS_TYPE="xfs"
disk-image-create centos7 baremental dhcp-all-interfaces grub2 -o user-image //这句话的意思是:基础镜像为centos7,指定的元素为baremental dhcp-all-interfaces grub2,输出的镜像名称为user-image,格式为默认qcow2;baremental表示抽取kernel和initial ramdisk建立镜像;dhcp-all-inerface表示在引导和配置DHCP期间,自动侦测网络接口。grub2表示镜像会安装grub2 bootloader,该选项是ironic工作本地引导必须的。
还可以为镜像添加登录的用户名密码,需要在上面的命令中多添加一个元素devuser并设置如下环境变量
export DIB_DEV_USER_PWDLESS_SUDO="yes"
export DIB_DEV_USER_USERNAME="user"
export DIB_DEV_USER_PASSWORD="password"
如果使用ubuntu,则需要指定使用的明确版本,如果为ubuntu14.01,设置值为'trusty'
export DIB_RELEASE="trusty"
创建自己的元素
在diskimage-builder的安装目录下的elements中,默认为/user/share/diskimage-builder/elements
1、创建自定义元素名称的目录,这里假设为myelement
2、进入该目录,创建element-deps文件,并写入package-installs install-types install-static source-repositories,所有的以空格换行
3、如果自定义安装包,需要新建一个package-installs.yaml的文件,在文件中写入需要安装的软件,每个软件一行
4、如果希望拷贝GIT厂库中的文件,则需要新建一个source-repository-XXX的文件,这里举例ironic,则新建source-repository-ironic,并在里面写入ironic git /home/ironic https://git.openstack.org/ironic stable/mitake,具体格式为<name> git <distination> <location> [<branch>]
5、如果希望将本地的文件打包到镜像中,则需要建立一个static的文件夹,该文件夹下的内容会映射到镜像中,如static/home/test/haha.txt,则会在镜像/home/test/下有一个haha.txt的文件
6、最后在使用disk-image-create命令的时候,添加上刚才自定义的元素名称myelement,比如 disk-image-create centos7 myelement baremetal dhcp-all-interface grub2 -o user-image