比较并将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 Enterprise是加密环境变量的正确方法   java如何使用视图保持器模式制作自定义适配器?   java如何迭代Camel体中的嵌套列表?   序列化用base 64进行Java序列化   java打开文件的最佳方式(并确保选择了文件)   java marvin图像色差插件错误   java如何在eclipse中添加属性文件文件夹   比较java。util。日历日期到java。util。日期   java无法在下一个类(活动)中获取哈希表   java如何将这段代码转换为循环?   java查找通过REST失败   java getIntent返回null   在Java中,如何通过外部集合从内部集合检索数据?   java单点登录以保护REST API和内部基于web的系统