Lors de la création d'une nouvelle instance AWS EC2 à l'aide de l'API de ligne de commande EC2, je transmets certaines données utilisateur à une nouvelle instance.
Maintenant, comment ai-je pu savoir si ces données utilisateur avaient été exécutées ou non?
Comment dois-je le vérifier?
Vous pouvez vérifier en utilisant les étapes suivantes
/var/log/cloud-init.log
et/var/log/cloud-init-output.log
Vous pouvez voir tous les journaux de votre script de données utilisateur et cela créera également /etc/cloud
dossier.
Juste pour référence, vous pouvez vérifier si les données utilisateur sont exécutées en consultant le journal système à partir de la console EC2. Faites un clic droit sur votre instance - Paramètres d'instance - Obtenir le journal système
Cela devrait ouvrir une fenêtre modale avec les journaux système
Le débogage des scripts de données utilisateur sur Amazon EC2 est en effet un peu gênant, car il n'y a généralement aucun moyen de se connecter activement au processus, donc on aimerait idéalement gagner Real accès en temps à la sortie du script de données utilisateur comme résumé dans l'article d'Eric Hammond Journalisation de la sortie du script de données utilisateur sur les instances EC2 :
Les dernières AMI d'Ubuntu envoient toujours un script de données utilisateur à la sortie de la console, vous pouvez donc le visualiser à distance, mais il n'est plus disponible dans syslog sur l'instance. La sortie de la console n'est mise à jour que quelques minutes après le démarrage, le redémarrage ou la fin de l'instance, ce qui vous oblige à attendre de voir la sortie du script de données utilisateur ainsi qu'à ne pas capturer la sortie qui pourrait sortir après l'instantané.
Selon votre configuration, vous souhaiterez peut-être envoyer les journaux à une installation de journalisation à distance comme Loggly tout de suite, mais le faire installer assez tôt peut évidemment être une sorte de problème de poulet/œuf (bien que cela fonctionne très bien si l'AMI se trouve être déjà configuré comme tel).
Activez la journalisation de vos données utilisateur
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
Prenez soin de mettre un espace entre les deux>> caractères au début de l'instruction.
Voici un script complet de données utilisateur à titre d'exemple:
#!/bin/bash -ex
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
echo BEGIN
date '+%Y-%m-%d %H:%M:%S'
echo END
Demandez à vos données utilisateur de créer un fichier dans le répertoire/tmp de votre ec2 pour voir si cela fonctionne:
bob.txt:
#!/bin/sh
echo 'Woot!' > /home/ec2-user/user-script-output.txt
Lancez ensuite avec:
ec2-run-instances -f bob.txt -t t1.micro -g ServerPolicy AMI-05cf5c6d -v