Я пытаюсь создать гостевой экземпляр KVM под управлением Amazon Linux 2 в локальной среде на хосте CentOS 7. Я делаю это через SSH (например, моя локальная машина -> SSH для хоста CentOS).
Я знаю, что мой гипервизор работает, так как с помощью следующих команд я могу без проблем создать гостя CentOS 7 с доступом по SSH:
OS_IMG=CentOS-7-x86_64-GenericCloud.qcow2
DIR=/home/libvirt
SCRIPTS=$DIR/scripts
BOOT=$DIR/boot
IMG=$DIR/images
VM=centos-vm-test
# +++ Downloading image OS image
cd $BOOT
wget http://cloud.centos.org/centos/7/images/$OS_IMG
# +++ Creating meta/user data
cd $IMG/$VM
echo -e "instance-id: $VM\nlocal-hostname: $VM" > meta-data
cp $SCRIPTS/user-data user-data
cp $BOOT/$OS_IMG $VM.qcow2
# +++ Creating disk
export LIBGUESTFS_BACKEND=direct
qemu-img create -f qcow2 -o preallocation=metadata $VM.new.image 40G
virt-resize --quiet --expand /dev/sda1 $VM.qcow2 $VM.new.image
mv $VM.new.image $VM.qcow2
# +++ Creating CD-ROM containing cloud init data
mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data
# +++ Creating VM"
virt-install --import --name $VM \
--memory 4096 --vcpus 2 --cpu host \
--disk $VM.qcow2,format=qcow2,bus=virtio \
--disk $VM-cidata.iso,device=cdrom \
--network bridge=virbr0,model=virtio \
--os-type=linux \
--os-variant=centos7.0 \
--noautoconsole
Через несколько секунд я могу бежать virsh net-dhcp-leases
и вижу IP-адрес, к которому я могу подключиться по SSH.
Я попытался воспроизвести этот процесс с Amazon Linux 2, используя изображение, найденное здесь: https://cdn.amazonlinux.com/os-images/2.0.20200304.0/kvm/
Для user-data
, Я пробовал свой файл CentOS (довольно длинный, в том числе много runcmd
строк) и рекомендуемое базовое содержимое, которое можно найти здесь: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-2-virtual-machine.html. Я не вижу разницы при использовании двух разных файлов.
Однако это, похоже, не работает, и я застрял в том, как мне продолжить.
virsh console myvmname
, поскольку он просто застревает Escape character is ^]
(клавиша возврата ничего не делает). На гостевой системе CentOS я могу запустить virsh console myvmname
и одним нажатием клавиши возврата я подключаюсь, как и ожидалосьvirsh net-dhcp-leases default
, нет договоров аренды, поэтому у меня нет IP-адреса, на котором я могу попытаться установить SSH-соединение./var/log/libvirt/qemu
не показывать ничего плохого; Неудачные журналы AL2 выглядят идентично рабочим журналам гостей CentOS.Я также пытался скопировать процесс именно как рекомендовано по предыдущей ссылке Amazon, включая использование genisoimage
с seed.iso
файл и т. д., но это не имеет значения.
Как я могу получить доступ к этой виртуальной машине или хотя бы попытаться выяснить, что не так? Журналы загрузки были бы идеальными.
Я наткнулся на исправление здесь: https://github.com/giovtorres/kvm-install-vm/blob/master/kvm-install-vm#L630
В принципе, мне нужно было использовать qemu-img resize
скорее, чем qemu-img create
:
if [[ $al2 == "Y" ]]; then
qemu-img resize $VM.qcow2 40G &>> ${VM}.log
echo "+++ Creating CD-ROM containing cloud init data"
genisoimage -output $VM-cidata.iso \
-volid cidata \
-joliet -r user-data meta-data &>> ${VM}.log
else
export LIBGUESTFS_BACKEND=direct
qemu-img create -f qcow2 -o preallocation=metadata $VM.new.image 40G
virt-resize --quiet --expand /dev/sda1 $VM.qcow2 $VM.new.image
mv $VM.new.image $VM.qcow2
echo "+++ Creating CD-ROM containing cloud init data"
mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data
fi