Bonnes pratiques pour les images
Performance / optimisation
Pas de synchronisation NTP dans la VM, l’heure est synchronisée par le host via une horloge paravirtualisée ;
scheduler d’IO fixé à deadline ;
pas d’espace vide type
/scratch
de grande taille (>5GB), passer par les volumes ou par l’éphémeral pour ça ;ne pas intégrer de swap dans l’image (passer par les flavors) ;
limiter le partitionnement au strict minimum (une partition, voire une dédiée pour
/tmp
et/var
) ;limiter au maximum la taille de l’image qui ne devrait pas excéder les 20GB ;
utilisation de fichier d’image en format RAW.
Sécurité
Paquets à jour et patchs de sécurité appliqués ;
configuration des accès pour un utilisateur non root + sudo plutôt que d’utiliser la connexion root directe ;
les images sont supposées publiques et ne doivent pas contenir de données confidentielles ou sensibles (clés, mots de passe etc…) ;
pas de mot de passe root en dur, remplacer dans le
/etc/shadow
l’empreinte par*
avant de l’uploader dans le catalogue.
Contextualisation
L’image doit supporter
cloud-init
(notamment pour l’injection des clés SSH) ;cloud-init
doit être configuré avec des réessais pendant une longue durée pour atteindre le service de méta données.# exemple de /etc/cloud/cloud.cfg.d/01_metadata.cfg datasource: OpenStack: max_wait: 600 timeout: 30 retries: 3
Intégration, compatibilité
Suppression de toute configuration spécifique à une instance (clés, noms d’hôtes…) ;
pas de
#
en fin de ligne de lafstab
;drivers
virtio
installés pour le stockage ;support ACPI pour les arrêts matériels ;
pour ajuster l’horloge des VMs, il est nécessaire de :
utiliser l’horloge paravirtualisée de KVM, vérifier :
% dmesg |grep clocksource Switching to clocksource kvm-clock
dans le cas contraire, se réferer à la section de configuration.
vérfier la timezone :
% ls -l /etc/localtime /sys/devices/system/clocksource/clocksource0/current_clocksource
vérifier la zone définie dans
/etc/sysconfig/clock
;s’assurer du paramétrage UTC :
% sed -i 's/LOCAL/UTC/' /etc/adjtime
Configuration réseau
configuration réseau DHCP pour
eth0
: il faut configurer le paramètreDHCLIENT
pour ne pas quitter si un bail ne peut être renouvelé mais reessayer plus tard. Exemple pour EL6 :% cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet PERSISTENT_DHCLIENT=1
drivers
virtio_net
installés ;suppression des entrées
udev
etsysconfig
des adresses MAC, exemple pour EL6 :% sed -i 's/^KERNEL!=/KERNEL==/p' /lib/udev/rules.d/75-persistent-net-generator.rules
suppression de la configuration DNS, du routage, des serveurs NTP. L’ensemble de ces paramètres sont passés par DHCP à la VM ;
le hostname est fixé par DHCP, il faut désactiver le module
cloud-init
qui le fixe au nom de la VM (fichier/etc/cloud/cloud.cfg
) :[...] preserve_hostname: 1 [...]