MongoDB 的启动脚本在启动的实例上使用 EC2 用户数据

Startup script for MongoDB using EC2 user data on a launched instance

我们的 r4.xLarge EC2 实例中有一个 MongoDb 运行。我只是发现每次我们的实例关闭(出于任何原因)并重新启动时,mongo 也不会启动。

我们在 EC2 实例的用户数据部分添加了如下启动脚本。

#!/bin/bash

service mongod restart

service mongod status

我们仍然看到与以前相同的行为,命令没有执行,需要通过 SSH 进入实例以启动重启。

任何人都可以指出脚本的任何问题或提供任何关于此的具体见解吗?

谢谢

所以经过一些研究我发现,由于我们在第一次启动实例时没有添加用户数据脚本,所以我不得不在 #!/bin/bash

脚本现在看起来像这样:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
sudo service mongod restart
sudo service mongod status

这个故事的寓意是,如果您忘记在实例启动时添加实例用户数据脚本并在事后添加,请在 #!/bin/bash

上方附加该部分

这是因为:

  • AWS 使用 mime-multipart 附加用户数据文件。
  • 它还使用 scripts-user, always 来 运行 文件。