How to run cloud-init manually?

元气小坏坏 提交于 2019-12-20 08:37:32

问题


I'm writing a CloudFormation template and I'm trying to debug the user-data script I provide in the template. How can I run the cloud-init manually and make it perform the same actions it does when starting a new instance?


回答1:


You can just run it like this:

/usr/bin/cloud-init -d init

This runs the cloud init setup with the initial modules. (The -d option is for debug) If want to run all the modules you have to run:

/usr/bin/cloud-init -d modules

Keep in mind that the second time you run these it doesn't do much since it has already run at boot time. To force to run after boot time you can run from the command line:

( cd /var/lib/cloud/ && sudo rm -rf * )

In older versions the equivalent of cloud-init init is:

/usr/bin/cloud-init start

You may also find this question useful although it applies to the older versions of cloud-init: How do I make cloud-init startup scripts run every time my EC2 instance boots?

The documentation for cloud init here just gives you examples. But it doesn't explain the command line options or each one of the modules, so you have to play around with different values in the config to get your desired results. Of course you can also look at the code.




回答2:


Kudus to @Rico, and also, if you want to run a single module - either for testing or because your distro doesn't enable a module by default (hi Precise!), you can

/usr/bin/cloud-init -d single -n <module-name>

For example when my distro doesn't run write_files by default (like a lot of old distros), I use this at the top of runcmd:

runcmd:
 - /usr/bin/cloud-init -d single -n write-files

[I know its not really an answer to the OP, but when looking to solve my problem this question was one of the top results, so I figure other people might find this useful]




回答3:


On most Linux distros (including CentOS and Ubuntu), you can restart the cloud-init service using systemctl:

systemctl restart cloud-init

And then check the output of the journal to see the results:

journalctl -f -u cloud-init



回答4:


rm -f /var/log/cloud-init.log \
&& rm -Rf /var/lib/cloud/* \
&& cloud-init -d init \
&& cloud-init -d modules --mode final


来源:https://stackoverflow.com/questions/23151425/how-to-run-cloud-init-manually

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