APVE: различия между версиями
Vovan (обсуждение | вклад) (→Выполнить скрипт уже из pve, подключившись в рута по ssh) |
Vovan (обсуждение | вклад) (→Автонастройка компьютеров с PVE при работе сети по DHCP) |
||
| (не показаны 72 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| + | =Важные моменты при создании кластера PVE= | ||
| + | |||
| + | ==На всех узлах должны быть сформированы правильным образом файлы /etc/hosts== | ||
| + | |||
| + | Пример одного из серверов нашего кластера: | ||
| + | |||
| + | <pre> | ||
| + | 127.0.0.1 localhost | ||
| + | 192.168.10.126 alt-edu-hpg8.nntc.nnov.ru alt-edu-hpg8 | ||
| + | 192.168.10.125 alt-edu-hpg5 | ||
| + | 192.168.10.124 alt-edu-apve4 | ||
| + | 192.168.10.121 alt-edu-apve1 | ||
| + | 192.168.10.122 alt-edu-apve2 | ||
| + | 192.168.10.123 alt-edu-apve3 | ||
| + | </pre> | ||
| + | |||
| + | Соответственно, если нужно будет добавить в кластер ещё один узел, то нужно НА КАЖДОЙ из нод кластера добавить в /etc/hosts сопоставление имени и его ip адреса. | ||
| + | |||
| + | Если этого не сделать, то будут ошибки добавления в кластер нового узла и после этого повиснет веб интерфейс на любой ноде кластера. | ||
| + | |||
| + | ==Как исправить такую ситуацию (если повис веб интерфейс)?== | ||
| + | |||
| + | Отделить неуспешную ноду от кластера по инструкции: https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node (раздел Separate a Node Without Reinstalling) | ||
| + | |||
| + | На кластере в терминале выполнить отсоединение неуспешной ноды командой | ||
| + | |||
| + | pvecm delnode 5 | ||
| + | |||
| + | , где 5 - идентификатор ноды из corosync | ||
| + | |||
| + | Иногда по идентификатору не получается. Тогда можно попробовать по имени ноды или по ip адресу | ||
| + | |||
| + | Иногда кажется что кластер развалился. В этом случае нужно перезапустить сервис на каждой из нод и немного подождать. | ||
| + | |||
| + | Перезапустить corosync -- команда: | ||
| + | |||
| + | systemctl restart corosync | ||
| + | |||
| + | Подождать и потом проверить статус кластера командой: | ||
| + | |||
| + | pvecm status | ||
| + | |||
| + | Также можно посмотреть состав нод кластера -- командой: | ||
| + | |||
| + | pvecm nodes | ||
| + | |||
| + | Также иногда может потребоваться перезапустить сервисы на каждой ноде: | ||
| + | |||
| + | systemctl restart pveproxy | ||
| + | |||
| + | systemctl restart pve-cluster | ||
| + | |||
| + | |||
| + | |||
=Настройка после клонирования образа на базе AltEduPve= | =Настройка после клонирования образа на базе AltEduPve= | ||
| Строка 164: | Строка 218: | ||
Запуск веб версии VNC клиента - смотреть здесь: https://wiki.nntc.nnov.ru/index.php?title=Vnc#.D0.97.D0.B0.D0.BF.D1.83.D1.81.D1.82.D0.B8.D1.82.D1.8C_.D0.BA.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80_.D1.81_NoVNC_.D0.B4.D0.BB.D1.8F_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BB.D1.8F.D1.86.D0.B8.D0.B8_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B5.D0.B3.D0.BE_.D1.81.D1.82.D0.BE.D0.BB.D0.B0_.D0.B2_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80 | Запуск веб версии VNC клиента - смотреть здесь: https://wiki.nntc.nnov.ru/index.php?title=Vnc#.D0.97.D0.B0.D0.BF.D1.83.D1.81.D1.82.D0.B8.D1.82.D1.8C_.D0.BA.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80_.D1.81_NoVNC_.D0.B4.D0.BB.D1.8F_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BB.D1.8F.D1.86.D0.B8.D0.B8_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B5.D0.B3.D0.BE_.D1.81.D1.82.D0.BE.D0.BB.D0.B0_.D0.B2_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80 | ||
| + | |||
| + | =Лайфхаки= | ||
| + | |||
| + | ==Поставить и включить на сизифе== | ||
| + | |||
| + | su - | ||
| + | apt-get install -y pve-manager cifs-utils sendmail | ||
| + | systemctl enable corosync pve-cluster pvescheduler pve-guests lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy | ||
| + | systemctl start corosync pve-cluster pvescheduler lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy | ||
| + | |||
| + | ==Автонастройка компьютеров с PVE при работе сети по DHCP== | ||
| + | |||
| + | <pre> | ||
| + | cat << 'EOF1' > /opt/after-boot.sh | ||
| + | #!/bin/bash | ||
| + | |||
| + | |||
| + | mac=$(ip a | grep eno -A 1 | grep ether | awk {'print $2'}) | ||
| + | |||
| + | cat << EOF > /etc/net/ifaces/vmbr0/iplink | ||
| + | address ${mac} | ||
| + | EOF | ||
| + | |||
| + | systemctl restart network | ||
| + | sleep 2 | ||
| + | killall dhcpcd | ||
| + | sleep 8 | ||
| + | dhcpcd vmbr0 | ||
| + | |||
| + | ip=$(ip a | grep vmbr0 | grep inet | awk {'print $2'} | awk -F '/' {'print $1'}) | ||
| + | name="prdb-$(echo $ip | awk -F '.' {'print $3'})-$(echo $ip | awk -F '.' {'print $4'})" | ||
| + | |||
| + | echo ${name} > /etc/hostname | ||
| + | |||
| + | cat << EOF > /etc/hosts | ||
| + | ${ip} ${name} | ||
| + | 127.0.0.1 localhost.localdomain localhost | ||
| + | EOF | ||
| + | |||
| + | echo "" >> /etc/issue | ||
| + | echo "---------------------------------------------------" > /etc/issue | ||
| + | echo "| SERVER WEB CONSOLE: https://${ip}:8006 |" >> /etc/issue | ||
| + | echo "---------------------------------------------------" >> /etc/issue | ||
| + | echo "" >> /etc/issue | ||
| + | echo "" >> /etc/issue | ||
| + | |||
| + | EOF1 | ||
| + | |||
| + | cat << 'EOF' > /etc/rc.d/rc.local | ||
| + | #!/bin/bash | ||
| + | /opt/after-boot.sh | ||
| + | sleep 3 | ||
| + | ip ro add 192.168.200.0/24 via 10.207.151.253 | ||
| + | exit 0 | ||
| + | EOF | ||
| + | |||
| + | chmod +x /etc/rc.d/rc.local | ||
| + | chmod +x /opt/after-boot.sh | ||
| + | </pre> | ||
| + | |||
| + | ==Перенос виртмашин после переименования узла== | ||
| + | |||
| + | <pre> | ||
| + | systemctl stop pve-cluster | ||
| + | systemctl stop corosync | ||
| + | pmxcfs -l | ||
| + | /bin/rm /etc/pve/corosync.conf | ||
| + | /bin/rm -r /etc/corosync/* | ||
| + | </pre> | ||
| + | |||
| + | export SRC_DIR='prdb-145-37' | ||
| + | |||
| + | <pre> | ||
| + | cd /etc/pve/nodes/ | ||
| + | deldirs=$(ls | grep -v $(hostname)) | ||
| + | confs=$(ls $SRC_DIR/qemu-server/*.conf) | ||
| + | |||
| + | for i in $(echo ${confs}); do | ||
| + | destfile=$(echo $i | awk -F '/' {'print $3'}) | ||
| + | cat $i > $(hostname)/qemu-server/$destfile | ||
| + | done | ||
| + | |||
| + | for d in $(echo ${deldirs}); do | ||
| + | rm -rf $d | ||
| + | done | ||
| + | </pre> | ||
| + | |||
| + | ==Настройка PVE из Pmagic== | ||
| + | |||
| + | Просто бросьте это в консоль (если нужно, предварительно измените в текстовом редакторе и бросьте потом) | ||
| + | |||
| + | <pre> | ||
| + | cat << 'EOF1' > q.sh | ||
| + | #!/bin/bash | ||
| + | ############################### | ||
| + | classname="mobd" | ||
| + | pcnumber=10 | ||
| + | |||
| + | ############################### | ||
| + | partprobe /dev/nvme0n1 | ||
| + | |||
| + | gdisk /dev/nvme0n1 << EOF | ||
| + | x | ||
| + | e | ||
| + | w | ||
| + | Y | ||
| + | EOF | ||
| + | |||
| + | mkdir /mnt/q | ||
| + | mount /dev/nvme0n1p2 /mnt/q | ||
| + | |||
| + | mac=`ip a | grep eth0 -A 1 | head -2 | awk {'print $2'} | tail -1` | ||
| + | ipmask=`ip a | grep "inet 10.207" | awk {'print $2'}` | ||
| + | ip=`echo $ipmask | awk -F '/' {'print $1'}` | ||
| + | mask=`echo $ipmask | awk -F '/' {'print $2'}` | ||
| + | ip3=`echo $ip | awk -F '.' {'print $3'}` | ||
| + | ip4=`echo $ip | awk -F '.' {'print $4'}` | ||
| + | |||
| + | echo "address $mac" > /mnt/q/etc/net/ifaces/vmbr0/iplink | ||
| + | echo "${classname}-${ip3}-${ip4}.nntc.nnov.ru" > /mnt/q/etc/hostname | ||
| + | echo "127.0.0.1 localhost" > /mnt/q/etc/hosts | ||
| + | echo "${ip} ${classname}-${ip3}-${ip4}.nntc.nnov.ru ${classname}-${ip3}-${ip4}" >> /mnt/q/etc/hosts | ||
| + | |||
| + | cat << EOF > /mnt/q/usr/share/applications/demoexam-seat.desktop | ||
| + | [Desktop Entry] | ||
| + | Version=1.0 | ||
| + | Type=Application | ||
| + | Name=Demo Exam Seat | ||
| + | GenericName=Demo Exam Seat | ||
| + | Comment= | ||
| + | Exec=/opt/run-demoexam-seat.sh ${pcnumber} | ||
| + | Terminal=false | ||
| + | MimeType=text/plain; | ||
| + | Icon= | ||
| + | Categories=Development; | ||
| + | StartupNotify=true | ||
| + | EOF | ||
| + | |||
| + | cat << EOF > /mnt/q/usr/share/applications/demoexam-seat-spice.desktop | ||
| + | [Desktop Entry] | ||
| + | Version=1.0 | ||
| + | Type=Application | ||
| + | Name=Demo Exam Seat (SPICE) | ||
| + | GenericName=Demo Exam Seat (SPICE) | ||
| + | Exec=/opt/run-demoexam-seat-spice.sh ${pcnumber} | ||
| + | Terminal=false | ||
| + | MimeType=text/plain; | ||
| + | Icon= | ||
| + | Categories=Development; | ||
| + | StartupNotify=true | ||
| + | EOF | ||
| + | |||
| + | umount /mnt/q | ||
| + | |||
| + | EOF1 | ||
| + | |||
| + | chmod +x q.sh | ||
| + | ./q.sh | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | ==Если после клонирования PVE через архивирование файловой системы PVE не стартует== | ||
| + | |||
| + | systemctl stop pve-cluster | ||
| + | systemctl stop corosync | ||
| + | /bin/rm -rf /etc/pve | ||
| + | reboot | ||
| + | |||
| + | Источник: https://forum.proxmox.com/threads/installation-to-start-pve-cluster.85490/ | ||
| + | |||
| + | ==Если виртуальная машина не хочет бэкапиться== | ||
| + | |||
| + | Ошибка вроде этой: | ||
| + | |||
| + | Backup of VM 40100 failed - unable to connect to qmeventd socket (vmid: 40100) - No such file or directory | ||
| + | |||
| + | Тогда: | ||
| + | |||
| + | systemctl start qmeventd.service | ||
| + | |||
| + | Источник: https://forum.proxmox.com/threads/backup-of-vm-failed-unable-to-connect-to-qmeventd-socket.117940/ | ||
| + | |||
| + | ==Если не работает автостарт виртуальных машин после загрузки PVE== | ||
| + | |||
| + | systemctl enable pve-guests | ||
| + | |||
| + | ==Если proxnox не хочет запускать бэкапы по расписанию== | ||
| + | |||
| + | Включить сервис: | ||
| + | |||
| + | systemctl enable --now pvescheduler | ||
| + | |||
| + | Источник: https://forum.proxmox.com/threads/backups-not-running-after-upgrade-to-7-4.124784/ | ||
| + | |||
| + | ==Сброс ноды после вывода из кластера== | ||
| + | |||
| + | Выполнить последовательность команд: | ||
| + | |||
| + | <pre> | ||
| + | systemctl stop pve-cluster | ||
| + | systemctl stop corosync | ||
| + | pmxcfs -l | ||
| + | /bin/rm /etc/pve/corosync.conf | ||
| + | /bin/rm -r /etc/corosync/* | ||
| + | killall pmxcfs | ||
| + | systemctl start pve-cluster | ||
| + | </pre> | ||
| + | |||
| + | При необходимости, можно очистить ноду от остатков конфигураций других кластерных нод. | ||
| + | Для этого нужно перейти в каталог: | ||
| + | |||
| + | cd /etc/pve/nodes | ||
| + | |||
| + | и удалить оттуда все каталоги, кроме каталога конфигурации самой ноды | ||
| + | |||
| + | /bin/rm -r node-89-11 node-89-13 node-89-2 node-89-4 node-89-6 node-89-8 | ||
| + | |||
| + | затем перезагрузка | ||
| + | |||
| + | reboot | ||
| + | |||
| + | После этих процедур нода готова становиться кластером или быть введённой в уже существующий кластер | ||
| + | |||
| + | ==Если нода удалена из кластера, но осталась в дереве узлов веб интерфейса== | ||
| + | |||
| + | Нужно последовательно на каждом узле запустить эти команды. Пример показывает запуск команды на cluster-node8, через ssh | ||
| + | |||
| + | ssh cluster-node8 systemctl restart corosync && systemctl restart pve-cluster | ||
| + | |||
| + | Если узлов, допустим, 8, то нужно выполнить последовательно команду, подключаясь поочерёдно к каждому из узлов | ||
| + | |||
| + | Например, так: | ||
| + | |||
| + | for i in 2 3 6 7 8; do ssh cluster-node${i} systemctl restart corosync && systemctl restart pve-cluster; done | ||
| + | |||
| + | ==Синхронизировать время и перегенерировать сертификаты на всех нодах== | ||
| + | |||
| + | Последовательно зайти на каждый узел и просто бросить это в консоль и нажать Enter | ||
| + | |||
| + | <pre> | ||
| + | cat << EOF > /tmp/fix.sh | ||
| + | ntpdate pool.ntp.org | ||
| + | rm /etc/pve/pve-root-ca.pem | ||
| + | rm /etc/pve/priv/pve-root-ca.key | ||
| + | rm /etc/pve/nodes/cluster-node1/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node2/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node3/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node4/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node6/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node7/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/nodes/cluster-node8/pve-ssl.{pem,key} | ||
| + | rm /etc/pve/authkey.pub | ||
| + | rm /etc/pve/priv/authkey.key | ||
| + | rm /etc/pve/priv/authorized_keys | ||
| + | pvecm updatecerts -f | ||
| + | systemctl restart pvedaemon | ||
| + | systemctl restart pveproxy | ||
| + | systemctl restart corosync | ||
| + | mv /root/.ssh/known_hosts /root/.ssh/known_hosts_old | ||
| + | EOF | ||
| + | bash /tmp/fix.sh | ||
| + | </pre> | ||
| + | |||
| + | ==Решение проблем с MAC-адресами в копиях виртуальных esxi== | ||
| + | |||
| + | 1. Войти по ssh на esxi машину | ||
| + | |||
| + | ssh root@172.16.X.Y | ||
| + | |||
| + | При удачном логине будет примерно такое приглашение командной строки | ||
| + | |||
| + | [root@localhost:~] | ||
| + | |||
| + | 2. Кинуть туда этот текст и нажать enter | ||
| + | |||
| + | <pre> | ||
| + | cat << 'EOF' > fix.sh | ||
| + | #!/bin/sh | ||
| + | newmac=$(esxcfg-nics -l | grep vmnic0 | awk {'print $7'}) | ||
| + | oldmac=$(cat /etc/vmware/esx.conf | grep 'vmkernelnic' | grep -o '..:..:..:..:..:..') | ||
| + | sed -i "s/$oldmac/$newmac/g" /etc/vmware/esx.conf; | ||
| + | echo "test new mac $newmac" | ||
| + | cat /etc/vmware/esx.conf | grep $newmac | ||
| + | echo "please type command: reboot" | ||
| + | EOF | ||
| + | chmod +x fix.sh | ||
| + | ./fix.sh | ||
| + | </pre> | ||
| + | |||
| + | 3. Перезагрузить систему | ||
| + | |||
| + | reboot | ||
| + | |||
| + | ==Переименовать и/или перенастроить сеть на ALT-PVE== | ||
| + | |||
| + | Допустим, есть задача установить следующие параметры (не важно на как предварительно настроенной ALT-PVE) | ||
| + | |||
| + | Хотим такой ip адрес: 192.168.0.77 | ||
| + | Хотим такую маску: 255.255.255.0 (aka 24) | ||
| + | Хотим такое имя хоста: alt-pve | ||
| + | |||
| + | Тогда нужно подготовить такой текст и бросить его в рутовую консоль: | ||
| + | |||
| + | <pre> | ||
| + | IP=192.168.0.77 | ||
| + | MASK=24 | ||
| + | GW=192.168.0.1 | ||
| + | HOST=alt-pve | ||
| + | echo "127.0.0.1 localhost" > /etc/hosts | ||
| + | echo "$IP $HOST.local $HOST" >> /etc/hosts | ||
| + | echo "$HOST" > /etc/hostname | ||
| + | rm -rf /etc/net/ifaces/* | ||
| + | mkdir /etc/net/ifaces/vmbr0 | ||
| + | cat << EOF > /etc/net/ifaces/vmbr0/options | ||
| + | TYPE=bri | ||
| + | VLAN_AWARE=yes | ||
| + | VIDS=2-2048 | ||
| + | ONBOOT=yes | ||
| + | DISABLED=no | ||
| + | NM_CONTROLLED=no | ||
| + | CONFIG_WIRELESS=no | ||
| + | CONFIG_IPV4=yes | ||
| + | CONFIG_IPV6=no | ||
| + | BOOTPROTO=static | ||
| + | HOST="eth0" | ||
| + | EOF | ||
| + | echo "$IP/$MASK" > /etc/net/ifaces/vmbr0/ipv4address | ||
| + | echo "default via $GW" > /etc/net/ifaces/vmbr0/ipv4route | ||
| + | echo "nameserver $GW" > /etc/net/ifaces/vmbr0/resolve.conf | ||
| + | cat << EOF > /etc/sysconfig/network | ||
| + | # When set to no, this may cause most daemons' initscripts skip starting. | ||
| + | NETWORKING=yes | ||
| + | # Used by hotplug/pcmcia/ifplugd scripts to detect current network config | ||
| + | # subsystem. | ||
| + | CONFMETHOD=etcnet | ||
| + | # Used by rc.sysinit to setup system hostname at boot. | ||
| + | HOSTNAME=$HOST | ||
| + | # This is used by ALTLinux ppp-common to decide if we want to install | ||
| + | # nameserver lines into /etc/resolv.conf or not. | ||
| + | RESOLV_MODS=yes | ||
| + | EOF | ||
| + | reboot | ||
| + | </pre> | ||
| + | |||
| + | Затем нажать Enter для перезагрузки машины | ||
| + | |||
| + | |||
| + | ==Как сделать много связанных копий== | ||
| + | |||
| + | for i in `seq 1 22`; do qm clone 400 $((400+$i)) --name new-machine-name-$i --full false;done | ||
| + | |||
| + | ==Как переименовать машины== | ||
| + | |||
| + | Даём новые имена машинам с 601 по 612 | ||
| + | |||
| + | префикс хотим такой | ||
| + | |||
| + | ssa-lin-de- | ||
| + | |||
| + | Команда: | ||
| + | |||
| + | for i in `seq 1 12`; do qm set $((600+$i)) --name ssa-lin-de-$i;done | ||
| Строка 169: | Строка 585: | ||
[[Категория:Альт]] | [[Категория:Альт]] | ||
[[Категория:PVE]] | [[Категория:PVE]] | ||
| + | |||
| + | ==Сетевой мост vmbr0 в PVE в режиме dhcp== | ||
| + | |||
| + | в файле /etc/net/ifaces/vmbr0/options выставить параметр | ||
| + | |||
| + | BOOTPROTO=dhcp | ||
| + | |||
| + | удалить файлы | ||
| + | |||
| + | rm /etc/net/ifaces/vmbr0/ipv4* | ||
| + | |||
| + | Создать скрипт | ||
| + | |||
| + | <pre> | ||
| + | cat << 'EOF' > /etc/systemd/system/dhcponboot.service | ||
| + | [Unit] | ||
| + | Description=dhcponboot | ||
| + | Requires=network-online.target | ||
| + | After=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Restart=no | ||
| + | ExecStart=dhclient vmbr0 | ||
| + | User=root | ||
| + | Group=root | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | EOF | ||
| + | </pre> | ||
| + | |||
| + | дать команды | ||
| + | |||
| + | systemctl daemon-reload | ||
| + | systemctl enable dhcponboot.service | ||
| + | systemctl start dhcponboot.service | ||
| + | |||
| + | ==Автопереименование машины== | ||
| + | |||
| + | Создать скрипт | ||
| + | <pre> | ||
| + | cat << 'EOF' > /usr/bin/autorename.sh | ||
| + | #!/bin/sh | ||
| + | sleep 3s | ||
| + | hostname_prefix="pc" | ||
| + | new_ip=$(ip a | grep eth0 | tail -1 | awk {'print $2'} | awk -F '/' {'print $1'}) | ||
| + | oct3=$(echo $new_ip | awk -F '.' {'print $3'}) | ||
| + | oct4=$(echo $new_ip | awk -F '.' {'print $4'}) | ||
| + | new_hostname="${hostname_prefix}-${oct3}-${oct4}" | ||
| + | echo "127.0.0.1 localhost" > /etc/hosts | ||
| + | echo "$new_ip ${new_hostname}.local ${new_hostname}" >> /etc/hosts | ||
| + | echo $new_hostname > /etc/hostname | ||
| + | exit 0 | ||
| + | EOF | ||
| + | chmod +x /usr/bin/autorename.sh | ||
| + | </pre> | ||
| + | |||
| + | Создать сервис | ||
| + | <pre> | ||
| + | cat << 'EOF' > /etc/systemd/system/autorename.service | ||
| + | [Unit] | ||
| + | Description=autorename | ||
| + | Requires=network-online.target | ||
| + | After=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Restart=no | ||
| + | ExecStart=/usr/bin/autorename.sh | ||
| + | User=root | ||
| + | Group=root | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | EOF | ||
| + | </pre> | ||
| + | |||
| + | дать команды | ||
| + | |||
| + | systemctl daemon-reload | ||
| + | systemctl enable autorename.service | ||
| + | systemctl start autorename.service | ||
| + | |||
| + | |||
| + | ==Создание пользователей и добавление разрешений== | ||
| + | |||
| + | Для создания пользователя можно использовать команду: | ||
| + | <pre> | ||
| + | pveum user add nameuser@pve --password 123456 | ||
| + | ,где nameuser имя пользователя | ||
| + | </pre> | ||
| + | Для добавления пользователя к виртуальной машине: | ||
| + | <pre> | ||
| + | pveum acl modify /vms/900 --users vasya@pve --roles PVEVMUser | ||
| + | </pre> | ||
| + | ,где /vms/900 путь до машины, 900-id машины. | ||
| + | user@pve - имя пользователя | ||
| + | PVEVMUser - роль. | ||
| + | |||
| + | ==Создать снапшот== | ||
| + | |||
| + | Если снапшот | ||
| + | |||
| + | dfl | ||
| + | |||
| + | и машины с 602 по 612, | ||
| + | |||
| + | то | ||
| + | |||
| + | for i in `seq 2 12`; do qm snapshot $((600+$i)) dfl;done | ||
| + | |||
| + | |||
| + | ==Откатить виртмашины к снапшоту== | ||
| + | |||
| + | Если снапшот | ||
| + | |||
| + | dfl | ||
| + | |||
| + | и машины с 602 по 612, | ||
| + | |||
| + | то | ||
| + | |||
| + | for i in `seq 2 12`; do qm rollback $((600+$i)) dfl;done | ||
| + | |||
| + | |||
| + | Если нужно конкретные машины по номерам | ||
| + | |||
| + | В этом примере откатываем машины 619 и 620 | ||
| + | |||
| + | for i in 19 20; do qm rollback $((600+$i)) dfl;done | ||
| + | |||
| + | ==Остановить и удалить машины== | ||
| + | |||
| + | ===Остановить=== | ||
| + | |||
| + | for i in `seq 1 23`; do qm stop $((200+$i));done | ||
| + | |||
| + | ===Удалить=== | ||
| + | |||
| + | for i in `seq 1 23`; do qm destroy $((200+$i)) --purge true;done | ||
| + | |||
| + | ==Отключить засыпание Ubuntu 20.04== | ||
| + | |||
| + | sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target | ||
| + | |||
| + | |||
| + | ==sudo su под пользователем administrator без пароля на Ubuntu 20.04== | ||
| + | |||
| + | echo 'administrator ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers | ||
| + | |||
| + | ==Нагенерить конфиги для подключения по RDP через Remmina== | ||
| + | |||
| + | cd /home/user/.local/share/remmina | ||
| + | |||
| + | <pre> | ||
| + | cat << tpl.remmina > EOF | ||
| + | [remmina] | ||
| + | password=nEwuUehzdh8= | ||
| + | gateway_username= | ||
| + | notes_text= | ||
| + | vc= | ||
| + | preferipv6=0 | ||
| + | ssh_tunnel_loopback=0 | ||
| + | serialname= | ||
| + | sound=off | ||
| + | printer_overrides= | ||
| + | name=test drp pdrb vm1 | ||
| + | console=0 | ||
| + | colordepth=99 | ||
| + | security= | ||
| + | precommand= | ||
| + | disable_fastpath=0 | ||
| + | left-handed=0 | ||
| + | postcommand= | ||
| + | multitransport=0 | ||
| + | group= | ||
| + | server=10.207.144.62:33901 | ||
| + | ssh_tunnel_certfile= | ||
| + | glyph-cache=0 | ||
| + | ssh_tunnel_enabled=0 | ||
| + | disableclipboard=0 | ||
| + | audio-output= | ||
| + | parallelpath= | ||
| + | monitorids= | ||
| + | cert_ignore=0 | ||
| + | gateway_server= | ||
| + | serialpermissive=0 | ||
| + | protocol=RDP | ||
| + | old-license=0 | ||
| + | ssh_tunnel_password= | ||
| + | resolution_mode=2 | ||
| + | pth= | ||
| + | loadbalanceinfo= | ||
| + | disableautoreconnect=0 | ||
| + | clientname= | ||
| + | clientbuild= | ||
| + | resolution_width=0 | ||
| + | drive= | ||
| + | relax-order-checks=0 | ||
| + | username=student | ||
| + | base-cred-for-gw=0 | ||
| + | gateway_domain= | ||
| + | network=none | ||
| + | rdp2tcp= | ||
| + | gateway_password= | ||
| + | serialdriver= | ||
| + | domain= | ||
| + | profile-lock=0 | ||
| + | rdp_reconnect_attempts= | ||
| + | restricted-admin=0 | ||
| + | multimon=0 | ||
| + | exec= | ||
| + | smartcardname= | ||
| + | serialpath= | ||
| + | enable-autostart=0 | ||
| + | usb= | ||
| + | shareprinter=0 | ||
| + | ssh_tunnel_passphrase= | ||
| + | shareparallel=0 | ||
| + | disablepasswordstoring=0 | ||
| + | quality=0 | ||
| + | span=0 | ||
| + | parallelname= | ||
| + | ssh_tunnel_auth=0 | ||
| + | keymap= | ||
| + | ssh_tunnel_username= | ||
| + | execpath= | ||
| + | shareserial=0 | ||
| + | resolution_height=0 | ||
| + | timeout= | ||
| + | useproxyenv=0 | ||
| + | sharesmartcard=0 | ||
| + | freerdp_log_filters= | ||
| + | microphone= | ||
| + | dvc= | ||
| + | ssh_tunnel_privatekey= | ||
| + | gwtransp=http | ||
| + | ssh_tunnel_server= | ||
| + | ignore-tls-errors=1 | ||
| + | disable-smooth-scrolling=0 | ||
| + | gateway_usage=0 | ||
| + | websockets=0 | ||
| + | freerdp_log_level=INFO | ||
| + | window_height=941 | ||
| + | window_maximize=0 | ||
| + | window_width=1537 | ||
| + | scale=2 | ||
| + | viewmode=1 | ||
| + | EOF | ||
| + | </pre> | ||
| + | |||
| + | for i in `seq 1 14`; do cat tpl.remmina | sed "s/33901/$((33900+$i))/g" | sed "s/vm1/vm$((0+$i))/g" > group_rdp_vm$((0+$i))_10-207-144-62-$((33900+$i)).remmina; done | ||
Текущая версия на 23:18, 29 ноября 2024
Содержание
- 1 Важные моменты при создании кластера PVE
- 2 Настройка после клонирования образа на базе AltEduPve
- 3 Дополнительные настройки
- 4 Лайфхаки
- 4.1 Поставить и включить на сизифе
- 4.2 Автонастройка компьютеров с PVE при работе сети по DHCP
- 4.3 Перенос виртмашин после переименования узла
- 4.4 Настройка PVE из Pmagic
- 4.5 Если после клонирования PVE через архивирование файловой системы PVE не стартует
- 4.6 Если виртуальная машина не хочет бэкапиться
- 4.7 Если не работает автостарт виртуальных машин после загрузки PVE
- 4.8 Если proxnox не хочет запускать бэкапы по расписанию
- 4.9 Сброс ноды после вывода из кластера
- 4.10 Если нода удалена из кластера, но осталась в дереве узлов веб интерфейса
- 4.11 Синхронизировать время и перегенерировать сертификаты на всех нодах
- 4.12 Решение проблем с MAC-адресами в копиях виртуальных esxi
- 4.13 Переименовать и/или перенастроить сеть на ALT-PVE
- 4.14 Как сделать много связанных копий
- 4.15 Как переименовать машины
- 4.16 Сетевой мост vmbr0 в PVE в режиме dhcp
- 4.17 Автопереименование машины
- 4.18 Создание пользователей и добавление разрешений
- 4.19 Создать снапшот
- 4.20 Откатить виртмашины к снапшоту
- 4.21 Остановить и удалить машины
- 4.22 Отключить засыпание Ubuntu 20.04
- 4.23 sudo su под пользователем administrator без пароля на Ubuntu 20.04
- 4.24 Нагенерить конфиги для подключения по RDP через Remmina
Важные моменты при создании кластера PVE
На всех узлах должны быть сформированы правильным образом файлы /etc/hosts
Пример одного из серверов нашего кластера:
127.0.0.1 localhost 192.168.10.126 alt-edu-hpg8.nntc.nnov.ru alt-edu-hpg8 192.168.10.125 alt-edu-hpg5 192.168.10.124 alt-edu-apve4 192.168.10.121 alt-edu-apve1 192.168.10.122 alt-edu-apve2 192.168.10.123 alt-edu-apve3
Соответственно, если нужно будет добавить в кластер ещё один узел, то нужно НА КАЖДОЙ из нод кластера добавить в /etc/hosts сопоставление имени и его ip адреса.
Если этого не сделать, то будут ошибки добавления в кластер нового узла и после этого повиснет веб интерфейс на любой ноде кластера.
Как исправить такую ситуацию (если повис веб интерфейс)?
Отделить неуспешную ноду от кластера по инструкции: https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node (раздел Separate a Node Without Reinstalling)
На кластере в терминале выполнить отсоединение неуспешной ноды командой
pvecm delnode 5
, где 5 - идентификатор ноды из corosync
Иногда по идентификатору не получается. Тогда можно попробовать по имени ноды или по ip адресу
Иногда кажется что кластер развалился. В этом случае нужно перезапустить сервис на каждой из нод и немного подождать.
Перезапустить corosync -- команда:
systemctl restart corosync
Подождать и потом проверить статус кластера командой:
pvecm status
Также можно посмотреть состав нод кластера -- командой:
pvecm nodes
Также иногда может потребоваться перезапустить сервисы на каждой ноде:
systemctl restart pveproxy
systemctl restart pve-cluster
Настройка после клонирования образа на базе AltEduPve
Deploy dd image over ssh+dd
dd if=alt-edu-pve-template-70g.dd | ssh root@172.16.254.124 /bin/dd of=/dev/sda
Задать переменную с именем диска
DISK='/dev/sda'
Задать переменную с именем сетевого интерфейса для моста
MACHINE_ETH0_DEVICE='eth0' MACHINE_ETH1_DEVICE='eth1'
Задать переменные для настройки сети
MACHINE_NAME='alt-edu-apve4' MACHINE_IP0='192.168.10.124' MACHINE_MASK0='24' MACHINE_IP1='172.16.254.124' MACHINE_MASK1='16' MACHINE_GATEWAY='172.16.1.1' MACHINE_DNS='172.16.1.1'
Выполнить скрипт из partedmagic
fdisk $DISK <<EOF d 2 n p 2 N w EOF
pvresize "${DISK}2"
vgchange -ay
mkdir /mnt/d mount /dev/alt-vg/root /mnt/d
IP=$MACHINE_IP1 HOST=$MACHINE_NAME echo "127.0.0.1 localhost" > /mnt/d/etc/hosts echo "$IP $HOST.nntc.nnov.ru $HOST" >> /mnt/d/etc/hosts echo "$HOST" > /mnt/d/etc/hostname
rm -rf /mnt/d/etc/net/ifaces/* mkdir /mnt/d/etc/net/ifaces/vmbr0 cat << EOF > /mnt/d/etc/net/ifaces/vmbr0/options TYPE=bri VLAN_AWARE=yes VIDS=2-2048 ONBOOT=yes DISABLED=no NM_CONTROLLED=no CONFIG_WIRELESS=no CONFIG_IPV4=yes CONFIG_IPV6=no BOOTPROTO=static HOST="$MACHINE_ETH0_DEVICE" EOF
echo "$MACHINE_IP0/$MACHINE_MASK0" > /mnt/d/etc/net/ifaces/vmbr0/ipv4address #echo "default via $MACHINE_GATEWAY" > /mnt/d/etc/net/ifaces/vmbr0/ipv4route #echo "nameserver $MACHINE_GATEWAY" > /mnt/d/etc/net/ifaces/vmbr0/resolve.conf
mkdir /mnt/d/etc/net/ifaces/vmbr1 cat << EOF > /mnt/d/etc/net/ifaces/vmbr1/options TYPE=bri VLAN_AWARE=yes VIDS=2-2048 ONBOOT=yes DISABLED=no NM_CONTROLLED=no CONFIG_WIRELESS=no CONFIG_IPV4=yes CONFIG_IPV6=no BOOTPROTO=static HOST="$MACHINE_ETH1_DEVICE" EOF
echo "$MACHINE_IP1/$MACHINE_MASK1" > /mnt/d/etc/net/ifaces/vmbr1/ipv4address echo "default via $MACHINE_GATEWAY" > /mnt/d/etc/net/ifaces/vmbr1/ipv4route echo "nameserver $MACHINE_GATEWAY" > /mnt/d/etc/net/ifaces/vmbr1/resolve.conf
cat << EOF > /mnt/d/etc/sysconfig/network # When set to no, this may cause most daemons' initscripts skip starting. NETWORKING=yes # Used by hotplug/pcmcia/ifplugd scripts to detect current network config # subsystem. CONFMETHOD=etcnet # Used by rc.sysinit to setup system hostname at boot. HOSTNAME=$HOST # This is used by ALTLinux ppp-common to decide if we want to install # nameserver lines into /etc/resolv.conf or not. RESOLV_MODS=yes EOF
reboot
Выполнить скрипт уже из pve, подключившись в рута по ssh
apt-get update apt-get dist-upgrade
apt-get install -y firefox rpm -e chromium-disable-webfonts
vgchange -ay
lvcreate -y alt-vg --name vmstorage -L 400g zpool create zfspool /dev/alt-vg/vmstorage -f zfs set compression=off zfspool zfs set sync=disabled zfspool
mkdir /zfspool/storage chown storage:storage /zfspool/storage -R
pvesm add zfspool vmstorage --pool zfspool --content images,rootdir
pvesm add cifs pveshare --server 172.16.254.123 --share mcluster1 --username mcluster1 --password --content iso,backup
Дополнительные настройки
Решение проблемы с офисом
apt-get install LibreOffice LibreOffice-langpack-ru
Google Chrome
epm play chrome
Если нужен доступ к системе по VNC
Смотреть здесь: https://wiki.nntc.nnov.ru/index.php?title=Vnc
Если нужен докер
apt-get install docker-ce docker-compose
usermod student -aG docker
systemctl enable --now docker
Что такое Docker и для чего может быть полезен?
Смотреть здесь: https://wiki.nntc.nnov.ru/index.php?title=Docker
Для чего, например, может быть нужен докер?
Запуск веб версии VNC клиента - смотреть здесь: https://wiki.nntc.nnov.ru/index.php?title=Vnc#.D0.97.D0.B0.D0.BF.D1.83.D1.81.D1.82.D0.B8.D1.82.D1.8C_.D0.BA.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80_.D1.81_NoVNC_.D0.B4.D0.BB.D1.8F_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BB.D1.8F.D1.86.D0.B8.D0.B8_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B5.D0.B3.D0.BE_.D1.81.D1.82.D0.BE.D0.BB.D0.B0_.D0.B2_.D0.B1.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80
Лайфхаки
Поставить и включить на сизифе
su - apt-get install -y pve-manager cifs-utils sendmail systemctl enable corosync pve-cluster pvescheduler pve-guests lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy systemctl start corosync pve-cluster pvescheduler lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy
Автонастройка компьютеров с PVE при работе сети по DHCP
cat << 'EOF1' > /opt/after-boot.sh
#!/bin/bash
mac=$(ip a | grep eno -A 1 | grep ether | awk {'print $2'})
cat << EOF > /etc/net/ifaces/vmbr0/iplink
address ${mac}
EOF
systemctl restart network
sleep 2
killall dhcpcd
sleep 8
dhcpcd vmbr0
ip=$(ip a | grep vmbr0 | grep inet | awk {'print $2'} | awk -F '/' {'print $1'})
name="prdb-$(echo $ip | awk -F '.' {'print $3'})-$(echo $ip | awk -F '.' {'print $4'})"
echo ${name} > /etc/hostname
cat << EOF > /etc/hosts
${ip} ${name}
127.0.0.1 localhost.localdomain localhost
EOF
echo "" >> /etc/issue
echo "---------------------------------------------------" > /etc/issue
echo "| SERVER WEB CONSOLE: https://${ip}:8006 |" >> /etc/issue
echo "---------------------------------------------------" >> /etc/issue
echo "" >> /etc/issue
echo "" >> /etc/issue
EOF1
cat << 'EOF' > /etc/rc.d/rc.local
#!/bin/bash
/opt/after-boot.sh
sleep 3
ip ro add 192.168.200.0/24 via 10.207.151.253
exit 0
EOF
chmod +x /etc/rc.d/rc.local
chmod +x /opt/after-boot.sh
Перенос виртмашин после переименования узла
systemctl stop pve-cluster systemctl stop corosync pmxcfs -l /bin/rm /etc/pve/corosync.conf /bin/rm -r /etc/corosync/*
export SRC_DIR='prdb-145-37'
cd /etc/pve/nodes/
deldirs=$(ls | grep -v $(hostname))
confs=$(ls $SRC_DIR/qemu-server/*.conf)
for i in $(echo ${confs}); do
destfile=$(echo $i | awk -F '/' {'print $3'})
cat $i > $(hostname)/qemu-server/$destfile
done
for d in $(echo ${deldirs}); do
rm -rf $d
done
Настройка PVE из Pmagic
Просто бросьте это в консоль (если нужно, предварительно измените в текстовом редакторе и бросьте потом)
cat << 'EOF1' > q.sh
#!/bin/bash
###############################
classname="mobd"
pcnumber=10
###############################
partprobe /dev/nvme0n1
gdisk /dev/nvme0n1 << EOF
x
e
w
Y
EOF
mkdir /mnt/q
mount /dev/nvme0n1p2 /mnt/q
mac=`ip a | grep eth0 -A 1 | head -2 | awk {'print $2'} | tail -1`
ipmask=`ip a | grep "inet 10.207" | awk {'print $2'}`
ip=`echo $ipmask | awk -F '/' {'print $1'}`
mask=`echo $ipmask | awk -F '/' {'print $2'}`
ip3=`echo $ip | awk -F '.' {'print $3'}`
ip4=`echo $ip | awk -F '.' {'print $4'}`
echo "address $mac" > /mnt/q/etc/net/ifaces/vmbr0/iplink
echo "${classname}-${ip3}-${ip4}.nntc.nnov.ru" > /mnt/q/etc/hostname
echo "127.0.0.1 localhost" > /mnt/q/etc/hosts
echo "${ip} ${classname}-${ip3}-${ip4}.nntc.nnov.ru ${classname}-${ip3}-${ip4}" >> /mnt/q/etc/hosts
cat << EOF > /mnt/q/usr/share/applications/demoexam-seat.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Demo Exam Seat
GenericName=Demo Exam Seat
Comment=
Exec=/opt/run-demoexam-seat.sh ${pcnumber}
Terminal=false
MimeType=text/plain;
Icon=
Categories=Development;
StartupNotify=true
EOF
cat << EOF > /mnt/q/usr/share/applications/demoexam-seat-spice.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Demo Exam Seat (SPICE)
GenericName=Demo Exam Seat (SPICE)
Exec=/opt/run-demoexam-seat-spice.sh ${pcnumber}
Terminal=false
MimeType=text/plain;
Icon=
Categories=Development;
StartupNotify=true
EOF
umount /mnt/q
EOF1
chmod +x q.sh
./q.sh
Если после клонирования PVE через архивирование файловой системы PVE не стартует
systemctl stop pve-cluster systemctl stop corosync /bin/rm -rf /etc/pve reboot
Источник: https://forum.proxmox.com/threads/installation-to-start-pve-cluster.85490/
Если виртуальная машина не хочет бэкапиться
Ошибка вроде этой:
Backup of VM 40100 failed - unable to connect to qmeventd socket (vmid: 40100) - No such file or directory
Тогда:
systemctl start qmeventd.service
Источник: https://forum.proxmox.com/threads/backup-of-vm-failed-unable-to-connect-to-qmeventd-socket.117940/
Если не работает автостарт виртуальных машин после загрузки PVE
systemctl enable pve-guests
Если proxnox не хочет запускать бэкапы по расписанию
Включить сервис:
systemctl enable --now pvescheduler
Источник: https://forum.proxmox.com/threads/backups-not-running-after-upgrade-to-7-4.124784/
Сброс ноды после вывода из кластера
Выполнить последовательность команд:
systemctl stop pve-cluster systemctl stop corosync pmxcfs -l /bin/rm /etc/pve/corosync.conf /bin/rm -r /etc/corosync/* killall pmxcfs systemctl start pve-cluster
При необходимости, можно очистить ноду от остатков конфигураций других кластерных нод. Для этого нужно перейти в каталог:
cd /etc/pve/nodes
и удалить оттуда все каталоги, кроме каталога конфигурации самой ноды
/bin/rm -r node-89-11 node-89-13 node-89-2 node-89-4 node-89-6 node-89-8
затем перезагрузка
reboot
После этих процедур нода готова становиться кластером или быть введённой в уже существующий кластер
Если нода удалена из кластера, но осталась в дереве узлов веб интерфейса
Нужно последовательно на каждом узле запустить эти команды. Пример показывает запуск команды на cluster-node8, через ssh
ssh cluster-node8 systemctl restart corosync && systemctl restart pve-cluster
Если узлов, допустим, 8, то нужно выполнить последовательно команду, подключаясь поочерёдно к каждому из узлов
Например, так:
for i in 2 3 6 7 8; do ssh cluster-node${i} systemctl restart corosync && systemctl restart pve-cluster; done
Синхронизировать время и перегенерировать сертификаты на всех нодах
Последовательно зайти на каждый узел и просто бросить это в консоль и нажать Enter
cat << EOF > /tmp/fix.sh
ntpdate pool.ntp.org
rm /etc/pve/pve-root-ca.pem
rm /etc/pve/priv/pve-root-ca.key
rm /etc/pve/nodes/cluster-node1/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node2/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node3/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node4/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node6/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node7/pve-ssl.{pem,key}
rm /etc/pve/nodes/cluster-node8/pve-ssl.{pem,key}
rm /etc/pve/authkey.pub
rm /etc/pve/priv/authkey.key
rm /etc/pve/priv/authorized_keys
pvecm updatecerts -f
systemctl restart pvedaemon
systemctl restart pveproxy
systemctl restart corosync
mv /root/.ssh/known_hosts /root/.ssh/known_hosts_old
EOF
bash /tmp/fix.sh
Решение проблем с MAC-адресами в копиях виртуальных esxi
1. Войти по ssh на esxi машину
ssh root@172.16.X.Y
При удачном логине будет примерно такое приглашение командной строки
[root@localhost:~]
2. Кинуть туда этот текст и нажать enter
cat << 'EOF' > fix.sh
#!/bin/sh
newmac=$(esxcfg-nics -l | grep vmnic0 | awk {'print $7'})
oldmac=$(cat /etc/vmware/esx.conf | grep 'vmkernelnic' | grep -o '..:..:..:..:..:..')
sed -i "s/$oldmac/$newmac/g" /etc/vmware/esx.conf;
echo "test new mac $newmac"
cat /etc/vmware/esx.conf | grep $newmac
echo "please type command: reboot"
EOF
chmod +x fix.sh
./fix.sh
3. Перезагрузить систему
reboot
Переименовать и/или перенастроить сеть на ALT-PVE
Допустим, есть задача установить следующие параметры (не важно на как предварительно настроенной ALT-PVE)
Хотим такой ip адрес: 192.168.0.77 Хотим такую маску: 255.255.255.0 (aka 24) Хотим такое имя хоста: alt-pve
Тогда нужно подготовить такой текст и бросить его в рутовую консоль:
IP=192.168.0.77 MASK=24 GW=192.168.0.1 HOST=alt-pve echo "127.0.0.1 localhost" > /etc/hosts echo "$IP $HOST.local $HOST" >> /etc/hosts echo "$HOST" > /etc/hostname rm -rf /etc/net/ifaces/* mkdir /etc/net/ifaces/vmbr0 cat << EOF > /etc/net/ifaces/vmbr0/options TYPE=bri VLAN_AWARE=yes VIDS=2-2048 ONBOOT=yes DISABLED=no NM_CONTROLLED=no CONFIG_WIRELESS=no CONFIG_IPV4=yes CONFIG_IPV6=no BOOTPROTO=static HOST="eth0" EOF echo "$IP/$MASK" > /etc/net/ifaces/vmbr0/ipv4address echo "default via $GW" > /etc/net/ifaces/vmbr0/ipv4route echo "nameserver $GW" > /etc/net/ifaces/vmbr0/resolve.conf cat << EOF > /etc/sysconfig/network # When set to no, this may cause most daemons' initscripts skip starting. NETWORKING=yes # Used by hotplug/pcmcia/ifplugd scripts to detect current network config # subsystem. CONFMETHOD=etcnet # Used by rc.sysinit to setup system hostname at boot. HOSTNAME=$HOST # This is used by ALTLinux ppp-common to decide if we want to install # nameserver lines into /etc/resolv.conf or not. RESOLV_MODS=yes EOF reboot
Затем нажать Enter для перезагрузки машины
Как сделать много связанных копий
for i in `seq 1 22`; do qm clone 400 $((400+$i)) --name new-machine-name-$i --full false;done
Как переименовать машины
Даём новые имена машинам с 601 по 612
префикс хотим такой
ssa-lin-de-
Команда:
for i in `seq 1 12`; do qm set $((600+$i)) --name ssa-lin-de-$i;done
Сетевой мост vmbr0 в PVE в режиме dhcp
в файле /etc/net/ifaces/vmbr0/options выставить параметр
BOOTPROTO=dhcp
удалить файлы
rm /etc/net/ifaces/vmbr0/ipv4*
Создать скрипт
cat << 'EOF' > /etc/systemd/system/dhcponboot.service [Unit] Description=dhcponboot Requires=network-online.target After=network-online.target [Service] Restart=no ExecStart=dhclient vmbr0 User=root Group=root [Install] WantedBy=multi-user.target EOF
дать команды
systemctl daemon-reload systemctl enable dhcponboot.service systemctl start dhcponboot.service
Автопереименование машины
Создать скрипт
cat << 'EOF' > /usr/bin/autorename.sh
#!/bin/sh
sleep 3s
hostname_prefix="pc"
new_ip=$(ip a | grep eth0 | tail -1 | awk {'print $2'} | awk -F '/' {'print $1'})
oct3=$(echo $new_ip | awk -F '.' {'print $3'})
oct4=$(echo $new_ip | awk -F '.' {'print $4'})
new_hostname="${hostname_prefix}-${oct3}-${oct4}"
echo "127.0.0.1 localhost" > /etc/hosts
echo "$new_ip ${new_hostname}.local ${new_hostname}" >> /etc/hosts
echo $new_hostname > /etc/hostname
exit 0
EOF
chmod +x /usr/bin/autorename.sh
Создать сервис
cat << 'EOF' > /etc/systemd/system/autorename.service [Unit] Description=autorename Requires=network-online.target After=network-online.target [Service] Restart=no ExecStart=/usr/bin/autorename.sh User=root Group=root [Install] WantedBy=multi-user.target EOF
дать команды
systemctl daemon-reload systemctl enable autorename.service systemctl start autorename.service
Создание пользователей и добавление разрешений
Для создания пользователя можно использовать команду:
pveum user add nameuser@pve --password 123456 ,где nameuser имя пользователя
Для добавления пользователя к виртуальной машине:
pveum acl modify /vms/900 --users vasya@pve --roles PVEVMUser
,где /vms/900 путь до машины, 900-id машины. user@pve - имя пользователя PVEVMUser - роль.
Создать снапшот
Если снапшот
dfl
и машины с 602 по 612,
то
for i in `seq 2 12`; do qm snapshot $((600+$i)) dfl;done
Откатить виртмашины к снапшоту
Если снапшот
dfl
и машины с 602 по 612,
то
for i in `seq 2 12`; do qm rollback $((600+$i)) dfl;done
Если нужно конкретные машины по номерам
В этом примере откатываем машины 619 и 620
for i in 19 20; do qm rollback $((600+$i)) dfl;done
Остановить и удалить машины
Остановить
for i in `seq 1 23`; do qm stop $((200+$i));done
Удалить
for i in `seq 1 23`; do qm destroy $((200+$i)) --purge true;done
Отключить засыпание Ubuntu 20.04
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
sudo su под пользователем administrator без пароля на Ubuntu 20.04
echo 'administrator ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
Нагенерить конфиги для подключения по RDP через Remmina
cd /home/user/.local/share/remmina
cat << tpl.remmina > EOF [remmina] password=nEwuUehzdh8= gateway_username= notes_text= vc= preferipv6=0 ssh_tunnel_loopback=0 serialname= sound=off printer_overrides= name=test drp pdrb vm1 console=0 colordepth=99 security= precommand= disable_fastpath=0 left-handed=0 postcommand= multitransport=0 group= server=10.207.144.62:33901 ssh_tunnel_certfile= glyph-cache=0 ssh_tunnel_enabled=0 disableclipboard=0 audio-output= parallelpath= monitorids= cert_ignore=0 gateway_server= serialpermissive=0 protocol=RDP old-license=0 ssh_tunnel_password= resolution_mode=2 pth= loadbalanceinfo= disableautoreconnect=0 clientname= clientbuild= resolution_width=0 drive= relax-order-checks=0 username=student base-cred-for-gw=0 gateway_domain= network=none rdp2tcp= gateway_password= serialdriver= domain= profile-lock=0 rdp_reconnect_attempts= restricted-admin=0 multimon=0 exec= smartcardname= serialpath= enable-autostart=0 usb= shareprinter=0 ssh_tunnel_passphrase= shareparallel=0 disablepasswordstoring=0 quality=0 span=0 parallelname= ssh_tunnel_auth=0 keymap= ssh_tunnel_username= execpath= shareserial=0 resolution_height=0 timeout= useproxyenv=0 sharesmartcard=0 freerdp_log_filters= microphone= dvc= ssh_tunnel_privatekey= gwtransp=http ssh_tunnel_server= ignore-tls-errors=1 disable-smooth-scrolling=0 gateway_usage=0 websockets=0 freerdp_log_level=INFO window_height=941 window_maximize=0 window_width=1537 scale=2 viewmode=1 EOF
for i in `seq 1 14`; do cat tpl.remmina | sed "s/33901/$((33900+$i))/g" | sed "s/vm1/vm$((0+$i))/g" > group_rdp_vm$((0+$i))_10-207-144-62-$((33900+$i)).remmina; done