繁体   English   中英

EC2 cloud-init 脚本未在用户数据更新时更新

[英]EC2 cloud-init script not updated on userdata update

我有以下用户数据来拉取和运行 docker 图像:

#cloud-config
cloud_final_modules:
 - [scripts-user, always]
runcmd:
  - "docker pull private-image:commit-b8212047"
  - "docker run private-image:commit-b8212047"

它工作得很好。

但是当我更新用户数据并将更新的脚本与另一个 Docker 图像标签放在一起时,新脚本版本不会执行。 脚本的旧初始版本始终在实例重启或启动/停止时执行,初始 Docker 映像版本始终被拉取并运行。 如何解决?

更新:我的调查使我找到了包含我的脚本的/var/lib/cloud/instance/scripts/runcmd文件。 但是即使/var/lib/cloud/instance/cloud-config.txt/var/lib/cloud/instance/user-data.txt有更新的数据,它的内容也不会更新。 为什么它不更新脚本?

问题是 runcmd 脚本通过以下指令(默认设置)复制到磁盘:

cloud_config_modules:
 - runcmd

但默认情况下,cloud-init 使用instance重复值。 这意味着runcmd模块将只在一个实例上执行一次。 要解决这个问题,并在每次启动时执行我的脚本,需要以下配置:

cloud_config_modules: 
 - [runcmd, always] # copies the runcmd script from userdata to disk

cloud_final_modules: 
 - [scripts-user, always] # executes the runcmd script

请注意,我在这里省略了正确实例配置可能需要的其他模块。 我只是突出显示了解决我的问题的设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM