Terraform
Awesome Terraform
¶
A curated list of resources on HashiCorp's Terraform.
>您 contributions 受欢迎的!
Terraform使您能够安全且可预测地创建,更改和改善生产基础架构. 它是一个开放源代码工具,可将API编码为声明性配置文件,这些文件可以在团队成员之间共享,视为代码,进行编辑,查看和版本控制.
Legend¶
-与_terraform> = 0.12_不兼容:ghost: -被遗弃的:头骨: -获利:heavy_dollar_sign:
Official Resources¶
- Hashicorp Terraform Blog
- Introduction to Terraform
- Terraform Documentation
- Terraform GitHub Actions :颅骨:
- Terraform learn
Community¶
- Complete Terraform documentation as PDF files (Updated nightly)
- Terraform AWS Modules + meta-configurations repository
- Terraform Bug Tracker
- Terraform Community Modules
- Terraform Gitter
- Terraform Google Group
- Terraform Module Registry
- Terraform PDF Doc :颅骨:
- Terragrunt Reference Architecture
Books¶
- Bootstrapping Microservices with Docker, Kubernetes, and Terraform.
- Getting Started with Terraform, 2nd ed.
- Infrastructure as Code
- Terraform Best Practices - open-source ebook
- Terraform Cookbook
- Terraform in Action
- Terraform: Up & Running
- The Terraform Book
Tutorials and Blog Posts¶
Beginner Guides¶
- A Comprehensive Guide to Terraform -“ Terraform:启动与运行”作者的一系列博客文章,指导读者从Terraform开始到在现实世界中使用它.
- Using Terraform for Cloud Deployments - Part 1 -设置EC2实例.
- Hello, world: The Fargate/Terraform tutorial I wish I had -博客文章描述了从头开始设置ECS Fargate集群
Writing Custom Providers¶
- Creating custom terraform providers -创建自定义提供程序的指南.
- Writing a Terraform provider -创建自定义提供程序的指南.
- Writing Custom Providers -用于创建自定义提供程序的官方文档.
How-To¶
- How To Write OPA for Terraform -如何使用开放式策略代理评估和实施Terraform计划中的策略
- Deploying Discourse with Terraform -显示Terraform如何在一个命令中在DigitalOcean上创建Discourse的运行实例.
- Deploying Django to AWS ECS with Terraform -了解如何使用Terraform启动必需的AWS基础架构,以便在ECS上运行Django应用程序.
- Easily Deploy A Seneca Microservice to ECS with Wercker and Terraform: Part I, II & III -说明了如何将Terraform合并到微服务部署管道中.
- Terraform for a Highly Available VPN between AWS and Azure -Terraform代码,可在AWS和Azure之间部署高度可用的VPN.
- Terraforming 1Password -1Password如何从CloudFormation迁移到Terraform.
- Tutorial: How to Use Terraform to Deploy OpenStack Workloads -说明了使用OpenStack Terraform提供程序部署Web服务器有多么容易.
- Zero Downtime Updates with HashiCorp Terraform -确保基础架构的零停机时间.
Multi-Environment Configuration¶
- Terraform Design Patterns: the Terrafile -使用Terrafile在Terraform项目中管理Terraform模块及其版本.
- Terraform, VPC, and why you want a tfstate file per env -在具有多个环境的大型项目中使用Terraform的一些陷阱,以及如何避免它们.
- Using Pipelines to Manage Environments with Infrastructure as Code -说明了用于构建管道以处理从一种环境转移到另一种环境的基础结构更改的不同方法.
Azure¶
- Learning HashiCorp Terraform -Azure指南.
- New Terraform Azure Automation Resources -Azure自动化.
- Terraforming Azure PaaS -在Azure上部署PaaS资源.
Miscellaneous¶
- Sharing data between Terraform configurations -说明如何使用远程状态在Terraform配置之间共享数据.
- The Segment AWS Stack -显示由Terraform支持的基础架构的幕后解决方案 The Million Dollar Engineering Problem 在 Segment.
- Top 3 Terraform Testing Strategies for Ultra-Reliable Infrastructure-as-Code
- Two Weeks with Terraform -在野外使用Terraform的一些来之不易的经验,以及一些操作上的智慧.
- Terraform: Beyond the Basics with AWS -有关使用Terraform来提供示例AWS架构的演示的说明.
- Terraform cost estimation -基于Terraform计划(0.12+)或Terraform状态(任何版本)的匿名,安全和免费的Terraform成本估算.
Community Modules¶
有关此处未列出的更多社区模块,请参见 Terraform Module Registry.
- rancher-terraform-digitalocean -Digitalocean上的Rancher服务器.
- segmentio/stack -使用AWS,Docker和ECS配置生产基础架构.
- terraform-aws-alb -在AWS上创建了应用程序负载平衡器(已验证模块).
- terraform-aws-atlantis -创建用于运行的Terraform配置 Atlantis 在AWS Fargate上. 支持Github,Gitlab和BitBucket.
- terraform-aws-autoscaling -创建自动伸缩组和启动配置(已验证模块).
- terraform-aws-ecr -在AWS ECR上管理Docker容器注册表.
- terraform-aws-efs - Defines an EFS Filesystem.
- terraform-aws-eks -在AWS(非常流行的模块)上创建Elastic Kubernetes服务.
- terraform-aws-elb -在AWS(已验证模块)上创建了弹性负载均衡器.
- terraform-aws-jenkins-ha-agents -具有HA(现场)代理的基于EC2的Jenkins部署. 在EFS上运行以实现不变性. 完全可定制,具有合理的默认值.
- terraform-aws-jenkins - Build a Docker image with Jenkins, saves it to an ECR repo, and deploys it to Elastic Beanstalk running a Docker stack.
- terraform-aws-key-pair -自动生成SSH密钥对(公共/专用密钥).
- terraform-aws-lambda-auto-package -一个terraform模块,用于定义lambda函数,该源文件会自动构建和打包以用于lambda部署.
- terraform-aws-modules -社区支持的Terraform AWS模块集合(包括官方的AWS模块).
- terraform-aws-postgresql-rds -在RDS上创建PostgreSQL.
- terraform-aws-rds -在AWS(已验证模块)上创建RDS资源.
- terraform-aws-secure-baseline -使用基于CIS Amazon Web Services Foundations的安全基准配置来设置您的AWS账户.
- terraform-aws-security-group -在AWS(已验证模块)上创建EC2-VPC安全组.
- terraform-aws-ssh-bastion-service -Terraform计划将ssh堡垒部署为AWS上的无状态服务.
- terraform-aws-lambda -Terraform模块,该模块构建依赖关系和程序包,并以无数组合创建AWS Lambda资源.
- terraform-aws-vpc -在AWS(已验证且非常流行的模块)上创建VPC资源.
- terraform-azurerm-aks -在Azure上创建AKS资源.
- terraform-azurerm-iis -在Azure VM实例上安装IIS服务器.
- terraform-azurerm-mysql -在Azure上创建MySql数据库.
- terraform-azurerm-redis -在Azure上创建Redis.
- terraform-azurerm-sqlserver -在Azure上创建SQl服务器数据库.
- terraform-cloudflare-maintenance -使用Cloudflare Workers创建维护页面的模块.
- terraform-digitalocean-droplet -用于管理DigitalOcean Droplet和相关资源的Terraform模块.
- terraform-ecs-jenkins -使用Terraform在AWS ECS上配置Jenkins.
- terraform-google-project-factory -通过共享的VPC,IAM,API等进行有根据的Google Cloud Platform项目创建和配置.
- terraform-linode-k8s -在Linode实例上安装Kubernetes.
- terraform-static-website-s3-cloudfront -根据变量在AWS S3和Cloudfront上创建静态网站.
- tf_aws_availability_zones_cfn -从Cloudformation获取您的AWS区域/帐户的可用区.
- tf_aws_bastion_s3_keys -在AWS EC2上创建堡垒主机.
- tf_aws_coreos_ami -使用Terraform查找CoreOS AMI的简便方法.
- tf_aws_nat -AWS的NAT实例.
Private Module Registries¶
- anthology -私有Terraform注册表的实现,可以替代官方注册表.
- citizen -专用Terraform模块注册表
- terraform-simple-registry -Terraform注册协议的简单实现.
Providers¶
- terraform-provider-alicloud -阿里云插件.
- terraform-provider-aws -Amazon Web Services插件.
- terraform-provider-azurerm -适用于Microsoft Azure的插件.
- terraform-provider-azuredevops -Azure DevOps(VSTS)的提供程序.
- terraform-provider-buildkite -Buildkite插件.
- terraform-provider-checkly - 管理 Checkly 用于API和E2E监控的资源.
- terraform-provider-datadog -Datadog的插件.
- terraform-provider-digitalocean -DigitalOcean的插件.
- terraform-provider-docker -Docker插件.
- terraform-provider-dominos -Dominos Pizza的提供商.
- terraform-provider-github -适用于GitHub的插件.
- terraform-provider-gitlab -适用于GitLab的插件.
- terraform-provider-google -Google Cloud Platform插件.
- terraform-provider-graphql -用于GraphQL查询和变异的插件.
- terraform-provider-hcloud -Hetzner Cloud插件.
- terraform-provider-healthchecksio -管理healthchecks.io资源的提供者.
- terraform-provider-helm -头盔插件.
- terraform-provider-heroku -Heroku插件.
- terraform-provider-ibm -用于IBM Cloud的插件.
- terraform-provider-k8s -简单的Kubernetes Provider,可与任何清单一起使用.
- terraform-provider-keycloak -提供程序来管理您的设置 Keycloak 身份提供商服务器.
- terraform-provider-kubernetes -Kubernetes的插件.
- terraform-provider-linode -Linode插件.
- terraform-provider-openstack -OpenStack插件.
- terraform-provider-pingdom -管理Pingdom资源的提供者.
- terraform-provider-secrethub -SecretHub的提供者.
- terraform-provider-snowflake -Snowflake数据仓库的提供者.
- terraform-provider-spinnaker - 管理 Spinnaker Terraform的应用程序和管道.
- terraform-provider-spotinst -适用于AWS,Azure,GCP的Devops自动化平台.
- terraform-provider-stripe -Stripe的提供者.
- terraform-provider-uptimerobot -管理uptimerobot资源的提供商.
- terraform-provider-vaulted -通过Terraform加密的HashiCorp Vault秘密,可以存储在SCM中,例如Git.
- terraform-provider-vsphere -适用于VMware vSphere的插件.
Testing¶
- kitchen-terraform -提供了一组Test Kitchen插件,使系统可以使用Test Kitchen收敛Terraform配置并通过InSpec控件验证生成的Terraform状态.
- rspec-terraform -针对您的Terraform模块的RSpec测试.
- terraform-compliance -Terraform文件的BDD测试.
- terraform_validate -协助在Terraform中实施用户定义的标准.
- terratest -Terratest是一个Go库,可以更轻松地为基础结构代码编写自动化测试.
- clarity -用于单元测试的Terraform的声明性测试框架.
Tools¶
- AirIAM -AirIAM是AWS IAM拥有最低特权的Terraform执行框架的工具.
- astro -Astro是用于将多个Terraform执行作为单个命令进行管理的工具. :鬼:
- atlantis -统一的工作流程,可通过GitHub在Terraform上进行协作.
- blast radius -Terraform依赖图的交互式可视化. :颅骨:
- Checkov -用于Terraform> = 0.12的Terraform静态分析工具
- Cloudrail -用于Terraform> = 0.12的Terraform和Live Cloud基于上下文的分析工具:heavy_dollar_sign:
- flora -Terraform版本管理器.
- fogg -消除管理Terraform信息库中的工作的工具.
- former2 -从AWS账户中的现有资源生成Terraform配置.
- hcledit -HCL的命令行编辑器.
- iam-policy-json-to-terraform -将JSON格式的IAM策略转换为Terraform aws_iam_policy_document的小型工具
- k2tf -Kubernetes YAML到Terraform HCL转换器.
- KICS -扫描IaC项目中的安全漏洞,合规性问题和基础架构配置错误. Kubernetes清单,Dockerfile,AWS CloudFormation模板和Ansible剧本目前正在与Terraform项目一起使用.
- Infracost -CLI和拉取请求中Terraform的云成本估算.
- json2hcl -将JSON转换为HCL,反之亦然. :鬼:
- modules.tf -基础结构作为代码生成器-通过使用 Cloudcraft.co 到Terraform. Source code.
- para -缺少的第三方插件管理器和Terraform / Terragrunt的“瑞士军刀”-仅有1个工具可简化所有工作流程. :颅骨:
- pre-commit-terraform -预先提交git挂钩,以处理Terraform配置(自动格式化,验证,更新文档).
- pretf -嵌入式Terraform包装器,可使用Python生成Terraform配置. 看 pretf documentation
- python-terrafile -系统地管理来自Github的外部模块,以在Terraform中使用.
- prettyplan -Prettyplan([可在此处在线获得](https://chrislewisdev.github.io/prettyplan/))是一个小工具,可帮助您轻松查看大型Terraform计划. :鬼:
- regula -在部署之前,评估Terraform基础架构代码是否存在潜在的AWS,Azure和Google Cloud安全性错误配置和合规性违规.
- ruby-terraform -用于调用terraform命令的简单Ruby包装器.
- scenery -另一个Terraform计划输出修饰词. :鬼:
- scratchrelaxtv -一个简单的Python工具,可帮助模块开发-从main.tf中提取变量,以生成variables.tf,并从variables.tf中创建模块使用存根.
- serverless.tf - Doing serverless with Terraform -serverless.tf是一个坚定的开源框架,用于使用Terraform在AWS上开发,构建,部署和保护无服务器应用程序和基础架构. Read more.
- tads-boilerplate -Ansible和Terraform的强大功能+ Docker Swarm的简单性=基础架构(作为Code和DevOps的最佳实践).
- tau -Tau是terraform之上的一个瘦包装器,用于管理多个部署,依赖项和秘密.
- terraboard -Web仪表板以检查Terraform状态.
- terraboot -DSL生成Terraform配置并运行它.
- TerraDepot Terraform状态存储库,基于默认的http远程后端. 允许在AWS S3上对tfstates进行集中管理.
- terrafile -系统地管理来自Github的外部模块,以在Terraform中使用(用Go编写).
- terrafile -系统地管理来自Github的外部模块,以在Terraform中使用(用Ruby编写).
- terraform-bundle -轻松构建包含Terraform二进制文件以及提供程序二进制文件的捆绑软件. 对于CI和空白的Terraform Enterprise非常有用.
- terraform-docs -快速实用程序,可从terraform模块生成文档.
- terraform-graph-beautifier -命令行工具,可将terraform graph命令的几乎不可用的输出转换为更有意义和更具说明性的内容.
- terraform-landscape -(仅0.11和更早版本)改进Terraform的计划输出,使其更易于阅读和理解.
- terraform-operator -Kubernetes CRD以处理Terraform操作.
- terraform-plan-parser -命令行实用程序和JavaScript API,用于从“ terraform plan”中解析标准输出并将其转换为JSON. :鬼:
- terraform-provisioner -用于管理同一Terraform脚本的多个配置的工具.
- terraform-rake-tasks -共享的Rake任务,用于管理Terraform计划.
- terraform.py -Ansible动态清单脚本,用于解析Terraform状态文件.
- terraformer -CLI工具,用于从现有基础架构生成terraform文件. 代码基础架构. 支持许多提供商.
- terraforming -将现有的AWS资源导出为Terraform样式(tf,tfstate). 类似于
terraformer
. - Terraform-Visual 一个简单但功能强大的工具,可用于可视化Terraform计划.
- terragrunt -Terragrunt是Terraform的薄包装,它提供了额外的工具来使您的Terraform配置保持干燥,与多个Terraform模块一起使用以及管理远程状态.
- terrahelp -旨在提供补充功能的命令行实用程序,在使用Terraform时有时会被证明是有用的.
- terrahub -TerraHub是Terraform自动化和编排工具. 与企业友好的GUI无缝集成到console.terrahub.io中,以显示实时Terraform执行以及历史Terraform运行的审核和报告功能. :heavy_dollar_sign:
- terrascan -收集用于Terraform模板的静态代码分析的安全性和最佳实践测试
- terraspace -Terraform框架
- terratag -Terratag是一个CLI工具,使Terraform的用户可以在其整个AWS,Azure和GCP资源的整个集合中自动创建和维护标签.
- tf-init-booster 加速terraform模块的Pre-terraform例程下载了庞大的蓝图.
- tfsec -支持terraform <0.12&> = 0.12的Terraform静态分析工具,并直接与HCL解析器集成以获得更好的结果.
- tfenv -受rbenv启发的Terraform版本管理器.
- tfjson -读取Terraform计划文件并将其转储为JSON的实用程序. :颅骨:
- tflint -Terrain linter,用于检测“ terraform plan”无法检测到的错误
- tfmask -Terraform实用程序,用于屏蔽“ terraform plan”和“ terraform apply”中的选择输出
- tfmigrate -用于GitOps的Terraform状态迁移工具.
- tfscaffold -用于控制多环境多组件地形管理的AWS基础架构的框架.
- tfschema -Terraform提供程序的架构检查器.
- tfupdate -更新Terraform配置中的版本限制.
- tfwrapper -Rubygem提供耙任务,以合理地运行Hashicorp Terraform.
- tgf -Terragrunt前端,用于通过Docker执行Terragrunt / Terraform.
- xterrafile 从模块注册表,git或本地目录中系统地管理外部模块,以在Terraform中使用(用Go编写).
Libraries¶
- pyhcl -Python中的HCL解析器
- python-hcl2 -Python中的HCL2解析器
- rhcl -纯Ruby HCL解析器
Boilerplates¶
- Terraform Generator -在测试框架(terratest和kitchen-terraform)的支持下,用于新的Terraform模块或项目的脚手架
Terraform Enterprise¶
- terraform-enterprise-cli -Terraform企业命令行界面.
- terraform-enterprise-client -Terraform Enterprise API Ruby客户端和命令行工具.
- terraform-enterprise-migrator -用于将Terraform Enterprise环境从旧版迁移到新版本的Terraform Enterprise的脚本.
- tfe-state-explorer -具有自动完成功能的简单外壳,用于探索远程terraform企业状态.
- Scalr -具有OPA集成的Terraform Enterprise的替代产品
Talks¶
- Building Scalable, Repeatable Infrastructure in the Cloud with Terraform -演示Terraform如何通过使用托管的PostgreSQL在AWS中部署TeamCity来实现基础设施即代码的实践.
- Creating a Google Compute Instance with Terraform -使用Terraform代码创建Google Compute实例的示例.
- Creating a Terraform Provider for Just About Anything -通过本演练了解如何为Terraform提供商做出贡献或创建自己的提供商.
- Evolving Your Infrastructure with Terraform -OpenCredo的CTO借助一些有趣的用例,全面了解了在现实世界中使用Terraform的情况.
- Going Multi-Cloud with Terraform and Nomad.
- How to Build Reusable, Composable, Battle tested Terraform Modules -Yevgeniy Brikman讨论了如何编写Terraform代码以使其可重用,可组合和可测试. 该演讲重点介绍了Terraform模块,还简要说明了Terraform所要解决的问题,并简要介绍了Terraform基础知识(2017年10月约39分钟).
- How to Extend the Terraform Provider List -在本次演讲中,Paul将逐步介绍如何创建Terraform提供程序.
- Orchestrating Containers with Terraform and Consul -Mitchell Hashimoto展示了如何使用Terraform来部署和扩展容器化工作负载.
- Production ChaosMonkey with Terraform -DigitalOcean如何使用Terraform进行生产集成测试.
- Running a Terraform Environment at Scale -使用数百个AWS帐户大规模运行Terraform.
- Setup Continuous Integration for a Terraform module -将CI与Kitchen-Terraform一起使用以测试,标记和发布创建Google Compute实例的Terraform模块的示例.
- State of Terraform Providerland -Terraform提供程序如何工作以及如何编写.
- Terraform At Scale -细分如何使用Terraform.
- Terraform w/ Lee Trout -专注于开发模式以及如何有效构造Terraform代码.
- Terraforming the Composable World -将Terraform与内部裸机配置集成.
- Test and verify a Google Compute Instance with Kitchen-Terraform -使用Kitchen-Terraform测试我们创建了Google Compute的Terraform代码的示例.
- Untangling Terraform Through Refactoring -如何以最小的风险谨慎地重构Terraform代码.
- Using Terraform for blue-green deployments on Triton -有关在Terraform中使用蓝绿色的演示视频.
- Webinar: Multi-Cloud, One Command with Terraform -使用Terraform设置混合云基础架构.
Editor Plugins¶
- Atom terraform-lookup
- Emacs terraform-mode
- Intellij
- Terraform-lsp (用于Terraform的语言服务器协议)
- Vim-Terraform
- Vim-Terraform-Completion
- VS Code
License¶
Shuaib Yunus在法律允许的范围内放弃了本作品的所有版权以及相关或邻近的权利.