【问题标题】:Executing a script at each restart of an AWS EC2 instance每次重启 AWS EC2 实例时执行脚本
【发布时间】:2019-04-07 21:15:37
【问题描述】:

我想问你这个问题:是否可以在每次重启 AWS Ec2 实例时执行此脚本?

#!/bin/bash
sudo apt update
sudo install docker
sudo install docker-compose
rm -rf .git
rm -rf /
git clone <URL>
git pull
docker-compose build
docker-compose up 

假设我已经安装了 Ubuntu。我试图将其插入用户数据中,但它不起作用......有人可以帮助我吗?提前感谢您的帮助!!!

【问题讨论】:

  • 那么当您重新启动实例时,您希望机器在启动后执行该脚本吗?你不能在新贵或 systemd 等任何守护进程中运行它吗?
  • 是的,我想再次执行该脚本,但我的问题是 Ec2 似乎根本无法执行它...

标签: bash amazon-web-services ubuntu amazon-ec2


【解决方案1】:

首先,您应该修复您的 bash 脚本。

  1. 第 3 行:缺少 aptsudo apt install docker
  2. 第 4 行:缺少 aptsudo apt install docker-compose
  3. 第 6 行:警告,您正在尝试在没有 sudo 的情况下删除此处的 /
  4. 第 8 行:要执行 git pull,您需要位于之前克隆的存储库的正确路径中。

要对您的 user-data bash 脚本进行故障排除,您需要检查登录:

  • /var/log/cloud-init.log
  • /var/log/cloud-init-output.log

其次,如果您想在每次 EC2 实例从停止状态重新启动时执行此 bash 脚本,请遵循以下文档。仅供参考,用户数据的标准行为是在第一个引导周期只执行一次。

来自 AWS 文档:

默认情况下,用户数据脚本和 cloud-init 指令仅运行 在启动实例的第一个引导周期内。然而,你 可以配置您的用户数据脚本和 cloud-init 指令以运行 每次实例从停止状态重新启动时。更多 信息,请参阅如何在初始启动后执行用户数据 我的 EC2 实例?在 AWS 知识中心。

【讨论】:

  • 只需添加引导脚本似乎错误。 OP 可能需要将“apt-get”添加到组合中,因为“sudo install docker”将不起作用,因此您可能会在那里遇到错误。登录实例后,您可以通过检查 /var/log/cloud-init-output.log 中的日志来检查引导脚本是否正常运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2017-08-20
  • 2011-09-22
  • 2017-06-10
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
相关资源
最近更新 更多