APVE: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Как сделать много связанных копий)
Строка 360: Строка 360:
 
  systemctl enable autorename.service
 
  systemctl enable autorename.service
 
  systemctl start 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 - роль.

Версия 10:26, 18 ноября 2021

Настройка после клонирования образа на базе 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 - роль.