web-dev-qa-db-fra.com

Les instances de cloud dans OpenStack ne peuvent pas importer de clé publique SSH

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?

1
metakermit

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]
1
metakermit