AWS Linux 上 cloud-init-local 的执行顺序

AWS Linux 上 cloud-init-local 的执行顺序

我正在尝试创建一个新的 EC2 实例,并在创建时向该实例提供用户数据。我的用户数据执行一些 bash 命令,这些命令修改另一个应用程序 (myApplication) 的属性文件的参数。目的是在启动之前修改 myApplication 的配置。 myApplication 配置为从 /etc/init.d 启动。

我基本上正在尝试做所描述的事情这里

我看到 /etc/init.d/cloud-init-local 的 chkconfig 配置设置为优先级 50。我假设这是执行我的用户数据脚本的机制。

myApplication 也使用 chkconfig 配置,但优先级为 90。计划是在 myApplication 启动之前执行用户数据。

但是,这不是我所经历的。我可以在 cloud-init-output.log 文件中看到我的用户数据确实被执行,但 myApplication 已经启动。

我的用户数据脚本由 /etc/init.d/cloud-init-local 执行的假设是否错误?我对启动顺序行为的预期是否不正确?

任何帮助表示赞赏,谢谢!

答案1

我认为您遇到了系统错误。 (他们认为这是一个好主意。)特别是为了提高导入的 sysv 脚本的启动速度,它们会并行运行,除非您配置了 LSB 依赖项,而 sysv init 会忽略该依赖项。

解决这个问题的方法是

  1. 将两个 init 脚本转换为具有 systemd 依赖项的 systemd 脚本。
  2. 将依赖项添加到两个初始化脚本。
  3. 选择另一个不会试图比你更聪明的初始化系统。

相关内容