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
/scratchde 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
/tmpet/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/shadowl’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-initdoit ê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
virtioinstallé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ètreDHCLIENTpour 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_netinstallés ;suppression des entrées
udevetsysconfigdes 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-initqui le fixe au nom de la VM (fichier/etc/cloud/cloud.cfg) :[...] preserve_hostname: 1 [...]