【问题标题】:Cloud-init per-boot script doing nothingCloud-init 每次启动脚本什么都不做
【发布时间】:2012-08-27 17:43:17
【问题描述】:

我是 cloud-init 的新手,我的最终目标是每次 EC2 Spot 实例激活时运行一个 R 脚本,但为了测试它,我创建了一个按需 Ubuntu 12.04 实例并创建了一个简单的脚本,但是重新启动后没有任何反应。以下是我采取的步骤:

  • 启动了新的 Ubunut 12.04 实例
  • 导航到/var/lib/cloud/scripts/per-boot
  • sudo vi script.sh
  • 添加了以下代码:

#!/bin/sh
回声“测试”

  • sudo reboot

此时我想我应该在实例重新启动时看到“测试”打印,但那里什么也没有。我去看看/var/log/cloud-init.log,但没有错误或任何异常。

我显然遗漏了一些东西,所以任何正确方向的提示都将不胜感激!

谢谢!

【问题讨论】:

  • 我终于设法使用rc.local 做到了这一点,这并没有回答我原来的问题,因为我仍然不知道为什么脚本没有加载,但它可能会对处于相同情况的人有所帮助作为我的

标签: ubuntu amazon-ec2 cloud-init


【解决方案1】:

除非脚本用户设置为始终运行,否则它不会运行。请参阅this answer 了解更多详细信息(以及有关如何让脚本在重新启动时运行的说明)。

【讨论】:

  • 这是正确的吗?这个问题是关于/var/lib/cloud/scripts/per-boot/* 而你链接到的问题是关于让/var/lib/cloud/instance/user-data.txt 在每次启动时运行。答案中的最后一句话建议使用前者代替后者。
【解决方案2】:

如果我们想在cloud-init中调试用户数据,我们可以尝试以下步骤:

  1. rm -rf /var/lib/cloud/*
  2. 云初始化初始化
  3. cloud-init 模块 -m final

使用上述命令,重新运行 cloud-init。并且我们可以查看/var/log/cloud-init.log下的cloud-init.log,看看是否执行成功。

【讨论】:

  • 执行此操作后,我在重复运行模块时收到错误IsADirectoryError: [Errno 21] Is a directory: '/var/lib/cloud/instance'。我不想丢失/重新创建我的/var/lib/cloud/scripts/per-boot 脚本,所以我进行了实验,发现sudo rm -rf /var/lib/cloud/instance /var/lib/cloud/instances/*; sudo cloud-init modules -m final 是允许我重新测试所需的最小清理。感谢您的领导!
【解决方案3】:

看了source code,脚本一定是可执行的。这样就可以了

sudo chmod 744 script.sh

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2011-09-22
    • 2021-08-06
    • 2017-02-07
    • 2018-10-09
    • 2023-01-30
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多