微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Terraform中获取user_data日志

如何解决如何在Terraform中获取user_data日志

我正在用terraform设置Infracture,并且正在使用xyz.sh bash脚本,该脚本包含我在GPU机器上进行的Deeplearning模型训练。

我的问题是,我如何在不使用SSH的情况下获取xyz.sh bash脚本的日志/完成时间?如果不可能,那么,如果我将ssh插入计算机,如何检查脚本仍在运行或完成

解决方法

当您将user_data用于EC2实例时,内部发生的事情是Terraform将该字符串发送到EC2 API,然后EC2基础结构通过Instance metadata and user data API将字符串提供给实例。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。