Where to find logs for a cloud-init user-data script?

梦想的初衷 提交于 2019-12-09 14:29:29

问题


I'm initializing spot instances running a derivative of the standard Ubuntu 13.04 AMI by pasting a shell script into the user-data field.

This works. The script runs. But it's difficult to debug because I can't figure out where the output of the script is being logged, if anywhere.

I've looked in /var/log/cloud-init.log, which seems to contain a bunch of stuff that would be relevant to debugging cloud-init, itself, but nothing about my script. I grepped in /var/log and found nothing.

Is there something special I have to do to turn logging on?


回答1:


so I tried to replicate your problem. Usually I work in Cloud Config and therefore I just created a simple test user-data script like this:

#!/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

Notice that, with CloudInit shell scripts, the user-data "will be executed at rc.local-like level during first boot. rc.local-like means 'very late in the boot sequence'" After logging in into my instance (a Scientific Linux machine) I first went to /var/log/boot.log and there I found:

Hello World. The time is now Wed, 11 Sep 2013 10:21:37 +0200! I am

out of the file. Log file somewhere? Loaded plugins: changelog, kernel-module, priorities, protectbase, security, : tsflags, versionlock 126 packages excluded due to repository priority protections 9 packages excluded due to repository protections ^Mepel/pkgtags
| 581 kB 00:00

=============================== N/S Matched: git =============================== ^[[1mGit^[[0;10mPython.noarch : Python ^[[1mGit^[[0;10m Library c^[[1mgit^[[0;10m.x86_64 : A fast web interface for ^[[1mgit^[[0;10m

...

... (more yum search output)

...

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

boot dev home lib64 media opt root selinux sys usr

(other unrelated stuff)

So, as you can see, my script ran and was rightly logged. Also, as expected, I had my forced log 'output.txt' in /root/output.txt with the content:

Hello World. The time is now Wed, 11 Sep 2013 10:21:37 +0200!

So...I am not really sure what is happening in you script. Make sure you're exiting the script with

exit 0   #or some other code

If it still doesn't work, you should provide more info, like your script, your boot.log, your /etc/rc.local, and your cloudinit.log. btw: what is your cloudinit version?




回答2:


You could create a cloud-config file (with "#cloud-config" at the top) for your userdata, use runcmd to call the script, and then enable output logging like this:

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



回答3:


The default location for cloud init user data is already /var/log/cloud-init-output.log, in both AWS, DigitalOcean and most other cloud providers. You don't need to set up any additional logging to see the output.



来源:https://stackoverflow.com/questions/18691867/where-to-find-logs-for-a-cloud-init-user-data-script

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!