文字インタフェースの新しい自動化kvm仮想マシンのインストール


公式サイト
次に、コマンドライン方式で仮想ディスクを作成します.
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

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による自動インストール
  • ツールパッケージをインストール、ksをカスタマイズして取得する.cfgファイル
  • yum -y install system-config-kickstart
    system-config-kickstart
    
  • カスタム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ファイルの各セクションを検証することもできません.
  • 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などのディスク
  • として指定することはできません.