【问题标题】:How can I start all over with terraform?如何从 terraform 重新开始?
【发布时间】:2019-06-23 06:05:13
【问题描述】:

在我的 AWS 基础设施中,我在一个应用程序下存在多个环境,即:

  • foo 应用程序(AWS elasticbeanstalk 应用程序)
  • foo-application-dev (tomcat 环境)
  • foo-application-int
  • foo-application-sys

在这些环境中,SYS 最接近我需要的架构和配置。我希望能够重新创建其他环境,使其看起来像 sys(但命名为 dev,int)。我有最初用于创建一些环境的 terraform 脚本,但现在这些脚本已经偏离了当前状态。我想从 SYS 中获取当前状态,并将其应用于 dev 和 int。我是 terraform 和 stackoverflow 的新手,所以请放慢我的脚步 :)

所有的环境都有一个状态文件,这是我正在尝试做的,但不知道如何去做..

  • 删除所有状态文件
  • 从 SYS 工作区中的 SYS 环境创建一个新的状态文件
  • 将状态复制到 dev 和 int 工作区
  • 应用 dev 和 int 计划并使环境同步。

我希望这是有道理的。

我针对开发环境运行了一个 terraform 计划,看起来它会做的比我预期的要多得多。我的研究告诉我,terraform 会将当前状态与上次运行 terraform 进行比较 - 因此在 env 中手动完成的事情可能会导致问题。我没有足够的信心运行申请,因为担心它会损坏我无法拥有的 SYS 环境。

我想要的:除了命名约定之外,三个非常相同的环境。

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案1】:

    您应该使用the terraform import workflow 将您的 SYS 环境的状态文件与您创建的实际基础架构对齐。请注意,如果您在 SYS 环境中手动创建了大量基础架构,这将需要大量工作。

    但是,在此过程结束时,您将拥有一套完整的用于 SYS 环境的 Terraform 代码,您可以将其转换为可重用组件的模块。 You can then use this module 将 DEV 和 INT 环境创建为 SYS 环境的克隆,但具有不同的命名约定。

    【讨论】:

    • 谢谢,这正是我开始做的。所以很高兴知道我在正确的轨道上。看来我必须删除资源的状态,导入更新的资源。然后我针对 sys 运行一个计划,看看它会采取什么行动,更新脚本,然后继续这样做。我会坚持下去,就像你说的那样工作量很大而且很乏味,但这是值得的。
    猜你喜欢
    • 2022-10-20
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多