web-dev-qa-db-fra.com

Où trouver les journaux d'un script de données utilisateur cloud-init?

J'initialise des instances ponctuelles exécutant un dérivé de l'AMI Ubuntu 13.04 standard en collant un script Shell dans le champ de données utilisateur.

Cela marche. Le script s'exécute. Mais il est difficile de déboguer car je ne peux pas savoir où la sortie du script est enregistrée, si elle est n'importe où.

J'ai regardé dans /var/log/cloud-init.log, qui semble contenir un tas de choses qui seraient pertinentes pour le débogage de cloud-init, lui-même, mais rien à propos de mon script. J'ai glissé dans/var/log et n'ai rien trouvé.

Y a-t-il quelque chose de spécial à faire pour activer la connexion?

20
cbare

j'ai donc essayé de reproduire votre problème. Habituellement, je travaille dans Cloud Config et donc je viens de créer un simple script de données utilisateur de test comme celui-ci:

#!/bin/sh

echo "Hello World.  The time is now $(date -R)!" | tee /root/output.txt

echo "I am out of the output file...somewhere?"

yum search git    # just for fun

ls

exit 0

Notez que, avec les scripts CloudInit Shell, les données utilisateur "seront exécutées au niveau de type rc.local lors du premier démarrage. Rc.local-like signifie" très tard dans la séquence de démarrage "" Après la connexion à mon instance (un Machine Linux scientifique) Je suis d'abord allé sur /var/log/boot.log et là j'ai trouvé:

Bonjour le monde. Le temps est maintenant mar., 11 sept. 2013 10:21:37 +0200! je suis

hors du fichier. Fichier journal quelque part? Plugins chargés: changelog, kernel-module, priorités, protectbase, security,: tsflags, versionlock 126 packages exclus en raison de la protection des priorités du référentiel 9 packages exclus en raison des protections du référentiel ^ Mepel/pkgtags
| 581 kB 00:00

=============================== N/S apparié: git ============= ================== ^ [[1mGit ^ [[0; 10mPython.noarch: Python ^ [[1mGit ^ [[0; 10m Library c ^ [[1mgit ^ [[0; 10m.x86_64: une interface Web rapide pour ^ [[1mgit ^ [[0; 10m

...

... (plus de résultats de recherche miam)

...

bin etc lib lost + found mnt proc sbin srv tmp var

boot dev home lib64 media opt root selinux sys usr

(autres trucs non liés)

Donc, comme vous pouvez le voir, mon script a fonctionné et a été correctement enregistré. De plus, comme prévu, j'avais mon journal forcé 'output.txt' dans /root/output.txt avec le contenu:

Bonjour le monde. Le temps est maintenant mar., 11 sept. 2013 10:21:37 +0200!

Alors ... je ne suis pas vraiment sûr de ce qui se passe dans votre script. Assurez-vous que vous quittez le script avec

exit 0   #or some other code

Si cela ne fonctionne toujours pas, vous devez fournir plus d'informations, comme votre script, votre boot.log, votre /etc/rc.local et votre cloudinit.log. btw: quelle est votre version cloudinit?

5
cjdcordeiro

Vous pouvez créer un fichier cloud-config (avec "# cloud-config" en haut) pour vos données utilisateur, utiliser runcmd pour appeler le script, puis activer la journalisation des sorties comme ceci:

output: {all: '| tee -a /var/log/cloud-init-output.log'}
14
Michael

L'emplacement par défaut des données utilisateur d'initialisation cloud est déjà /var/log/cloud-init-output.log, dans AWS, DigitalOcean et la plupart des autres fournisseurs de cloud. Vous n'avez pas besoin de configurer de journalisation supplémentaire pour voir la sortie.

7
mikemaccana