KVM 서버를 관리하는 데 도움이 되는 도구를 만들고 있습니다. kickstart 파일을 사용하여 KVM 게스트를 자동으로 설치하는 명령을 생성합니다. 다음은 Ubuntu 16.04 클라이언트 설치를 자동화하기 위해 생성되는 샘플 명령입니다.
virt-install --connect qemu:///system \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name testing124 \
--os-variant ubuntu16.04 \
--ram 1024 \
--vcpus 2 \
--location http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/ \
--disk /home/stuart/code-copy/vms/testing124/disk.raw,bus=virtio,format=raw,cache=writethrough \
--extra-args "console=ttyS0 ks=http://pastebin.com/raw/6TznVUuN"
지금까지 해왔던 것처럼 인쇄하고 수동으로 복사하여 붙여넣는 대신 exec 명령을 사용하여 도구 내에서 이 명령을 실행하고 싶습니다. 문제는명령이 완료되지 않습니다.가상 콘솔은 항상 열려 있기 때문입니다. 기본적으로 게스트는 콘솔이 연결된 상태로 재부팅됩니다. shutdown
대신 지정하면 reboot
설치가 이 단계에서 중단됩니다.
대신 halt
또는를 지정하면 게스트는 종료되지만 콘솔은 여전히 빈 화면에서 정지됩니다. Virsh도 마치 당신이 처형한 것처럼 게스트에게 표시됩니다.poweroff
shutdown
running
virsh list --all
KVM 게스트 설치를 올바르게 완료하려면 명령 또는 kickstart 파일을 어떻게 변경해야 합니까?
부록
참조 파일이 변경되거나 누락된 경우 아래의 킥스타트 파일을 복사하십시오.
# Ubuntu server 64bit example kickstart/seed with shutdown
# System language
#lang en_US
lang en_GB
# Language modules to install
#langsupport en_US
langsupport en_GB
# System keyboard
keyboard us
# System mouse
mouse
# System timezone
#timezone America/Chicago
timezone --utc America/Chicago
# Root password
rootpw --disabled
# Initial user
user ubuntu --fullname "" --password ubuntu
preseed user-setup/allow-password-weak boolean true
# pick only one of these actions to take after installation completed
#reboot
#shutdown
#halt
poweroff
# Use text mode install
text
# Install OS instead of upgrade
install
# Use http installation media
url --url http://archive.ubuntu.com/ubuntu
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr yes
# Partition clearing information
clearpart --all --initlabel
# Partition setup
part / --fstype ext4 --size 1 --grow
#part /boot --fstype ext2 --size 200 --asprimary
#part swap --size 1024
#part pv.01 --size 1 --grow
#volgroup rootvg pv.01
#logvol / --fstype ext4 --vgname=rootvg --size=1 --grow --name=rootvol
#preseed partman-lvm/confirm_nooverwrite boolean true
# If you have swap commented out/not specified then you need to have this line.
preseed --owner partman-basicfilesystems partman-basicfilesystems/no_swap boolean false
# System authorization infomation
auth --useshadow --enablemd5
# Firewall configuration
firewall --disabled
# Do not configure the X Window System
skipx
# Make sure to install the acpid package so that virsh commands such
# as virsh shutdown will take effect
%packages
@ubuntu-server
@openssh-server
@acpid
답변1
--noautoconsole
이것이 의 옵션 에 대한 완벽한 선택 임이 밝혀졌습니다 virt-install
.
설명:매뉴얼 페이지:
게스트 콘솔에 자동으로 연결을 시도하지 마십시오. 기본 동작은 VNC 클라이언트를 시작하여 그래픽 콘솔을 표시하거나 "virsh" "console" 명령을 실행하여 텍스트 콘솔을 표시하는 것입니다. 이 매개변수를 사용하면 이 동작이 비활성화됩니다.
이제 프로그램에서 실행되는 virt-install 명령은 콘솔에 연결되지 않고 게스트가 설치를 완료할 때까지 기다리지 않기 때문에 거의 즉시 실행되고 반환됩니다. 콘솔에 아무것도 연결되어 있지 않더라도 게스트는 kickstart 스크립트를 사용하여 백그라운드에서 설치를 계속합니다. 킥스타트 파일에 문제가 없으면 게스트는 전체 설치를 수행하고 완료 시 종료됩니다(킥스타트 파일에 종료가 지정된 경우). virsh list --all
게스트가 더 이상 나타나지 않을 때까지 폴링하여 게스트가 설치를 완료했는지 알 수 있습니다 running
.
업데이트된 명령은 다음과 같습니다.
virt-install --connect qemu:///system \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name testing124 \
--os-variant ubuntu16.04 \
--ram 1024 \
--vcpus 2 \
--location http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/ \
--disk /home/stuart/code-copy/vms/testing124/disk.raw,bus=virtio,format=raw,cache=writethrough \
--noautoconsole \
--extra-args "console=ttyS0 ks=http://pastebin.com/raw/6TznVUuN"
답변2
자동화된 설치에서 일반적으로 사용하는 것은 --noreboot --noautoconsole
완전히 무인 설치를 포함합니다. 즉 virt-builder
, 명령이 더 안정적이고 이미지 작업이 더 빠르고 일관되기 때문에 이를 사용하는 것이 virt-install
운영 체제를 완전히 설치하는 것보다 더 빠르고 더 나은 경우가 많습니다. 그런데 미리 만들어진 템플릿 VM 이미지를 사용하면 훨씬 더 빠릅니다.