比较并将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自动确定 从和到路径。从目标或“到路径”开始使用 tfpromotetfp和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.

特此免费向任何获得 本软件和相关文档文件的副本 “软件”),无限制地处理软件,包括 但不限于使用、复制、修改、合并、发布, 分发、再授权和/或出售软件副本,以及 允许向其提供软件的人员这样做,但须遵守 以下条件:

上述版权公告及本许可公告须包括在内 在软件的所有副本或大部分中。

软件按“原样”提供,不作任何形式的保证 或默示的,包括但不限于 适销性、适合特定目的和不侵权。 在任何情况下,作者或版权持有人均不对任何 索赔、损害赔偿或其他责任,无论是在合同诉讼中, 侵权行为或其他,由 软件或软件中的使用或其他交易。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么大摇大摆的ui不显示带注释的REST方法?   soapweb服务概念。(来自WSDL的Java或来自Java的WSDL)   java Junit测试日志语句   java如何使Sonar与XMLInputFactory和woodstox库注册的实现兼容?   java无法启动活动组件信息{com.example.countryselect/com.example.countryselect.OfferSelect}   java在2d数组中递增对象   java在序列化和反序列化期间如何调用构造函数?   JavaFx:在按钮内设置布尔值并将其取出   java GWT如何异步发送表单?   java编译错误。木卫一。必须捕获或声明IOException错误   java无法解释的长时间停止在G1 Collector中的并发标记步骤期间世界暂停   java计算J2EE应用程序中对象的出现次数   Java使用相同的变量名和值定义字符串常量   java Samsung键盘退格不适用于SearchView   java将Spring Web应用程序部署到JBoss WebApplicationContext异常   java在加载jsp时试图调用servlet   Vertx JDBC NoSuchMethodError’java。sql。连接io。农业的。应用程序编程接口。交易交易整合。getConnection()   JAVAutil。scanner使用scanner读取Java文件