APVE
Содержание
- 1 Настройка после клонирования образа на базе AltEduPve
- 2 Дополнительные настройки
- 3 Лайфхаки
- 3.1 Решение проблем с MAC-адресами в копиях виртуальных esxi
- 3.2 Переименовать и/или перенастроить сеть на ALT-PVE
- 3.3 Как сделать много связанных копий
- 3.4 Как сделать много копий в кластере
- 3.5 Сетевой мост vmbr0 в PVE в режиме dhcp
- 3.6 Автопереименование машины
- 3.7 Создание пользователей и добавление разрешений
Настройка после клонирования образа на базе 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
Лайфхаки
Решение проблем с 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
Как сделать много копий в кластере
Допустим, имеем кластер из узлов вида
alt-pve-155-X
, где
X
это номер узла кластера (при использовании в цикле важно, чтобы номера узлов в кластере шли подряд). Представим, что узлы у нас пронумерованы от 1 до 12
Также имеем шаблонную виртуальную машину с номером 800
Тогда для клонирования виртуальной машины по разным узлам кластера нужно на узле-кластере выполнить следующую команду.
for i in `seq 1 12`; do qm clone 800 $((800+$i)) --target alt-pve-155-$i --name vm-spiridonov-postgres-$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>
Для добавления пользователя к виртуальной машине:
pveum acl modify /vms/900 --users vasya@pve --roles PVEVMUser
,где /vms/900 путь до виртуальной машины, посмотреть список путей можно командой
pveum acl list
user@pve - имя пользователя PVEVMUser - роль.