理想的 terraform 工作空间项目结构

2023-11-24

我想设置 Terraform 来管理开发/阶段/产品环境。所有环境中的基础设施都是相同的,但每个环境中的变量都存在差异。

既然 Terraform 0.10 中引入了工作区,那么理想的 Terraform 项目结构是什么样的?在命名/标记基础设施时如何引用工作区?


我不建议在静态环境中使用工作区(以前的“环境”),因为它们会增加相当多的复杂性并且更难以跟踪。

您可以对所有环境使用单一文件夹结构,使用工作空间来分隔环境,然后使用基于工作空间的条件值来设置差异。在实践中(尤其是在超过 2 个环境导致嵌套三元语句的情况下),您可能会发现这很难管理。

相反,我仍然主张每个静态环境都有单独的文件夹并使用符号链接使所有 .tf 文件在所有环境中保持相同,并使用 terraform.tfvars 文件来提供每个环境中的任何差异。

我会推荐用于动态环境的工作空间,例如短期审查/实验室环境,因为这提供了很大的灵活性。我目前正在使用它们在 Gitlab CI 中创建审核环境,以便每个分支都可以有一个可选部署的审核环境,可用于手动集成或探索性测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理想的 terraform 工作空间项目结构 的相关文章

随机推荐

  • StartCoroutine/yield 返回模式在 Unity 中到底如何工作?

    我了解了协程的原理 我知道如何达到标准StartCoroutine yield return在 Unity 中的 C 中工作的模式 例如调用一个方法返回IEnumerator via StartCoroutine并在该方法中做某事 做yie
  • Enum 类型属性的 RestSharp 反序列化

    我有一个对象 var testTcc new TrendingConfigurationConfigDto TrendingConfigurationId 1 ConfigId 1 DeviceId 1 Selected true YAxi
  • 手动安装 NPM 包

    我使用node windows installer v0 8 3来安装nodejs 当我尝试像这样安装express时 npm install express 它不起作用 我认为这是因为我的公司使用了代理 所以我从github下载了expr
  • 本机库加载时出现莫名其妙的 UnsatisfiedLinkError

    首先 也是最重要的 我的申请一般有效 我在所有四个 32 位 CPU ABI 上有许多客户端 并且他们运行该应用程序没有任何问题 本机库是为所有四种架构构建的 库就在那里 方法都就位并且命名正确 然而 我偶尔会收到无法加载本机库的异常报告
  • 如何从 pdf 文件中提取附件?

    我有大量 pdf 文档 其中附有 xml 文件 我想提取那些附加的 xml 文件并读取它们 如何使用 net 以编程方式执行此操作 iTextSharp 也非常有能力提取附件 尽管您可能必须使用低级对象来执行此操作 有两种方法可以在 PDF
  • GDB 警告:在 0x7ffff7ffd000 处添加的符号文件系统提供的 DSO 中未找到可加载部分

    abijith bufferOverFlow gdb a out GNU gdb GDB 7 6 Copyright C 2013 Free Software Foundation Inc License GPLv3 GNU GPL ver
  • PHP向多维数组的每个子数组添加元素

    我有一个看起来像这样的数组 array 0 gt array id gt 1 title gt title 1 1 gt array id gt 10 title gt title 10 2 gt array id gt 11 title
  • 简单的 nginx 反向代理似乎会删除一些标头

    我是 nginx 的初学者 我在 8080 上有一个简单的网络服务器 我想在这个相当小的环境中将所有流量传递到它 我的代理似乎可以工作 只是当它到达我的上游服务器时 自定义标头不存在 服务器块如下 我需要添加什么来保留我的自定义标头 在这种
  • IOS共享扩展:如何从笔记帖子中读取内容

    我希望我的应用程序能够解析笔记应用程序帖子以及其他文本编辑器帖子中的文本 因此我创建了一个共享扩展目标 一切工作正常 直到我准备应用程序发布 替换TRUEPREDICATE经过 NSExtensionActivationRule 据说 在我
  • 像谷歌地图一样滑动BottomSheet

    目前我正在使用来自this lib 我想实现这样的图像动画谷歌地图在滑动底页时 我想按照所示的图像一起滑动图像视图 我已经用过这个了帮助链接但没有得到 我已经尝试了很多时间 但找不到任何解决方案 任何帮助都可以 提前致谢 你能行的修改默认B
  • async/await 会阻塞一个线程node.js

    When async await在node js函数中使用 它会阻塞node js线程直到它执行下一行代码吗 async await不会阻塞整个解释器 node js 仍然以单线程方式运行所有 Javascript 即使某些代码正在等待as
  • 使用 JRuby 或包执行时如何使用 rspec 启用颜色?

    我正在尝试使用 JRuby 运行我的 rspec rake spec 结果是 jruby S bundle exec rspec color spec foo spec rb 没有显示颜色 所以我从等式中删除了 Jruby bundle e
  • 如何在android中将json对象转换为字符串..?

    我想转换自JSONObject CNo 80 CName ganesh CMail email protected CMailType home CPhNo 9878987776 CPhNoType home ClientNo 1 to C
  • 如何在android ndk中使用GraphicBuffer

    我问这个问题是参考我的问题的答案如何提高android中opengl es的显示性能 我试图构建使用 GraphicBuffer 和 ndk r9d 的代码 但它说 GraphicBuffer 没有在此范围内声明 对于eglCreateIm
  • 是否可以因自定义运行而永久更新 TeamCity 构建参数的值?

    是否可以通过自定义运行永久更新构建参数的值 例如 考虑一个配置为具有内部版本号格式的内部版本 主要 次要 补丁 build counter Major Minor 和 Patch 并在构建配置中定义为具有某些值 举个例子 假设构建号为 3
  • UIButton 作为 UINavigationbar 按钮

    我有一个标签栏应用程序 在其中一个选项卡栏中我有一个导航控制器 我正在尝试设置一个带有图像的 UIButton 作为导航栏的右侧按钮 UIButton refreshButton UIButton alloc init refreshBut
  • QComboBox 的 setPlaceholderText [重复]

    这个问题在这里已经有答案了 如果没有子类化 我可以在 QComboBox 文本中显示未进行选择的文本 例如 QLineEdit 中的 setPlaceholderText 吗 QComboBox 没有占位符文本选项 但您可以通过两种方式实现
  • 是否可以将两个调试器附加到一个进程?

    是否可以将两个调试器附加到一个进程 最近 我用 HTML5 CSS 开发了一个 Metro 风格应用程序 它调用了用 C 编写的 Window 运行时组件 我想做的是将两个调试器附加到同一个进程 一个用于 JavaScript 另一个用于
  • 刷新页面时 Socket IO 建立多个连接 - Node JS

    我开发了一个抓取工具 可以从所有网站抓取作业并将其保存到数据库中 我已经制作了自己的默认日志 在其中获取消息 错误 信息 等 我正在使用 socket io 来实时更新我的 视图以及数据库 问题是当我启动应用程序时 它完美地建立了套接字和数
  • 理想的 terraform 工作空间项目结构

    我想设置 Terraform 来管理开发 阶段 产品环境 所有环境中的基础设施都是相同的 但每个环境中的变量都存在差异 既然 Terraform 0 10 中引入了工作区 那么理想的 Terraform 项目结构是什么样的 在命名 标记基础