quelqu'un sait-il comment résoudre réellement le problème des instances Ubuntu Cloud VM d'OpenStack ne pouvant pas importer les clés publiques du serveur de métadonnées de Nova-api avec le message suivant:
2012-07-18 11:05:45,409 - util.py[WARNING]: 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [113/120s]: url error [[Errno 111] Connection refused]
2012-07-18 11:05:52,419 - DataSourceEc2.py[CRITICAL]: giving up on md after 120 seconds
J'ai trouvé de nombreuses mentions du problème (par exemple ici ou ici ) et j'ai essayé d'activer/désactiver cette règle iptables (en utilisant iptables-save et iptables-apply), mais ça ne marche pas. La règle amusante semble être:
$ iptables -t nat -L -v | grep -n3 169.254.169.254
48-
49-Chain nova-network-PREROUTING (1 references)
50- pkts bytes target prot opt in out source destination
51: 32 1920 DNAT tcp -- any any anywhere 169.254.169.254 tcp dpt:http to:128.131.172.155:8775
52- 0 0 DNAT udp -- any any anywhere sneezy.infosys.tuwien.ac.at udp dpt:1000 to:10.0.0.2:1194
53-
54-Chain nova-network-float-snat (1 references)
Au fait, y a-t-il un bon moyen de déboguer manuellement cela?
Résolution du problème d'un déploiement tout-en-un
Avec l'aide des gens du IRC channel #openstack (zynzel, livemoon), nous avons résolu ce problème en redémarrant simplement nova-api:
Sudo restart nova-api
Vous pouvez vérifier que le serveur de métadonnées est bien opérationnel en émettant:
lsof -i:8775
à partir de votre noeud de contrôleur ou
nmap -sS -sV -O -P0 -p8773-8776 <controller_ip>
avec l'adresse IP du nœud de votre contrôleur et en vérifiant que le port 8775/tcp est ouvert et écouté.
Il se peut que ce soit un problème avec Dodai-deploy, car nova-api doit être installé après que nova-compute est installé pour que le serveur de méta-données soit correctement initialisé.
Correction du problème sur un développement multi-nœuds
Si vous exécutez un déploiement multi-hôtes et souhaitez utiliser des instances de cloud Ubuntu qui extraient des clés publiques d'un serveur de métadonnées, vous en avez besoin dans le fichier nova.conf de votre contrôleur:
multihost=True
enabled_apis=metadata,ec2,osapi_compute,osapi_volume
et ceci dans le fichier nova.conf de votre noeud de traitement:
multi_Host=True
enabled_apis=metadata
Sans cela, vous obtiendrez des erreurs dans la sortie de la console de votre instance (instance de test nova console-log) sur l'impossibilité d'atteindre le serveur de métadonnées et vous ne pourrez pas y insérer SSH.
Une autre solution consiste à indiquer à votre instance qui vous êtes sur Launchpad via le formulaire de tableau de bord de données utilisateur (ou un fichier dans le terminal) afin qu'il puisse extraire vos clés publiques à partir de là. La syntaxe est la suivante (non expliqué ailleurs que dans le code source ):
#cloud-config
ssh_import_id: [your-launchpad-username]