ubuntu 每次启动时的云初始化脚本不执行任何操作

sq1bmfud  于 2023-04-29  发布在  其他
关注(0)|答案(4)|浏览(167)

我是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,但没有错误或任何不寻常的东西。
我显然错过了一些东西,所以任何在正确方向的提示将非常感谢!
谢谢!

nwnhqdif

nwnhqdif1#

看了源代码,脚本必须是可执行的.这会让它工作
sudo chmod 744 script.sh

whlutmcx

whlutmcx2#

公认的答案是不够的海事组织,所以在我花了我整个上午得到的底部,我会写我的看法,因为我相信人们会发现这是有用的,保存时间。
如果scripts-user模块被设置为总是运行,那么cloudinit的runcmd:部分将在每次 Boot 时运行。
这可以通过在cloud-config文件中添加以下部分来完成,

cloud_final_modules:
 - [scripts-user, always]

如果你想在每次 Boot 时运行某些脚本,那么你需要在
/var/lib/cloud/scripts/per-boot/文件夹。要实现这一点,请将以下部分添加到cloud-config文件中,

write_files:
  - content: |
      #!/bin/bash
      echo "Hello World.  The time is now $(date -R)!"
    path: /var/lib/cloud/scripts/per-boot/myScript.sh
    permissions: "0755"

现在,每次重新启动EC2示例时,它都会运行myScript.sh
在Rhel 8上安装amazon ssm代理的cloud-config的完整示例

#cloud-config
cloud_final_modules:
 - rightscale_userdata
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - keys-to-console
 - phone-home
 - final-message

write_files:
  - content: |
      #!/bin/bash
      echo "Hello World.  The time is now $(date -R)!"
    path: /var/lib/cloud/scripts/per-boot/myScript.sh
    permissions: "0755"

runcmd:
  - sudo dnf install -y python3
  - sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
  - sudo systemctl enable amazon-ssm-agent
  - sudo systemctl start amazon-ssm-agent

请注意,在这种情况下,myScript.sh在第一次 Boot 时先于runcmd:执行,后续引导仅执行myScript.sh

eqqqjvef

eqqqjvef3#

如果我们想在cloud-init中调试user-data,我们可以尝试以下步骤:

  1. rm -rf /var/lib/cloud/*
    1.云初始化
  2. cloud-init modules -m final
    使用上述命令,cloud-init将重新运行。我们可以检查云初始化。/var/log/cloud-init下的日志。检查它是否成功执行。
ovfsdjhp

ovfsdjhp4#

除非将脚本用户设置为始终运行,否则它不会运行。更多细节请参见this answer(以及如何让脚本在重启时运行的一般说明)。

相关问题