比较并将terraform文件从dev环境提升到prod环境。
tfpromote的Python项目详细描述
用于通过环境(dev、stage和 产品等)。自动比较和复制适当的.tf文件 从一个环境转到另一个环境。所有你能做的事 命令行,但这可以节省大量的输入,并有助于减少 在具有多个 微服务都需要Terraform部署。
必需的目录结构
此工具仅适用于非常规范的地形项目 结构。它假定如下:
- 将terraform存储在每个环境的目录中
- 在每个以环境名称为前缀的目录文件中(例如 dev-)具有特定于该环境的变量,并且预期 与其他环境不同
- 不带环境名称前缀的文件应该能够 从源环境升级(复制)到目标环境 一模一样。
这是所需目录结构的示例:
app terraform dev dev-variables.tf dev-provider.tf iam.tf ecs.tf stage stage-variables.tf stage-provider.tf iam.tf ecs.tf prod prod-variables.tf prod-provider.tf iam.tf ecs.tf
安装
$ pip install tfpromote
用法
tfpromote将分析源和目标环境,向您显示 差异,如果要将.tf文件从源复制到 目标环境。
最简单的工作流是让tfpromote自动确定 从和到路径。从目标或“到路径”开始使用 tfpromote或tfp和tfpromote将计算出较低的 你想要从你的出发点出发的环境。
$ pwd /devel/myapp/terraform/stage $ tfpromote TFPromote From path: /devel/myapp/terraform/dev To path: /devel/myapp/terraform/stage Continue? (CTRL+C to abort)
像馅饼一样容易。
或者您可以直接指定自和到路径。注意如果你 只提供from path或to path,但不能同时提供两者,tfpromote将 假设当前目录是您未指定的路径。
注意:在以前的版本中,您需要将--auto或-a指定为 使用自动路径模式。这是默认的行为,没有任何 参数,因此--auto参数已被删除。
# TFPROMOTE_ENVS defaults to the below, but you can use any custom named environments by overriding $ exportTFPROMOTE_ENVS="dev,stage,prod" $ pwd /devel/myapp/terraform/ $ tfpromote --to ./dev --from ./stage
如果安装了比较工具(例如p4merge、kdiff, beyondcompare),可以用--difftool参数指定。
$ tfpromote --to dev --from stage --difftool p4merge
或者使用环境变量设置difftool,这样就不必 每次都键入参数。
$ exportTFPROMOTE_DIFFTOOL=p4merge $ tfpromote --to dev --from stage
如果没有 difftool,使用--printdiff参数。
要查看参数的完整列表,请使用tfpromote --help。
将更新发布到pypi
对于维护者-要发布tfpromote的更新版本, 在version.py中增加版本号并运行以下命令:
docker build -f ./Dockerfile.buildenv -t billtrust/tfpromote:build . docker run --rm -it --entrypoint make billtrust/tfpromote:build publish
在提示下,输入billTrust的用户名和密码 pypi.org回购。
许可证
麻省理工学院许可证
版权所有(c)2018 Factor Systems Inc.
特此免费向任何获得 本软件和相关文档文件的副本 “软件”),无限制地处理软件,包括 但不限于使用、复制、修改、合并、发布, 分发、再授权和/或出售软件副本,以及 允许向其提供软件的人员这样做,但须遵守 以下条件:
上述版权公告及本许可公告须包括在内 在软件的所有副本或大部分中。
软件按“原样”提供,不作任何形式的保证 或默示的,包括但不限于 适销性、适合特定目的和不侵权。 在任何情况下,作者或版权持有人均不对任何 索赔、损害赔偿或其他责任,无论是在合同诉讼中, 侵权行为或其他,由 软件或软件中的使用或其他交易。