[英]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.