如何在Terraform中获取用户_数据日志

如何在Terraform中获取用户_数据日志,terraform,terraform-provider-aws,terraform0.12+,Terraform,Terraform Provider Aws,Terraform0.12+,我正在用Terraform提供我的基础设施,我正在使用xyz.sh bash脚本,它包括我在GPU机器上的深度学习模型培训 我的问题是,在没有ssh的情况下,如何将xyz.sh bash脚本的日志/完成时间输入到机器中?如果不可能,那么,如果我将ssh连接到机器中,那么当您对EC2实例使用用户数据时,我如何检查脚本是否仍在运行或已完成,内部情况是Terraform将该字符串发送到EC2API,然后EC2基础设施通过API将该字符串提供给实例 EC2实例如何(以及是否)使用该字符串取决于您在EC2

我正在用Terraform提供我的基础设施,我正在使用xyz.sh bash脚本,它包括我在GPU机器上的深度学习模型培训


我的问题是,在没有ssh的情况下,如何将xyz.sh bash脚本的日志/完成时间输入到机器中?如果不可能,那么,如果我将ssh连接到机器中,那么当您对EC2实例使用
用户数据时,我如何检查脚本是否仍在运行或已完成,内部情况是Terraform将该字符串发送到EC2API,然后EC2基础设施通过API将该字符串提供给实例

EC2实例如何(以及是否)使用该字符串取决于您在EC2实例中安装的软件。常见Linux发行版AMI的典型配置是安装并配置为在第一次引导时运行。如果您将AMI与cloud init一起使用,那么将由cloud init从EC2端点检索
用户\u数据
字符串,并将其作为脚本(或,)执行,因此cloud init是负责发送该进程产生的任何日志的系统

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


Terraform参与这个过程只是将给定的
user\u数据
字符串发送到EC2 API,因此Terraform无法了解创建实例后会发生什么。除非您提交的脚本包含一个在某处报告其进度的步骤,否则除了从EC2实例本身中检查cloud init日志文件之外,没有内置的方法来确定该步骤。

当您对EC2实例使用
用户\u数据时,内部情况是Terraform将该字符串发送到EC2API,然后EC2基础设施通过API将该字符串提供给实例

EC2实例如何(以及是否)使用该字符串取决于您在EC2实例中安装的软件。常见Linux发行版AMI的典型配置是安装并配置为在第一次引导时运行。如果您将AMI与cloud init一起使用,那么将由cloud init从EC2端点检索
用户\u数据
字符串,并将其作为脚本(或,)执行,因此cloud init是负责发送该进程产生的任何日志的系统

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


Terraform参与这个过程只是将给定的
user\u数据
字符串发送到EC2 API,因此Terraform无法了解创建实例后会发生什么。除非您提交的脚本包含一个在某处报告其进度的步骤,否则除了从EC2实例本身中检查cloud init日志文件之外,没有内置的方法来确定该步骤。

您只想检查您的用户数据脚本是否已完成?这是作为实例还是自动缩放组部署的?是否只想检查用户数据脚本是否已完成?这是作为实例还是自动缩放组部署的?