Добрый день.
Появилось у меня тут задача, нужно много виртуальных машин в количестве нескольких тысяч.
Всё это дело я решил реализовать в Proxmox. Установка и конфигурация много где есть и в официальной wiki всё очень добротно описано, по этому пропустим этот шаг.
Как можно создать виртуальные машины. Через кнопку web. Но каждый раз настраивать и устанавливать однотипные машине не целесообразно.
По этому готовые образы дисков и конфигурационных файлов хранятся в директориях (тут это Debian в других могут отличатся), которые можно скопировать и немного подправить и будет однотипная машина.
Конфигурационный файлы /etc/pve/nodes/v-4-kp20-d1864-85/qemu-server/
Образы /var/lib/vz/images/
Виртуальным машинам присваиваются уникальные идентификаторы и директории для образов(вида 100, 102, 103 и т.д.)
Копируем сам образ в новую папку с именем идентификатора. Немного правим конфиг, изменяем путь до образа вида (ide0: local:299/vm-299-disk-1.qcow2,size=3G) .
Тут папка с образом 299 и образ vm-299-disk-1.qcow2.
Меняем МАК адрес. Всё машина готова.
Но есть одно но, если таких машин нужно сотня или две, или даже больше. То это будет очень утомительное занятие. По этому написал не большой скрипт, который автоматически клонирует и и правит конфиги. Мак адреса он автоматом инкрементирует на еденицу(но не может делать больше 65535 машин, меняет последнии два числа).
#!/bin/bash
conf_pve_vm=/etc/pve/nodes/v-4-kp20-d1864-85/qemu-server/
image_vm=/var/lib/vz/images/
# find mac for copy VM
mac_vm=$(grep -oE "[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}" $conf_pve_vm$1.conf)
start_mac=$mac_vm
start_vm=$(($1 + 1))
while [ $start_vm -le $2 ]; do
#create dir image
mkdir $image_vm$start_vm
#copy image disk
cp $image_vm$1/vm-$1-disk-1.qcow2 $image_vm$start_vm/vm-$start_vm-disk-1.qcow2
sleep 4
#copy conf
cp $conf_pve_vm$1.conf $conf_pve_vm$start_vm.conf
sleep 2
#reconf conf file
# rename path image (весь sed в одну строку)
sed "s/local:$1\/vm-$1-disk-1.qcow2/local:$start_vm\/vm-$start_vm-disk-1.qcow2/g" \ $conf_pve_vm$start_vm.conf > $conf_pve_vm$start_vm.conf_temp && mv \ $conf_pve_vm$start_vm.conf_temp $conf_pve_vm$start_vm.conf
sleep 2
#reconf mac adress
mac_number1=$(echo $mac_vm | cut -f1 -d:)
mac_number2=$(echo $mac_vm | cut -f2 -d:)
mac_number3=$(echo $mac_vm | cut -f3 -d:)
mac_number4=$(echo $mac_vm | cut -f4 -d:)
mac_number5=$(echo $mac_vm | cut -f5 -d:)
mac_number6=$(echo $mac_vm | cut -f6 -d:)
new_mac6=$(($(printf "%d\n" 0x$mac_number6) + 1)) # converting numbers 16 > 10
new_mac5=$mac_number5
max_mac=255
echo $new_mac6
if [ "$new_mac6" -gt "$max_mac" ]
then
new_mac5=$(($(printf "%d\n" 0x$mac_number5) + 1))
plus_one_mac=0
new_mac6="00"
fi
new_mac6=$(printf "%x\n" $new_mac6)
b=2
nub_char_mac=${#new_mac6}
if [ "$nub_char_mac" -ne "$b" ] ; then
new_mac6="0$new_mac6"
fi
temp_mac="$mac_number1:$mac_number2:$mac_number3:$mac_number4:$new_mac5:$new_mac6"
sed "s/$start_mac/$temp_mac/g" $conf_pve_vm$start_vm.conf > \ $conf_pve_vm$start_vm.conf_tmp && mv $conf_pve_vm$start_vm.conf_tmp \ $conf_pve_vm$start_vm.conf
sleep 2
mac_vm=$temp_mac
start_vm=$(($start_vm + 1))
done
Запуск скрипта script.sh 102 450 . 102 это идентификатор той машины которую копируем и 450 это конечная машина.
Этим скриптом создано было более 1000 машин.
Появилось у меня тут задача, нужно много виртуальных машин в количестве нескольких тысяч.
Всё это дело я решил реализовать в Proxmox. Установка и конфигурация много где есть и в официальной wiki всё очень добротно описано, по этому пропустим этот шаг.
Как можно создать виртуальные машины. Через кнопку web. Но каждый раз настраивать и устанавливать однотипные машине не целесообразно.
По этому готовые образы дисков и конфигурационных файлов хранятся в директориях (тут это Debian в других могут отличатся), которые можно скопировать и немного подправить и будет однотипная машина.
Конфигурационный файлы /etc/pve/nodes/v-4-kp20-d1864-85/qemu-server/
Образы /var/lib/vz/images/
Виртуальным машинам присваиваются уникальные идентификаторы и директории для образов(вида 100, 102, 103 и т.д.)
Копируем сам образ в новую папку с именем идентификатора. Немного правим конфиг, изменяем путь до образа вида (ide0: local:299/vm-299-disk-1.qcow2,size=3G) .
Тут папка с образом 299 и образ vm-299-disk-1.qcow2.
Меняем МАК адрес. Всё машина готова.
Но есть одно но, если таких машин нужно сотня или две, или даже больше. То это будет очень утомительное занятие. По этому написал не большой скрипт, который автоматически клонирует и и правит конфиги. Мак адреса он автоматом инкрементирует на еденицу(но не может делать больше 65535 машин, меняет последнии два числа).
#!/bin/bash
conf_pve_vm=/etc/pve/nodes/v-4-kp20-d1864-85/qemu-server/
image_vm=/var/lib/vz/images/
# find mac for copy VM
mac_vm=$(grep -oE "[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}" $conf_pve_vm$1.conf)
start_mac=$mac_vm
start_vm=$(($1 + 1))
while [ $start_vm -le $2 ]; do
#create dir image
mkdir $image_vm$start_vm
#copy image disk
cp $image_vm$1/vm-$1-disk-1.qcow2 $image_vm$start_vm/vm-$start_vm-disk-1.qcow2
sleep 4
#copy conf
cp $conf_pve_vm$1.conf $conf_pve_vm$start_vm.conf
sleep 2
#reconf conf file
# rename path image (весь sed в одну строку)
sed "s/local:$1\/vm-$1-disk-1.qcow2/local:$start_vm\/vm-$start_vm-disk-1.qcow2/g" \ $conf_pve_vm$start_vm.conf > $conf_pve_vm$start_vm.conf_temp && mv \ $conf_pve_vm$start_vm.conf_temp $conf_pve_vm$start_vm.conf
sleep 2
#reconf mac adress
mac_number1=$(echo $mac_vm | cut -f1 -d:)
mac_number2=$(echo $mac_vm | cut -f2 -d:)
mac_number3=$(echo $mac_vm | cut -f3 -d:)
mac_number4=$(echo $mac_vm | cut -f4 -d:)
mac_number5=$(echo $mac_vm | cut -f5 -d:)
mac_number6=$(echo $mac_vm | cut -f6 -d:)
new_mac6=$(($(printf "%d\n" 0x$mac_number6) + 1)) # converting numbers 16 > 10
new_mac5=$mac_number5
max_mac=255
echo $new_mac6
if [ "$new_mac6" -gt "$max_mac" ]
then
new_mac5=$(($(printf "%d\n" 0x$mac_number5) + 1))
plus_one_mac=0
new_mac6="00"
fi
new_mac6=$(printf "%x\n" $new_mac6)
b=2
nub_char_mac=${#new_mac6}
if [ "$nub_char_mac" -ne "$b" ] ; then
new_mac6="0$new_mac6"
fi
temp_mac="$mac_number1:$mac_number2:$mac_number3:$mac_number4:$new_mac5:$new_mac6"
sed "s/$start_mac/$temp_mac/g" $conf_pve_vm$start_vm.conf > \ $conf_pve_vm$start_vm.conf_tmp && mv $conf_pve_vm$start_vm.conf_tmp \ $conf_pve_vm$start_vm.conf
sleep 2
mac_vm=$temp_mac
start_vm=$(($start_vm + 1))
done
Запуск скрипта script.sh 102 450 . 102 это идентификатор той машины которую копируем и 450 это конечная машина.
Этим скриптом создано было более 1000 машин.
ОтветитьУдалить# ./cloner_virt 101 105
sed: can't read /etc/pve/nodes/vx/qemu-server/102.conf: No such file or directory
95
./cloner_virt: line 54: /etc/pve/nodes/vx/qemu-server/102.conf_tmp: No such file or directory
sed: can't read /etc/pve/nodes/vx/qemu-server/103.conf: No such file or directory
96
./cloner_virt: line 54: /etc/pve/nodes/vx/qemu-server/103.conf_tmp: No such file or directory
sed: can't read /etc/pve/nodes/vx/qemu-server/104.conf: No such file or directory
97
./cloner_virt: line 54: /etc/pve/nodes/vx/qemu-server/104.conf_tmp: No such file or directory
sed: can't read /etc/pve/nodes/vx/qemu-server/105.conf: No such file or directory
98
./cloner_virt: line 54: /etc/pve/nodes/vx/qemu-server/105.conf_tmp: No such file or directory
как то так
Это скорей всего из за путей, они мог отличатся от версий. Или разных систем в корой работает proxmox.
Удалить