1 votes

Comment assigner automatiquement une adresse IP à une machine virtuelle Ubuntu sans état ?

Je prévois de créer une image de modèle réutilisable pour déployer mon application sur plusieurs machines virtuelles qui peuvent se trouver sur différents réseaux et différents datacenters. Je prévois d'avoir un contrôle total du système hôte et d'exécuter KVM en tant qu'hyperviseur.

L'image sera rendue immuable lorsqu'elle sera attachée à la machine virtuelle afin de pouvoir déployer des modifications plus facilement en mettant à jour un seul modèle au lieu du logiciel interne de chaque machine.

Je sais comment configurer le fichier /etc/network/interfaces sur un système ubuntu standard, mais comment attribuer automatiquement une ou plusieurs adresses IP à chaque machine virtuelle lorsque vous travaillez avec une image immuable pour la machine virtuelle au premier démarrage?

La seule solution que j'ai imaginée jusqu'à présent est de configurer le modèle pour se fier au DHCP pour le réseau lorsqu'il démarre. Après le démarrage de la machine, elle pourrait alors exécuter un script qui vérifie et reconfigure la configuration IP en se connectant à un autre serveur ou système de fichiers distant qui contient les informations de configuration réseau.

Possiblement, juste après que le réseau soit disponible, je pourrais exécuter un script sur la machine virtuelle invitée qui envoie l'adresse MAC de l'interface réseau attachée en tant qu'identifiant unique pour récupérer la configuration réseau à partir d'un autre serveur "maître" qui contient les assignments IP. Cela suppose que toutes les machines virtuelles se verront attribuer une adresse MAC unique lors de leur création.

Je pourrais devoir éviter de démarrer des services comme mysql et php jusqu'à ce que le réseau soit configuré et vérifié afin que le redémarrage du réseau peu de temps après le démarrage ne perturbe rien d'important.

Cela vous semble-t-il être la bonne façon de procéder?

Les services Amazon EC2, openstack ou autres adoptent-ils une approche différente de l'automatisation réseau? Peut-être fournissent-ils une API et/ou des scripts qui font la même chose lors du démarrage?

J'utilise KVM sur l'hôte Ubuntu et le système d'exploitation invité sera également Ubuntu si cela a de l'importance.

1voto

Andrew T Points 1088

La seule chose que vous pouvez contrôler du côté de l'hôte est l'adresse MAC que vous fournissez à la VM. Donc, l'approche la plus simple est de réserver l'adresse IP que vous voulez qu'une VM spécifique ait en DHCP pour une adresse MAC spécifique, puis de donner cette adresse MAC à la VM en question lorsque vous la configurez. Cela peut évoluer jusqu'à un certain point, mais avec des centaines de VM, la gestion des adresses MAC peut devenir fastidieuse.

La prochaine approche consiste donc à démarrer une VM avec une image ISO ou une image de disquette attachée, où un fichier de paramètres supplémentaires par VM est fourni. La VM exécutera un script au démarrage qui recherchera l'image ISO/disquette attachée et appliquera les paramètres trouvés là-bas, si une telle image est attachée. Facile à utiliser lors de la configuration de nouvelles VM ou lors de la reconfiguration de celles existantes.

La meilleure approche, bien sûr, est d'utiliser un système de gestion de configuration (puppet/chef/cfengine/ansible/saltstack/etc) ou un système de déploiement/configuration convergent comme theForeman. C'est aussi évolutif que possible, et vous permet de bénéficier d'une grande flexibilité dans la gestion des paramètres pour plus que simplement le réseau.

-2voto

dmourati Points 24230

Je pense que tu essaies de rendre cela plus difficile que nécessaire. Le réseau KVM par défaut dans Ubuntu s'appelle Usermode.

https://help.ubuntu.com/community/KVM/Networking#usermodenetworking

Cela va créer un NAT sur votre hôte physique permettant à tous vos VMs d'accéder au réseau via NAT. Les VMs reçoivent une adresse DHCP comme vous l'avez mentionné ci-dessus et c'est tout.

Alternativement, vous pouvez utiliser le Réseau Ponté pour permettre aux hôtes externes d'accéder directement aux services sur le système d'exploitation invité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X