【问题标题】:Running script on EC2 launch automatically during cluster creation在集群创建期间自动启动 EC2 上的运行脚本
【发布时间】:2020-07-07 13:14:35
【问题描述】:

我正在使用 ecs-cli 创建一个 ECS 集群(EC2 启动类型)。创建 EC2 实例后,我想运行一个脚本来修改 /etc/sysctl.conf 中的 vm.max_map_count 设置。目前,我通过 ssh 进入实例并以 sudo 身份运行脚本来手动执行此操作。

是否可以在作为集群创建的一部分创建的 EC2 实例上运行自动化脚本?任何参考/文档都会非常有帮助。

谢谢

【问题讨论】:

  • 最好的地方是 UserData,我猜你已经知道了?在创建集群时执行此操作为时过早,您希望在创建 EC2 时执行此操作。

标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-ecs


【解决方案1】:

由于您已使用 amazon-cloudformation 标记您的问题,我假设您正在使用 CFN 定义您的 ECS 容器实例。

如果是这样,您可以在您的AWS::EC2::Instance 中使用UserData 在启动实例时执行命令:

您可能已经在使用它来为在您的实例上运行的 ECS 代理指定集群名称。因此,您的UserData 中可能已经有类似的内容;

echo ECS_CLUSTER=${ClusterName} >> /etc/ecs/ecs.config
echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config  

您可以使用可以修改/etc/sysctl.conf 的额外命令来扩展UserData

还有其他一些可能性,例如在您的实例启动时使用 SSM 状态管理器执行操作。

【讨论】:

  • 我是 AWS 新手。 Cloudformation 无疑是一种选择。但是假设我们不走那条路,是否可以在 EC2 实例自动启动后调用 Userdata
  • @Chubsdad UserData 仅在启动时执行。您可以查看SSM Run Command 在实例启动后运行命令。它比 ssh'ing 进入他们更好。您还可以使用Lunch Templates 和Lunch Configuration 来指定UserData。顺便说一句,如果你不使用 CFN,为什么要使用 cloudformation 标签?
  • ecs-cli up 的 --extra-user-data 参数是否可以选择?从我阅读的内容来看,它似乎是我所需要的。我添加了 CFN,因为如果没有其他方法,这当然是我可以考虑的一个选项
  • @Chubsdad 是的,--extra-user-data 和我写的完全一样,但我写的是 cfn。标志:“为您的容器实例指定其他用户数据。” :-)
  • 我在当前文件夹中保留了一个“userdata”文件,并将其作为 --extra-user-data 的参数,如“--extra-user-data ./userdata”。然而,这并没有按预期工作(elasticsearch docker 容器无法开始引用低 vm.max_map)。我的用户数据文件就像'sudo sysctl -w vm.max_map_count=524288'。我错过了什么?
猜你喜欢
  • 2020-10-15
  • 2018-10-28
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
相关资源
最近更新 更多