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
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
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
#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
Nettoyage container avant backup
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
[...]
script: /etc/pve/scripts/backup-hooks.sh
Le script en lui-même :
nano /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
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 :
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
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 :
#!/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