Amazon ec2 在cloud init运行userdata脚本之后,我如何让东西(例如tomcat)运行?
简短版本: 在cloud init在EC2上运行了Amazon ec2 在cloud init运行userdata脚本之后,我如何让东西(例如tomcat)运行?,amazon-ec2,user-data,cloud-init,Amazon Ec2,User Data,Cloud Init,简短版本: 在cloud init在EC2上运行了userdata脚本之后,如何使init.d脚本运行 长版本: 我们的部署过程是使用安装在AMI上的所有设备(tomcat、nginx、应用程序等)构建AMI,但遗漏了某些配置值。在启动时,userdata脚本添加缺少的配置值,然后应用程序堆栈可以启动 我们当前的ec2基于官方Debian AMIs的旧版本,该版本的脚本ec2运行用户数据。此脚本在引导时运行,下载并运行EC2s用户数据。在构建AMI时,我只需编辑tomcat、nginx等的ini
userdata
脚本之后,如何使init.d脚本运行
长版本:
我们的部署过程是使用安装在AMI上的所有设备(tomcat、nginx、应用程序等)构建AMI,但遗漏了某些配置值。在启动时,userdata脚本添加缺少的配置值,然后应用程序堆栈可以启动
我们当前的ec2基于官方Debian AMIs的旧版本,该版本的脚本ec2运行用户数据
。此脚本在引导时运行,下载并运行EC2s用户数据。在构建AMI时,我只需编辑tomcat、nginx等的init.d脚本,将ec2运行用户数据包含在其“Required Start:”行中,以便在运行用户数据之后启动
不幸的是,这种方法不再可行,因为我们希望开始使用基于hvm的AMI,它安装了cloud init,而不是ec2运行用户数据。但我无法弄清楚cloud init是如何工作的,如何让流程正常工作
据我所知,userdata脚本由cloudfinal步骤运行,但cloudfinal的“Required Start:”行中有$all。我可以移除它,但我不知道会有什么后果
我试着让tomcat etc在cloud init或cloud config之后运行,但用户数据到那时还没有运行。此外,看起来cloud init和cloud config启动进程随后退出,这可能解释了为什么cloud final需要在所需的启动中包含$all
更多信息:
。如果Tomcat在更换
之前尝试运行,它将无法启动#/bin/bash
塞德-我是!!{要使用的新值,在部署时确定}!'/etc/appname/application.conf
通过这样做,在tomcat运行之前,/etc/appname/application.conf中的文本将被替换。但正如我上面所说的,我想改为使用cloud init,我不知道在cloud init运行userdata之后,我需要做什么才能让tomcat启动。我得到的印象是cloud init直到进程的很晚才运行userdata。我可以在最后将userdata脚本更改为包含“/etc/init.d/tomcat restart”,但让tomcat无法启动然后重新启动似乎有点愚蠢。我建议提供一些示例代码来向我们展示您所说的内容,例如userdata文件,
ec2运行用户数据
第二,如果您需要让tomcat自动运行,安装tomcat时,您应该在/etc/init.d和rc3.d下设置自动启动脚本,这样您就不必手动编辑userdata中的某些内容。@SamBarham我面临着一个几乎相同的问题-您有解决方案吗?我们有,但我对细节有点模糊。我认为解决方案的一部分是将bash脚本放入/var/lib/cloud/scripts/per-one和/var/lib/cloud/scripts/per-boot中,但我认为它也设法以某种方式重写了一些内容,因此我们不需要在配置文件中进行任何文本替换。