我是cloud-init的新手,我的最终目标是每次EC2 Spot示例激活时运行R脚本,但为了测试它,我创建了一个按需Ubuntu 12。04示例并创建了一个简单的脚本,但重新启动后什么也没有发生。以下是我采取的步骤:
- 发布了新的Ubuntu 12。04示例
- 导航到
/var/lib/cloud/scripts/per-boot
sudo vi script.sh
- 添加以下代码:
!/bin/sh
回波“试验”
sudo reboot
此时,我想在示例重新引导时应该看到一个“test”打印,但那里什么也没有。我去看了看/var/log/cloud-init.log
,但没有错误或任何不寻常的东西。
我显然错过了一些东西,所以任何在正确方向的提示将非常感谢!
谢谢!
4条答案
按热度按时间nwnhqdif1#
看了源代码,脚本必须是可执行的.这会让它工作
sudo chmod 744 script.sh
whlutmcx2#
公认的答案是不够的海事组织,所以在我花了我整个上午得到的底部,我会写我的看法,因为我相信人们会发现这是有用的,保存时间。
如果
scripts-user
模块被设置为总是运行,那么cloudinit的runcmd:
部分将在每次 Boot 时运行。这可以通过在cloud-config文件中添加以下部分来完成,
如果你想在每次 Boot 时运行某些脚本,那么你需要在
/var/lib/cloud/scripts/per-boot/
文件夹。要实现这一点,请将以下部分添加到cloud-config文件中,现在,每次重新启动EC2示例时,它都会运行
myScript.sh
在Rhel 8上安装amazon ssm代理的
cloud-config
的完整示例请注意,在这种情况下,
myScript.sh
在第一次 Boot 时先于runcmd:
执行,后续引导仅执行myScript.sh
eqqqjvef3#
如果我们想在cloud-init中调试user-data,我们可以尝试以下步骤:
1.云初始化
使用上述命令,cloud-init将重新运行。我们可以检查云初始化。/var/log/cloud-init下的日志。检查它是否成功执行。
ovfsdjhp4#
除非将脚本用户设置为始终运行,否则它不会运行。更多细节请参见this answer(以及如何让脚本在重启时运行的一般说明)。