天天看點

字元界面全新自動化安裝kvm虛拟機一、建立虛拟磁盤二、擷取鏡像檔案二、ks.cfg檔案模闆三、安裝kvm 虛拟機的腳本

轉載于點選這裡跳轉

一、建立虛拟磁盤

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

二、擷取鏡像檔案

mkdir -p /home/kvm/iso
wget  http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso -O /home/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso

           

二、ks.cfg檔案模闆

擷取自定義加密密碼

[[email protected] ~]# echo "123456" | openssl passwd -1 -stdin
$1$6/DHuw2K$asw93Ziu0VfVitjjmWN5s1
           
[[email protected] ~]# mkdir -p /home/kvm/ks/
[[email protected] ~]# vim /home/kvm/ks/ks.cfg
[[email protected] ~]# cat /home/kvm/ks/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
           

三、安裝kvm 虛拟機的腳本

#!/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