【问题标题】:how to run init sql after I create a new postgre instance in terraform在 terraform 中创建新的 postgre 实例后如何运行 init sql
【发布时间】:2018-03-13 05:01:51
【问题描述】:

我很好create a new rds (postgre) instance with terraform。但是我需要在实例准备好后运行一个 sql (init.sql)。

这条sql只需要运行一次,我该怎么办?

我试过local-execremote-exec,我不能。 RDS 在 VPC 的私有子网(数据层)中创建,它是 aws 托管服务。没有办法登录运行sql cli。

【问题讨论】:

  • 你到底想在这里实现什么?您是否需要在实例上创建架构/角色?或者您有想要在创建时运行的特定 SQL 脚本?
  • 类似的,比如创建数据库,带init数据的表。
  • 目前没有办法做到这一点,我相信。理想的方法是从您的应用程序服务器(或类似的东西)中进行。一些选项,在许多选项中 1. 如果您使用 Terraform 部署您的应用程序服务器并假设它是 EC2,您可以首先创建 RDS 实例然后创建您的应用程序服务器并使用 remote-exec 运行您的 init.sql 脚本. 2. 如果您使用任何 CI 管道来部署代码,您可以添加初始化数据库作为另一个步骤。 3. 您还可以在应用程序中添加逻辑以在第一次启动时初始化您的数据库。

标签: terraform rds sqlclient


【解决方案1】:

我也有同样的要求。我以set a schedule task in ECS 的解决方案结束。将计划时间设置为过去的日期,它不会运行,直到我用当前时间手动激活它。

因此,在 terraform 创建数据库后,我登录 aws 控制台以激活此计划任务以仅运行一次

如果需要应用新的架构,它将在未来很有用。

我还调整了 psql 客户端 docker 镜像 (https://hub.docker.com/r/jbergknoff/postgresql-client/) 并在其中添加了 aws cli,这样我就可以从 s3 复制 sql 并运行更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2021-01-15
    相关资源
    最近更新 更多