使用Python脚本创建Terraform文件

2021-01-02 17:09:12

如果您觉得这个项目对您有用,请考虑花一些时间来改善它!有关贡献的更多详细信息,请查看CONTRIBUTORS.md和DEVELOPMENT.md。

通过Python脚本创建Terraform具有比手工编写Terraform配置更好的灵活性。

Terraform 0.12对如何处理JSON格式的配置文件进行了一些更改。当前在Terraform 0.12和Terraform 0.11中有单独的发行版,这反映在Terrascript中。不支持Terraform的早期版本。

Python-Terrascript版本0.8.0更改了模块的位置。提供程序,资源和数据源现在都可以通过三个模块使用。

import terrascriptimport terrascript.provider#aws,google,...导入terrascript.resource#aws_instance,google_compute_instance,... import terrascript.data#aws_ami,google_compute_image,...

以下示例摘自AWS Provider的官方Terraform文档,然后转换为Python脚本,该脚本以JSON语法生成等效配置。

提供商" aws" {版本="〜> 2.0"地区=" us-east-1"}资源" aws_vpc" "示例" {cidr_block =" 10.0.0.0/16"}

导入terrascript导入terrascript.provider作为提供程序导入terrascript.resource作为resourceconfig = terrascript.Terrascript()config + = provider.aws(version ='〜> 2.0&#39 ;, region =' us-east- 1')config + = resource.aws_vpc(' example&#39 ;, cidr_block =' 10.0.0.0/16')与open(' config.tf.json&#39 ;,' wt')为fp:fp.write(str(config)) {" provider&#34 ;: {" aws&#34 ;: [{" version&#34 ;:"〜> 2.0"," region&#34 ;:" us-east-1" }]}," resource&#34 ;: {" aws_vpc&#34 ;: {" example&#34 ;: {" cidr_block&#34 ;:" 10.0.0.0 / 16" }}}} Terrascript不会验证生成的JSON代码是否是有效的Terraform配置。 这是一个故意的设计决策,在“常见问题”(FAQ)中有解释