• diskimage-builder element


    root阶段
    创建或修改初始根文件系统内容。 这是添加替代分销支持的地方,还是建立在现有图像上的自定义。
    只有一个元素可以一次使用它,除非特别注意不要盲目覆盖,而是适应其他元素提取的上下文。
    10-cache-ubuntu-tarball       
    检查cache文件夹(一个用于存放临时文件的文件夹)是否已经挂载,如果没有挂载,创建cache文件夹和挂载点,并且将其挂载到镜像build的目录下
    10-cache-ubuntu-tarball
    下载镜像
    50-build-with-http-cache
    这个脚本属于dpkg,它的作用就是如果配置了代理,就将Acquire::http::Proxy “$http_proxy”;写入配置文件中
    60-block-apt-translations
    配置apt不获取 translations files
    90-base-dib-run-parts
    这个脚本的作用是将dib-run-parts放到镜像的bin目录下
    99-block-daemons
    这个脚本的作用是防止很多进程和服务自动启动
    99-shared_apt_cache
    这个脚本的作用就是创建了一个apt_cache_dir目录用于cacheapt的包,然后把这个目录挂载到了镜像下的目录
    99-trim-dpkg
    这个脚本配为dpkg配置了force-unsafe-io和无语言,主要是dpkg的配置.
     
    extra-data阶段
    extra-data阶段的工作是将一些数据拷贝到镜像中备用
    01-copy-apt-keys
    这个脚本属于dpkg element 它的作用是拷贝apt-keys到 tmp/apt_keys目录下
    10-create-pkg-map-dir
    这个脚本属于pkg-map element 它的作用是把每个元素中的pkg-map文件拷贝到 /user/share/pkg-map/$元素目录下
    20-manifest-dir
    这个脚本属于manifests element 它的作用是创建了一个用于存放manifest文件的文件夹
    50-store-build-settings*
    这个脚本属于base element 它作用是把环境变量写到了钩子文件夹下的文件中
    99-enable-install-types
    这个脚本属于install-types element 它的作用是让安装的软件可以有不同的类型,例如git,pip等
    在脚本中,建立了正确的安装类型的软链接
    如果没有指定安装的类型,就用默认的方式安装
    99-squash-package-install
    在elements/package-installs/bin下的package-installs-squash中说这个脚本的作用是把所有的安装包的文件汇总到一个文件中
     
    pre-install阶段
    00-disable-apt-recommends
    这个脚本对apt进行了配置
    00-remove-apt-xapian-index
    这个脚本卸载了 apt-xapian-index 按照脚本中的说法,原因是这个包有问题,在更新的时候会导致出错
    00-remove-grub
    这个脚本暂时卸载了grub 因为在chroot的时候,没有块设备的存在,所以grub的安装钩子会报错. 所以暂时移除grub,来避免冲突
    01-dib-python
    这个脚本建立了dib-python的软连接到系统中的python
    01-install-bin
    将diskimage-builder的bin目录下的内容拷贝到了镜像内
    01-set-ubuntu-mirror
    这个脚本配置了ubuntu的apt源
    02-add-apt-keys
    这个脚本将之前配置的apt的key用apt-key add xxx命令配置
    02-package-installs
    这个脚本从/tmp/in_target.d/pre-install.d和package-installs.json获取了安装的信息,来判断现在这个阶段是否要进行安装.
    03-baseline-tools
    这个脚本安装了一些python的基本包
    04-dib-init-system
    这个脚本将dib-init-system这个脚本拷贝到了镜像系统的/usr/bin目录下 dib-init-system脚本用于判断系统的init的类型:
    99-apt-get-update
    这个脚本中apt-get进行更新
    99-package-uninstalls
    这个脚本和之前的package-install是同一个套路,只不过反过来了.
     
    install 阶段
    install阶段应该是最主要的一个解决,在这里会对镜像进行具体的软件的安装,按照需求安装一些包.
    00-baseline-environment
    这里的install-packages -m 的-m是mapper.这里通过mapper的方式来对系统和包进行了解耦.
    install-packages -m 通过iscsi_package和现在对应的操作系统,就能找到具体要安装的包的名字
    00-up-to-date
    调用的方法是相同的,这里也是一层解耦的封装
    01-package-installs 99-package-uninstalls
    这个元素会在extra-data install post-install和pre-install根据配置文件对包进行安装和删除.
    05-set-cloud-init-sources
    DIB_CLOUD_INIT_DATASOURCES的值是Ec2,这里把这个参数写到了cloud-init的配置文件中
    10-cloud-init
    配置了manage_etc_host这个选项
    20-install-init-scripts
    把希望开机启动的脚本拷贝到了对应的位置让他们发挥作用
    50-store-build-settings
    保存了创建dib的参数
    80-disable-rfc3041
    禁止ipv6
    99-autoremove
    apt-get -y autoremove
     
    post-install阶段
    post-install阶段做一下安装的收尾工作,同样,它也是在chroot下运行的
    00-package-installs和95-package-uninstalls在之前已经说明过作用了
    10-enable-init-scripts
    如果初始化是openrc的方式,需要执行一下rc-update
    97-dkms
    dkms 是指 Dynamic Kernel Module Support. Fedora和Ubuntu支持DKMS
     
    run_d_in_target finalise
    50-bootloader
    这个脚本的作用是安装bootloader
    目前的bootloader主要有两种,extlinux和grub2 这个脚本的作用是一个通用的bootloader安装的程序,
    在dib支持的所用linux发行版都可以用这个脚本来安装bootloader
    50-remove-bogus-udev-links
    这是为了解决opensuse的一个bug
    99-clean-up-cache
    清除缓存
    99-write-dpkg-manifest
    把安装的包写到了manifest文件中
    https://www.youtube.com/watch?v=Nq6idDU2Mn4
    export DISTRO_NAME=centos
    export DIB_RELEASE=6.5
    export ELEMENTS_PATH=/root/yjfwk/.octavia_dev/lib/python2.7/site-packages/diskimage_builder/elements
     
    export DISTRO_NAME=centos7
    export DIB_RELEASE=GenericCloud-1503
    export DIB_CLOUD_INIT_DATASOURCES="OpenStack,ConfigDrive,Ec2"
    export DIB_CLOUD_IMAGES=CentOS-7-x86_64-GenericCloud-1503.qcow2
     
     
    disk-image-create vm debian -p qemu-guest-agent >>debian1.txt 2>&1
    disk-image-create ubuntu vm -0 rain5 -t raw >> rain5.txt 2>&1
    wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-OracleCloud.raw.tar.gz
    file test.raw
    fdisk -l test.raw
    kpartx -a test.raw
    losetup -a
    dd if=/dev/mapper/loop0p1 of=test.xfs.raw bs=1M
     
    mkdir /tmp/mnt
    mount test.raw /tmp/mnt
    chroot /tmp/mnt /bin/bash
    echo nameserver 114.114.114.114 > /etc/resolv.conf
    rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    yum install https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
    yum install puppet
    yum install ntpdate lsof
    vi /etc/selinux/config
    disabled
    openstack windows image creation newbie
    http://cloud.centos.org/centos/7/images/
    View Code
  • 相关阅读:
    些许注意事项(初学)
    第一个方法(初学)
    重载(初学)
    数组(初学)
    文件下载(初学)
    javaweb中上传视频,并且播放,用上传视频信息为例
    javaweb中上传图片并显示图片,用我要上传课程信息(里面包括照片)这个例子说明
    从后台servlet中,获取jsp页面输入的值,来删除用户一行信息
    第二式 观察者模式
    第一式 策略模式
  • 原文地址:https://www.cnblogs.com/gushiren/p/9561015.html
Copyright © 2020-2023  润新知