如何在 Terraform 中获取 user_data 日志

Ank*_*ngh 1 terraform terraform-provider-aws terraform0.12+

我正在使用 Terraform 配置我的 Infracture,我正在使用 xyz.sh bash 脚本,该脚本包含我在 GPU 机器上的深度学习模型训练。

我的问题是,如何在没有 ssh 进入机器的情况下获取 xyz.sh bash 脚本的日志/完成时间?如果不可能,那么如果我将 ssh 进入机器,我如何检查脚本是否仍在运行或已完成

Mar*_*ins 5

当您user_data用于 EC2 实例时,内部发生的事情是 Terraform 将该字符串发送到 EC2 API,然后 EC2 基础设施通过实例元数据和用户数据API将该字符串提供给该实例。

EC2 实例如何(以及是否)使用该字符串取决于您在 EC2 实例中安装的软件。常见 Linux 发行版 AMI 的典型配置是安装cloud-init并将其配置为在首次启动时运行。如果您将 AMI 与 cloud-init 一起使用,则 cloud-inituser_data将从 EC2 端点检索字符串并将其作为脚本(或其他解释)执行,因此 cloud-init 是负责发出任何该过程产生的日志。

您可以在测试和调试 cloud-init 中阅读有关调试 cloud-init 的更多信息,其中提到默认cloud-init将日志写入/var/log/cloud-init.log(某些 Linux 发行版可能会对此进行自定义),并且您可以使用cloud-init analyze子命令从该日志文件中检索信息。

Terraform 参与此过程只是将给定的user_data字符串发送到 EC2 API,因此 Terraform 无法了解创建实例后发生的情况。除非您提交的脚本包含在某处报告其进度的步骤,否则除了从 EC2 实例本身检查 cloud-init 日志文件之外,没有其他内置方法可以确定这一点。