zoukankan      html  css  js  c++  java
  • Oz 创建CentOS7镜像

    参考链接:

    https://github.com/clalancette/oz/wiki/Oz-template-description-language

    https://github.com/clalancette/oz/wiki/oz-install

    http://dl528888.blog.51cto.com/2382721/1862568

    Oz 创建Centos 7镜像

    Oz简介

    做openstack的centos 镜像的步骤,比较繁琐,最近在查比较好用的工具,查到官方提到的Oz,它的功能还是很强大的,它可以自动的安装操作系统,并且可以定制自己的操作系统,还可以生成操作系统的元数据,包括Centos,Ubuntu,Windows等等,它提供了三条很有用的命令,分别是oz-install,oz-customize,oz-generate-icicle,详细介绍可以查看它在github上的代码仓库:Oz

    Oz安装

    首先,导入epel源,执行如下命令:

    rpm -ivh http://mirrors.sohu.com/fedora-epel/7/x86_64/e/epel-release-7-2.noarch.rpm
    
    安装oz和它所需要的依赖,执行如下命令:
    yum install -y oz libguestfs-tools
    
    查看oz安装信息,执行如下命令:
    rpm -qa | grep oz
    rpm -ql oz-0.15.0-1.el7.noarch

    安装完成之后:

    各操作系统自动化安装模板所在目录:/usr/lib/python2.7/site-packages/oz/auto

    tdl配置模板样例的目录:/usr/share/doc/oz-0.15.0/examples

    修改镜像类型为qcow修改配置文件:/etc/oz/oz.cfg

    [paths]
    output_dir = /var/lib/libvirt/images
    data_dir = /var/lib/oz
    screenshot_dir = /var/lib/oz/screenshots
    # sshprivkey = /etc/oz/id_rsa-icicle-gen
    [libvirt]
    uri = qemu:///system
    #image_type = raw
    image_type = qcow2
    # type = kvm
    # bridge_name = virbr0
    # cpus = 1
    # memory = 1024
    [cache]
    original_media = yes
    modified_media = no
    jeos = no
    [icicle]
    safe_generation = no
    oz.cfg

    创建centos7.3 镜像

    首先创建自己的tdl文件,我创建的是centos7.3.tdl,具体的语法信息请参考oz-Template Description Language,我的tdl文件内容如下:

    <template>
      <name>qemu-centos73</name>
      <os>
        <name>CentOS-7</name>
        <version>3</version>
        <arch>x86_64</arch>
        <install type='iso'>
          <iso>file:///data/md0/iso/CentOS-7.3-x86_64-Minimal-1611.iso</iso>
        </install>
        <rootpw>123123</rootpw>
      </os>
      <disk>
        <size>20</size>
      </disk>
      <description>CentOS 7.3 x86_64</description>
      <packages>
        <package name='net-tools'/>
        <package name='cloud-utils-growpart'/>
        <package name='cloud-init-*'/>
        <package name='acpid'/>
        <package name='NetworkManager'/>
      </packages>
      <commands>
        <command name='install_qga'>
    cd /root
    tar xf qga.20171124.tar.gz
    cd qga
    bash ./install_qga_local.sh
        </command>
        
       <command name='sed_profile'>
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network
    rm -rf /etc/udev/rules.d/70-persistent-net.rules
    touch /etc/udev/rules.d/75-persistent-net-generator.rules
    chmod +x /var/lib/cloud/scripts/per-boot/resetroot
    chmod +x /var/lib/cloud/scripts/per-instance/ssh.sh
    chmod +x /usr/local/bin/nic_set_mq.sh
    echo "/usr/local/bin/nic_set_mq.sh > /tmp/nic_set_mq.log 2&gt;&amp;1" >> /etc/rc.d/rc.local
    echo "[connection]" >> /etc/NetworkManager/NetworkManager.conf
    echo "ipv4.route-metric=0" >> /etc/NetworkManager/NetworkManager.conf
    chmod +x /etc/rc.d/rc.local
        </command>
    
        <command name='console'>
    grub2-mkconfig -o /boot/grub2/grub.cfg
       </command>
    
       <command name='services'>
    systemctl enable sshd
    systemctl disable firewalld
    systemctl enable cloud-init
    systemctl enable cloud-config
    systemctl enable cloud-final
    systemctl enable cloud-init-local
    systemctl enable acpid
    systemctl enable NetworkManager
       </command>
    
       <command name='clear-logs'>
    rm -rf /root/*
    rm -rf /var/log/anaconda*
    rm -rf /var/log/message
    rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
    >/var/log/boot.log
    >/var/log/messages
    >/var/log/cloud-init-output.log
    >/var/log/yum.log
    >/var/log/lastlog
       </command>
      </commands>
    
        <files>
            <file name="/root/qga.20171124.tar.gz" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/qga.20171124.tar.gz
            </file>
            <file name="/var/lib/cloud/scripts/per-boot/resetroot" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/resetroot
            </file>
            <file name="/etc/cloud/cloud.cfg" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/cloud.cfg_centos7
            </file>
            <file name="/usr/local/bin/nic_set_mq.sh" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/nic_set_mq.sh
            </file>
            <file name="/etc/default/grub" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/grub_centos7
            </file>
            <file name="/var/lib/cloud/scripts/per-instance/ssh.sh" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/ssh-centos7.ssh
            </file>
            <file name="/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg" type="url">
                file:///data/nvme0n1/OZ-build-image/scripts/99-disable-network-config.cfg
            </file>
        </files>
    </template>
    centos7.3.tdl

    注意在os下面的name一定要写正确,不然会出错。

    其次创建centos7.3.ks文件,可以复制各操作系统自动化安装模板所在目录下相应版本的操作系统的auto文件,我的文件内容如下:

    install
    text
    keyboard us
    lang en_US.UTF-8
    skipx
    network --device eth0 --bootproto dhcp --onboot=on
    rootpw Ct@2017Yun!@$%.CN
    firewall --disabled
    authconfig --enableshadow --enablemd5
    timezone --utc Asia/Shanghai
    selinux --disabled
    zerombr
    clearpart --all --drives=vda
    bootloader --location=mbr --append="console=tty0 console=ttyS0,115200n8"
    part / --fstype xfs --size=2048 --grow --ondisk=vda
    reboot
    services --disabled="avahi-daemon,iscsi,iscsid,firstboot,kdump" --enabled="network,sshd,rsyslog,tuned"
    %post
    
    cat <<EOL >> /etc/rc.local
    if [ ! -d /root/.ssh ] ; then
        mkdir -p /root/.ssh
        chmod 0700 /root/.ssh
        restorecon /root/.ssh
    fi
    EOL
    
    
    echo "ttyS0" >> /etc/securetty
    cat <<EOF > /etc/init/ttyS0.conf
    start on stopped rc RUNLEVEL=[2345]
    stop on starting runlevel [016]
    respawn
    instance /dev/ttyS0
    exec /sbin/agetty /dev/ttyS0 115200 vt100-nav
    EOF
    %end
    %packages --nobase --excludedocs
    %end
    centos7.3.ks

    最后执行创建命令如下:

    oz-install -p -u -d3 -a centos7.3.ks centos7.3.tdl -x centos7.3-libvirt.xml

    生成的虚机xml文件

    <domain type="kvm">
      <name>centos73</name>
      <memory>1048576</memory>
      <currentMemory>1048576</currentMemory>
      <uuid>e7d815ac-ccde-4068-91fc-8925f7b03888</uuid>
      <clock offset="utc"/>
      <vcpu>1</vcpu>
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      <os>
        <type>hvm</type>
        <boot dev="hd"/>
      </os>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>destroy</on_reboot>
      <on_crash>destroy</on_crash>
      <devices>
        <graphics type="vnc" port="-1" listen="0.0.0.0"/>
        <interface type="bridge">
          <source bridge="virbr0"/>
          <mac address="52:54:00:58:ae:5b"/>
          <model type="virtio"/>
        </interface>
        <input bus="ps2" type="mouse"/>
        <serial type="pty">
          <target port="0"/>
        </serial>
        <serial type="tcp">
          <source host="127.0.0.1" mode="bind" service="53197"/>
          <protocol type="raw"/>
          <target port="1"/>
        </serial>
        <disk device="disk" type="file">
          <target bus="virtio" dev="vda"/>
          <source file="/data/nvme0n1/oz/images/centos73.dsk"/>
          <driver type="raw" name="qemu"/>
        </disk>
        <channel type="unix">
          <source path="/var/lib/libvirt/qemu/org.qemu.guest_agent.0.centos73.sock" mode="bind"/>
          <target type="virtio" name="org.qemu.guest_agent.0"/>
        </channel>
      </devices>
    </domain>
    centos7.3-libvirt.xml
  • 相关阅读:
    cors允许的方法和contype-type
    解决Ubuntu 18.04中文输入法的问题
    "Visual Studio Code is unable to watch for file changes in this large workspace"
    设置spacevim字体显示乱码问题
    python3.6 +tkinter GUI编程 实现界面化的文本处理工具
    Python3.6的组件numpy的安装
    LinQ实战学习笔记(四) LINQ to Object, 常用查询操作符
    SharpGL学习笔记(十九) 摄像机漫游
    SharpGL学习笔记(十八) 解析3ds模型并显示
    SharpGL学习笔记(十七) 立体文字和平面文字
  • 原文地址:https://www.cnblogs.com/gushiren/p/9512231.html
Copyright © 2011-2022 走看看