字符界面全新自动化安装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文件模板

获取自定义加密密码

[root@prod ~]# echo "123456" | openssl passwd -1 -stdin
$1$6/DHuw2K$asw93Ziu0VfVitjjmWN5s1
[root@prod ~]# mkdir -p /home/kvm/ks/
[root@prod ~]# vim /home/kvm/ks/ks.cfg
[root@prod ~]# 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值