美文网首页
virt-install

virt-install

作者: 运维开发_西瓜甜 | 来源:发表于2019-12-04 11:16 被阅读0次

    本文链接 https://www.jianshu.com/p/f586f4ce0722

    官方网站

    下面是命令行方式创建虚拟磁盘的

    qemu-img create -f qcow2 /home/kvm/data/kube-master.qcow2 50G
    
    

    一、 安装kvm 虚拟机的脚本

    install-virtualhost.sh

    #!/usr/bin/env bash
    set -ue
    set -o pipefail
    
    # 创建相关目录
    ls /home/kvm/{ks,virtualhost,virtual-img} 1>/dev/null 2>&1 || mkdir -p /home/kvm/{ks,virtualhost,virtual-img}
    
    
    # 此程序的变量
    KVM_HOME=/home/kvm
    KVM_ISO=${KVM_HOME}/iso/CentOS-7-x86_64-Minimal.iso
    KVM_KS_FILE=${KVM_HOME}/ks/ks.cfg
    KVM_IMG_DIR=${KVM_HOME}/virtual-img
    KVM_HOST_DIR=${KVM_HOME}/virtualhost
    
    OS_TYPE="linux"
    DEF_OS_VARIANT="rhel7"
    DEF_VM_NAME="centos$(date +%Y%m%dT%H%M%S)"
    
    # 设置默认内存大小 1024 M,这个单位是固定的 M,不支持其他单位
    DEF_MEM_SIZE=1024
    DEF_VCPUS=1
    DEF_DISK_SIZE=10G
    
    #  交互式安装
    echo  "输入将要创建的KVM虚拟机名称,不是主机名哦"
    read -p "默认值${DEF_VM_NAME}>>:" VM_NAME
    
    
    echo  "输入将要创建的服务器主机名"
    read -p "默认 localhost>>:"  HOST_NAME
    
    read -p "输入虚拟机 CPU 核心数默认 1 示例:2>>:" VCPUS
    
    echo "输入虚拟机内存大小,默认1024M,不支持其他单位"
    read -p "只需要添数字即可>>:" MEM_SIZE
    
    echo "输入虚拟机使用的磁盘容量"
    read -p "默认 10G,[示例写法:15G]>>:"  DISK_SIZE
    
    
    # 变量替换, 假如没有输入值, 就使用默认值
    VM_NAME=${VM_NAME:-$DEF_VM_NAME}
    HOST_NAME=${HOST_NAME:-localhost.localdomain}
    
    VCPUS=${VCPUS:-$DEF_VCPUS}
    MEM_SIZE=${MEM_SIZE:-$DEF_MEM_SIZE}
    DISK_SIZE=${DISK_SIZE:-$DEF_DISK_SIZE}
    OS_VARIANT=${OS_VARIANT:-$DEF_OS_VARIANT}
    
    new_disk=${KVM_IMG_DIR}/${VM_NAME}.qcow2
    
    
    if [[ ! "${DISK_SIZE}" =~ G$ ]] || [[ ! "${DISK_SIZE::-1}" =~ ^[0-9]+$ ]]
    then
        echo "格式不正确,正确示例:20G"
        exit
    fi
    
    
    if [ ! -f "${new_disk}" ];then
        qemu-img create -f qcow2 ${new_disk} ${DISK_SIZE}
    fi
    
    
    # 开始创建
    
    virt-install -v \
         --arch x86_64 --virt-type kvm \
         --name ${VM_NAME} \
         --memory ${MEM_SIZE} \
         --vcpus ${VCPUS} \
         --os-type ${OS_TYPE} \
         --location ${KVM_ISO} \
         --network default \
         --graphics none \
         --os-variant     ${OS_VARIANT} \
         --initrd-inject  "${KVM_KS_FILE}" \
         --extra-args     "ks=file:/ks.cfg  \
                           console=tty0 console=ttyS0,115200n8 \
                           hostname=${HOST_NAME}" \
         --disk ${new_disk},cache=writeback,io=threads,bus=virtio
    
    # 桥接模式,前提是你已经建立好了网桥
    #     --network bridge=br0  \
    
    
    # end
    

    参数说明:

    • --arch 指定平台架构

    • --virt-type 虚拟化类型 kvm 是最佳选择

    • --name 虚拟机名称

    • --memory 内存大小

    • --vcpus cpu 核心数

    • --os-type 操作系统类型

    • --os-variant 发行版本,必须是 virt-install 规定好的

    • --network 网络类型 default 是 NAT 类型的网络

    • --graphics 是否使用 vnc 这个的 none 意思是不使用

    • --location ISO 镜像文件路径

    • --initrd-inject 内核注入,指定一个 ks.cfg 文件的路径,会把此文件主人到跟目录下

    • --extra-args 额外的参数

      • ks=file:/ks.cfg 这个值不要变
      • console=ttyS0 表示使用 console 口控制服务器
    • --disk 指定虚拟硬盘文件路径

    二、使用KICKSTART自动化安装

    1. 安装工具包,定制并获取到 ks.cfg 文件
    yum -y install system-config-kickstart
    system-config-kickstart
    
    1. 验证自定义的 Kickstart 文件

    在创建或自定义Kickstart文件时,在尝试在安装中使用它之前验证它是否有效很有用。红帽企业Linux 7包含ksvalidator命令行实用程序,可用于执行此操作。该工具是pykickstart软件包的一部分。要安装此软件包,请用 root 执行以下命令:

     yum install pykickstart
    

    安装软件包后,可以使用以下命令验证Kickstart文件:

    ksvalidator /path/to/kickstart.ks
    

    /path/to/kickstart.ks 替换为要验证的Kickstart文件的路径。

    重要

    请记住,验证工具有其局限性。Kickstart文件可能非常复杂。ksvalidator可以确保语法正确并且文件不包含不建议使用的选项,但是不能保证安装成功。它也不会尝试验证的%pre,%post并且%packagesKickstart文件的各个部分。

    1. ks.cfg 示例
    #platform=x86, AMD64, 或 Intel EM64T
    #version=DEVEL
    # Install OS instead of upgrade
    install
    # Keyboard layouts
    keyboard 'us'
    # Root password
    rootpw --iscrypted $1$KXeyOPUO$5JlUe3pPpi.hplHB71JdX/
    # 系统语言
    #lang zh_CN.UTF-8
    lang en_US
    
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use CDROM installation media
    #cdrom
    
    # Use text mode install
    # 使用字符界面安装操作系统
    text
    
    # Do not configure the X Window System
    # 不配置图形界面系统
    skipx
    
    # SELinux configuration
    selinux --disabled
    
    # Firewall configuration
    firewall --disabled
    
    # 设置动态获取 IP
    network  --bootproto=dhcp --device=eth0 --onboot=on
    network  --hostname=HOSNAME
    
    # 设置静态 IP
    # network  --bootproto=static --device=eth0 --gateway=192.168.122.1 --ip=192.168.122.100 --nameserver=192.168.122.1 --netmask=255.255.255.0 --activate
    
    # 系统安装完成后 重启系统
    #halt
    reboot
    
    # System timezone 系统时区
    timezone Asia/Shanghai
    
    # System services  系统启动时候自动启动的服务
    services --enable="chronyd"
    
    # System bootloader configuration
    #系统启动引导方式 vda 是kvm 虚拟机时候的第块磁盘名称
    bootloader --location=mbr --boot-drive=vda
    
    # 清除主引导记录
    zerombr
    
    # 删除原来的分区和磁盘标签
    clearpart --all --initlabel
    
    # 磁盘分区信息,这里采用的是 lvm 自动分区
    autopart --type=lvm
    
    # 下面是自定义分区
    #part /boot --fstype="xfs" --ondisk=vda --size=200
    #part / --fstype="xfs" --ondisk=vda --size=10040
    #part /var --fstype="xfs" --ondisk=vda --size=2048
    #part /home --fstype="xfs" --ondisk=vda --size=2048
    
    # 安装软件
    %packages
    @^minimal
    @core
    chrony
    %end
    
    # 禁用 kdump
    %addon com_redhat_kdump --disable --reserve-mb='auto'
    
    %end
    
    # 安装系统完成后执行的命令脚本
    %post --interpreter=/bin/bash
    yum install -y epel-release bash-completion vim-enhanced wget
    yum group install "Development Tools" -y
    %end
    
    # 用户密码策略
    %anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %end
    
    

    注意:

    • 由于安装源直接在virt-install 命令中指定,因此ks文件中没有安装源配置项
    • 由于安装的是虚拟机,而kvm中中qemu-img创建的磁盘,在kvm中默认识别为vda、vdb...之类的磁盘,因此ks文件中,不能再像安装物理机一样指定为sda、sdb之类的磁盘

    相关文章

      网友评论

          本文标题:virt-install

          本文链接:https://www.haomeiwen.com/subject/ayjhgctx.html