一组基于python的cli工具,用于处理terraform配置

terrawrap的Python项目详细描述


codacy badgecodacy badge构建状态licensepypipython versionsdownloads

TerraWrap

一组基于python的cli工具,用于批量处理terraform配置

关于放大

Amplify构建创新和引人注目的数字教育产品,增强教师和学生的能力 国家。作为K-12教育领域的领先创新者,我们有着悠久的历史,被誉为最佳技术 教育领域的公司和科技领域的最佳教育公司。而其他公司则试图将学习经验缩减为
在技术方面,我们使用技术来扩展真实课堂中的可能性,让真实的学生和教师参与其中。

更多信息,请访问https://www.amplify.com

目录

功能

  1. 自动.tfvars继承。terrawrap使得通过 继承auto.tfvars文件。

  2. 远程后端生成。TerraWrap使通过 为它们生成配置。

  3. 存储库级计划/应用。terrawrap提供了在整个 立即存储库。

  4. < > >

    目标

    1. 使大型组织的地形干燥。Terraform的最佳实践是分解Terraform配置 变成许多小的州档案。这会导致在使用大型terraform时样板代码发生爆炸。 有100份国家档案的组织。terrawrap通过提供auto.tfvars来减少一些样板代码。 继承和生成后端配置。

    2. 使terraform代码更易于管理。terraform一次只在一个目录上运行命令。这使得 很难处理数百个terraform目录/状态文件。terrawrap为运行 一次对整个存储库执行命令,而不是一次对一个目录执行命令。

    3. 所有terraform代码都应该是有效的terraform。与terrawrap一起使用的任何terraform代码都应该可以使用 没有包装的地形。TerraWrap不提供任何新语法。

    4. terrawrap不是代码生成器。生成的代码很难 阅读并理解。代码生成器往往会导致泄漏的抽象,而这些抽象可能比它们更麻烦 价值。但是,terrawrap确实生成了远程后端配置,以解决terraform不支持 后端配置中的变量(请参见https://github.com/hashicorp/terraform/issues/13022" rel="nofollow">https://github.com/hashicorp/terraform/issues/13022)。我们希望这是 TerraWrap中代码生成的唯一实例。

    5. < > >

      开始

      先决条件

      TerraWrap需要Python3.6.0或更高版本才能运行。

      安装

      此软件包可以使用pip安装

      pip3 install terrawrap
      

      现在您应该可以使用tf命令了。

      从源构建

      对于开发,建议使用tox>;=2.9.1

      运行测试

      terrawrap使用tox。您需要使用pip install tox安装tox。 运行tox将自动执行linter和单元测试。

      您还可以使用-e参数单独运行它们。

      例如,tox-e py37 unit将运行python 3.7的单元测试

      要查看所有可用选项,请运行tox-l

      配置

      .tf_包装器

      terrawrap可以通过.tf_wrapper文件进行配置。包装器将遍历提供的配置 路径并查找.tfu wrapper文件。文件将按发现的顺序合并。考虑 下面的示例:

      foo
      ├── bar
      │   └── .tf_wrapper
      └── .tf_wrapper
      

      如果这两个.tfu wrapper文件之间存在冲突配置,则中的.tfu wrapper文件 foo/bar将获胜。

      .tfu wrapper中支持以下选项:

      configure_backend:True# If true, automatically configure Terraform backends.pipeline_check:True# If true, require this directory to be in a pipeline file.envvars:<NAME_OF_ENVVAR>:source:# The source of the envvar. One of `['ssm', 'text']`.path:# If the source of the envvar is `ssm`, the SSM Parameter Store path to lookup the value of the environment variable from.value:# if the source of the envvar is `text`, the string value to set as the environment variable.

      自动变量

      terrawrap通过扫描*.auto.tfvars 目录结构中的文件。

      例如,以下命令tf config/foo/bar apply具有以下目录结构:

      config
      ├── foo
      |   └── bar
      |   │  ├── baz.tf
      |   │  └── bar.auto.tfvars
      |   └── foo.auto.tfvars
      └── config.auto.tfvars
      

      将生成以下命令:

      terraform apply -var-file config/config.auto.tfvars \
          -var-file config/foo/foo.auto.tfvars \
          -var-file config/foo/bar/bar.auto.tfvars
      

      后端配置

      terrawrap支持通过注入适当的-backend配置来自动配置后端 运行init时的参数

      例如,terrawrap命令tf config/foo/bar init将生成如下terraform命令 aws s3远程状态后端

      terraform init -reconfigure \
          -backend-config=dynamodb_table=<lock table name> \
          -backend-config=encrypt=true\
          -backend-config=key=config/foo/bar.tfstate \
          -backend-config=region=<region name> \
          -backend-config=bucket=<state bucket name> \
          -backend-config=skip_get_ec2_platforms=true\
          -backend-config=skip_region_validation=true\
          -backend-config=skip_credentials_validation=true

      terrawrap通过在目录结构中查找.tf_wrapper文件来配置后端。 支持s3gcs。有关可用的选项,请参阅相关的TerraForm文档 对于每种后端类型: https://www.terraform.io/docs/backends/types/s3.html"配置变量https://www.terraform.io/docs/backends/types/gcs.html配置变量

      s3后端

      backends:
          s3:
              region:
              role_arn:
              bucket:
              dynamodb_table:
      
      <表><广告>选项名称必需的目的 < /广告><正文>桶 >是S3 bucket的名称地区 >是S3状态桶和dynamodb锁表所在的AWS区域发电机表>用于状态锁定的dynamodb表。如果未设置锁定表,则禁用锁定角色学习>在读取/写入s3 bucket和lock table时要承担的aws角色

      s3状态文件密钥名是从用于运行terraform命令的目录名生成的。 例如,tf config/foo/bar init在s3中使用键为config/foo/bar.tf state的状态文件

      地面军事系统后端
      backends:
          gcs:
              bucket:
      
      <表><广告>选项名称必需的目的 < /广告><正文>桶 >是GCS存储桶的名称

      命令

      Tf

      tf<;directory>;<;terraform command>;为包含*.tf文件的给定目录运行terraform命令。 terrawrap在运行给定命令时自动包含上述autovars。任何地形 支持命令

      计划检查

      plan_check<;directory>;对从给定目录开始的所有子目录递归运行terraform planplan_check使用git来标识与master分支相比哪些文件已更改。然后它将运行计划 在任何包含tf文件且符合以下条件的目录中

      1. 包含已更改文件的目录
      2. 符号链接到已更改文件的目录的目录
      3. 带有符号链接文件的目录,这些文件链接到已更改的文件
      4. 使用terraform模块的目录,其源代码已更改
      5. 一个包含TerraForm文件的目录,该文件引用已更改的AutoVar文件
      6. < > >

        后端检查

        后端检查[目录]验证给定目录下包含.tf文件的所有目录 还定义了地形后端。

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

        推荐PyPI第三方库


热门话题
java为textview创建选定状态(突出显示)   Java Hibernate计数行   Java语言中的字符串比较   java为什么SparkLauncher会立即返回而不会生成任何作业?   java layout_centerInParent在抛出回收视图后不工作   c#中的readInt16()与java中的readShort()   java如何在工具栏菜单中添加昼夜切换器   java在eclipse上向Tomcat提供<Realm/>信息   java使用给定的随机路径构造一个图   带有对象推送的java Morphia聚合阶段组   java关闭JTable实例   性能如何更好地转换java中的所有集合元素?   JAVA木卫一。IOException:通过Eclipse读取Java中的EOF Lucene   java如何在Android中将光标设置在tableLayout的行/列中所需的位置   使用HashMap的Set的java迭代器不会生成值/键吗?   java google guava cachebuilder在ExipeAfterAccess和expireActerWrite之间使用的时间更长   如何将这个排序映射方法从java转换为Kotlin   java如何从运行的JAR文件中读取war目录?   SpringBootJava。使用Java 9模块(JPM)时lang.NoSuchMethodError