我如何在每次EC2实例启动时运行cloud-init启动脚本?
|
我有一个运行基于Amazon Linux AMI的AMI的EC2实例。与所有此类AMI一样,它支持cloud-init系统,用于基于传递到每个实例中的用户数据来运行启动脚本。在这种情况下,我的用户数据输入恰好是包含其他几个启动脚本的包含文件:
#include
http://s3.amazonaws.com/path/to/script/1
http://s3.amazonaws.com/path/to/script/2
第一次启动实例时,cloud-init启动脚本会正确运行。但是,如果我对该实例进行软重启(例如,通过运行sudo shutdown -r now
),则该实例将再次启动,而无需第二次运行启动脚本。如果进入系统日志,可以看到:
Running cloud-init user-scripts
user-scripts already ran once-per-instance
[ OK ]
这不是我想要的-我可以看到使启动脚本在每个实例生存期内仅运行一次的实用程序,但就我而言,这些脚本应在实例每次启动时运行,就像普通的启动脚本一样。
我意识到一个可能的解决方案是在第一次运行后手动将自己的脚本插入rc.local
中。但是,这似乎很麻烦,因为cloud-init和rc.d环境存在细微差别,并且我现在必须分别在首次启动和所有后续启动时调试脚本。
有谁知道我如何告诉cloud-init始终运行我的脚本?当然,这听起来像cloud-init的设计师会考虑的事情。
没有找到相关结果
已邀请:
7 个回复
贡炮逗握惫
可以在引导后进行修改,或者可以通过用户数据插入覆盖此节的cloud-config数据。即,在用户数据中,您可以提供:
就像您在说明中所做的那样,也可以将其“ #included”。 不幸的是,现在您不能修改\'cloud_final_modules \',而只能对其进行覆盖。我希望可以在某个时候添加修改配置节的功能。 在以下位置的cloud-config文档中有关于此的更多信息 http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/doc/examples/cloud-config.txt 另外,您可以将文件放在/ var / lib / cloud / scripts / per-boot中,它们将通过\'scripts-per-boot \'路径运行。
丧泉缝锋
中,编辑以下行:
至
祝好运 !
浆错
\“ bootcmd \”:
还要注意bootcmd中的“ cloud-init-per \”命令示例。在它的帮助下:
博沮富教全
中,并命名为
(末尾的哈希部分在每次引导时都会更改)。因此,将以下用户数据脚本添加到Include文件的末尾即可解决问题:
我不确定这是否会对其他任何事情产生不利影响,但是在我的实验中确实有效。
摊揉售
殿虫
这是DynamoDb跨区域复制过程的设置。
悸翠疮武昏