首页 > 解决方案 > 使用 terraform 在 ec2 中部署 .sh 文件

问题描述

我正在尝试使用 terraform 将位于我的本地主机中的 *.sh 文件部署到 ec2。请注意,我通过 terraform 创建的所有基础设施。因此,对于将文件复制到远程主机,我正在使用 terraform 配置程序。问题是,我怎么能找出 ubuntu 用户的 private_key 或密码以进​​行部署。或者也许有人知道不同的解决方案。在 ec2 中运行 .sh 文件的目标。在此先感谢)

标签: amazon-ec2terraformdevops

解决方案


如果您想使用配置器来执行此操作,并且您拥有本地执行 Terraform 的私钥,那么 SCSI-9 的解决方案应该可以正常工作。

但是,如果您不能确保私钥可用,那么您始终可以执行类似 Elastic Beanstalk 如何部署和使用 S3 作为中介的操作。

像这样的东西。

resource "aws_s3_bucket_object" "script" {
  bucket = module.s3_bucket.bucket_name
  key = regex("([^/]+$)", var.script_file)[0]
  source = var.script_file
  etag = filemd5(var.script_file)
}

resource "aws_instance" "this" {
  depends_on = [aws_s3_bucket_object.script]
  user_data = templatefile("${path.module}/.scripts/userdata.sh" {
    s3_bucket = module.s3_bucket.bucket_name
    object_key = aws_s3_bucket_object.script.id
  }
  ...
}

然后在你的用户数据脚本中的某个地方,你可以从 s3 获取对象。

aws s3 cp s3://${s3_bucket}/${object_key} /some/path

当然,您还必须确保实例具有从 s3 存储桶读取的权限,您可以通过使用适当的策略将角色附加到 EC2 实例来做到这一点。


推荐阅读