Proxmox

Installation de base

Installation de Proxmox 5 sur une base Stretch : https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch

Repo gratuit (Stretch avec Proxmox 5) :

echo "deb http://download.proxmox.com/debian stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-enterprise.list
apt-get update
pveupgrade
pveversion

Supprimer l'alerte à la connexion GUI :

nano /usr/share/pve-manager/ext4/pvemanagerlib.js
              if (data.status == 'false')
pvedaemon restart

Un petit coup d'auto-completion, apparemment pas dispo de base sous Proxmox 5 / Debian9 :

apt-get install bash-completion

Disques secondaires

Ajouter disques secondaires dans /etc/fstab :

nano /etc/fstab

Y ajouter (suivant vos disques) :

UUID=72260c40-a15d-46ce-b58e-9bec5e0a6fc1 /srv/ssd525 ext4 defaults 0 0
UUID=9f5dd38a-42f7-4541-85e3-05a845336516 /srv/ssd1050 ext4 defaults 0 0
UUID=26d3211f-bbbc-4033-a3fd-7b683ea47e01 /srv/hdd320 ext4 defaults 0 0

Supprimer message au login

sed -i.bak 's/NotFound/Active/g' /usr/share/perl5/PVE/API2/Subscription.pm && systemctl restart pveproxy.service

Ajout utilisateur

pveum useradd liandri@pve -comment 'Liandri'
pveum passwd liandri@pve
pveum groupadd admin -comment "System Administrators"
pveum aclmod / -group admin -role Administrator
pveum usermod liandri@pve -group admin

pveum aclmod / -user liandri@pve -role Administrator

Ajout FTP OVH comme Backup

apt-get install curlftpfs
mkdir -p /mnt/ftp-backup
nano /root/.netrc
.netrc
machine ftpback.ovh.net
login ns.ip.eu
password Your-FTP-Password
chmod 600 /root/.netrc
nano /etc/fstab
curlftpfs#ftpback.ovh.net /mnt/ftp-backup fuse allow_root,nonempty,_netdev,direct_io,hard_remove,big_writes 0 0
mount -a

Changer Port

nano /usr/bin/pveproxy
$daemon = PVE::APIDaemon->new(
    port => <PORT>,
service pveproxy restart

Tweaks Backup

Via https://pve.proxmox.com/wiki/Backup_and_Restore
Installer le paquet lzop si besoin pour extraire des backups et pigz pour optimiser la compression :

apt-get install lzop pigz

Éditer le fichier de configuration de backup :

nano /etc/vzdump.conf
/etc/vzdump.conf
#Pigz :
# 0 : désactivé,
# 1 : utilise la moitié des threads dispos,
# >1 : utile le nombre donné de threads.
pigz: 1
#Dossier temporaire de travail des backups : très utile quand on sauvegarde sur un stockage distant, genre le FTP disponible par OVH.
tmpdir: /var/lib/vz/tmpbackup

On crée bien sur le dossier temporaire :

mkdir /var/lib/vz/tmpbackup

Via https://www.jamescoyle.net/how-to/2804-reduce-proxmox-lxc-backup-size-and-time Toujours dans le fichier de configuration de backup /etc/vzdump.conf, ajouter à la fin :

nano /etc/vzdump.conf
/etc/vzdump.conf
[...]
script: /etc/pve/scripts/backup-hooks.sh

Le script en lui-même :

nano /etc/pve/scripts/backup-hooks.sh
/etc/pve/scripts/backup-hooks.sh
#!/bin/bash
 
if [ "$1" == "backup-start" ] && [ ${VMTYPE} == "lxc" ]; then
    echo "Running pre backup guest cleanup for $3"
    pct exec "$3" -- bash -c "apt-get clean"
fi

Le script nettoie ici le cache APT avant le backup, pour économiser de la place.

Les différents hooks disponibles sont :

  • backup-start
  • backup-end
  • backup-abort
  • log-end
  • pre-stop
  • pre-restart
  • post-restart

IP FailOver OVH

etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address <IP FAilOver>
netmask 255.255.255.255
broadcast <IP FAilOver>
post-up route add <IP Host : XXX.YYY.ZZZ.254> dev eth0
post-up route add default gw <IP Host : XXX.YYY.ZZZ.254>
post-down route del <IP Host : XXX.YYY.ZZZ.254> dev eth0
post-down route del default gw <IP Host : XXX.YYY.ZZZ.254>
 
dns-nameservers 213.186.33.99
dns-search ovh.net

Debian 9 :

etc/network/interfaces
allow-hotplug ens18
iface ens18 inet static
address IP_FO/32
post-up ip route add HOST_GW dev ens18
post-up ip route add default via HOST_GW
etc/resolv.conf
nameserver 213.186.33.99
service networking restart

CRON

Escape les “%”. Bordel.

@daily tar cvzf /vz/shared/backup/pve-`date +"\%Y-\%m-\%d"`.tar.gz /etc/pve
@daily find /var/lib/lxc -type f | grep -P 'config' | tar cvzf /vz/shared/backup/lxc-`date +"\%Y-\%m-\%d"`.tar.gz -T -
@daily find /vz/shared/backup -type f -mtime +7 -delete

Migration de VM

Importer fichier .OVA dans Proxmox

On extrait le fichier .ova :

tar xvf my-vm.ova

On convertit le disque virtuel au format qui va bien (ici raw, on peut choisir qcow2 si besoin) :

qemu-img convert my-vm-disk1.vmdk my-vm-disk1.raw

Une fois l'image disque créée au bon format, il suffit de créer la VM dans proxmox, avec un disque spécifié, et ensuite, de remplacer le disque créé automatiquement par notre image convertie.

Reset LXC container

Petit script pour un reset rapide de container après restauration du master :

/root/change-hostname.sh
#!/bin/bash
 
#MyCurrentHostname="blah"
MyCurrentHostname=$(hostname)
MyNewHostname="www"
MyCurrentIP="1.2.3.4"
MyNewIP="5.6.7.8"
MyUser=""
RootPWD=""
MyUserPWD=""
echo -e "\033[0;32mChanging from $MyCurrentHostname to $MyNewHostname\033[0m"
#Génération de nouvelles clés SSH
echo -e "\033[0;32mDeleting generic SSH host key...'\033[0m"
rm /etc/ssh/ssh_host_*
echo -e "\033[0;32mGenerating new SSH keys...\033[0m"
dpkg-reconfigure openssh-server
echo -e "\033[0;32mDeleting generic DHParams file...\033[0m"
rm /etc/ssl/private/dhparams.pem
echo -e "\033[0;32mGenerating new DHParams (really long)...\033[0m"
openssl dhparam -out /etc/ssl/private/dhparams.pem 4096
#Si on veut aussi changer les passwords
#root
[ ! -z "$RootPWD" ] && echo -e "\033[0;32mModification du mot de passe pour root...\033[0m"
[ ! -z "$RootPWD" ] && echo -e "$RootPWD\n$RootPWD" | passwd root
#MyUser
if id "$MyUser" >/dev/null 2>&1; then
[ ! -z "$MyUser" ] && [ ! -z "$MyUserPWD" ] && echo -e "\033[0;32mModification du mot de passe pour $MyUser...\033[0m"
[ ! -z "$MyUser" ] && [ ! -z "$MyUserPWD" ] && echo -e "$MyUserPWD\n$MyUserPWD" | passwd $MyUser
fi
#Reconfiguration de l'adresse IP
echo -e "\033[0;32mIP Update...\033[0m"
sed -i "s/$MyCurrentIP/$MyNewIP/g" /etc/network/interfaces
#Base config files
#changer aussi le DNS du container dans Proxmox, si le hostname ne change pas directement
echo -e "\033[0;32mApplying changes to base config files...\033[0m"
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/hostname
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/hosts
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/ssh/ssh_host_*.pub
#Modded config files
echo -e "\033[0;32mApplying changes to modded config files...\033[0m"
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/fail2ban/jail.local
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/fail2ban/jail.conf
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /usr/share/logwatch/default.conf/logwatch.conf
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/apticron/apticron.conf
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/ssmtp/ssmtp.conf
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/ssmtp/revaliases
sed -i "s/$MyCurrentHostname/$MyNewHostname/g" /etc/passwd
#Reboot pour valider le tout
echo -e "\033[0;32mRebooting...\033[0m"
shutdown -r now

Cluster

Via : https://pve.proxmox.com/wiki/Proxmox_VE_4.x_Cluster Créer un cluser sur un des hôtes :

pvecm create <MonCluster>

Sur les autres hotes, on rejoint le cluster créé :

pvecm add <MonCluster>

Vérifier le status du cluster :

pvecm status

Vérifier le status des hotes du cluster :

pvecm nodes

Nettoyage des kernels inutiles

wget --no-check-certificate -O /usr/local/sbin/purge-old-kernels https://github.com/algodelinux/purge-old-kernels/raw/master/purge-old-kernels
chmod 755 /usr/local/sbin/purge-old-kernels
bash  /usr/local/sbin/purge-old-kernels