Top Terraform Tools to Know
Dưới đây là các công cụ Terraform đáng chú ý nhất cho năm 2024, sẽ hữu ích trong các lĩnh vực như infrastructure testing, linting, identifying security vulnerabilities, ensuring DRY (Don't Repeat Yourself) code principles, and much more.
Code Editing and Enhancement Tools
1.) VSCode Extensions
Hai trong số các tiện ích mở rộng được ưa chuộng nhất cho Terraform bao gồm tiện ích mở rộng chính thức của HashiCorp Terraform và tiện ích mở rộng Terraform của Anton Kulikov.
Các tiện ích mở rộng này biến VS Code thành một IDE mạnh mẽ cho Terraform, cung cấp các tính năng như làm nổi bật cú pháp, tự động hoàn thành code, và gỡ lỗi tích hợp, giúp tối ưu quá trình phát triển và tăng cường hiệu suất..
2.) TFlint
TFLint là một công cụ linter cho Terraform tập trung vào việc phát hiện lỗi có thể xảy ra, các quy tắc tốt nhất và quy ước về định dạng trong Terraform.
Khi nào bạn nên sử dụng TFLint:
- Chạy TFLint trước lệnh terraform plan để phát hiện các vấn đề sớm.
Các lý do chính nên sử dụng TFLlint:
Phát hiện lỗi: Phát hiện lỗi trước khi chạy lệnh terraform plan hoặc apply
Quy tắc tốt nhất: Kiểm tra code so với một tập hợp các quy tắc tốt nhất của Terraform
Hỗ trợ quy tắc tùy chỉnh: Viết các quy tắc tùy chỉnh của riêng bạn, tuân thủ các chính sách tổ chức
Ví dụ, giả sử bạn định nghĩa một instance EC2 của AWS trong cấu hình Terraform của mình và vô tình đề cập đến một AMI không tồn tại.
TFLint có thể báo cáo vấn đề về ID của AMI trước khi bạn thực thi lệnh terraform plan hoặc terraform apply:
$ tflint main.tf
1 issue(s) found:
Error: "ami-12345678" is an invalid AMI ID. (aws_instance_invalid_ami)
on main.tf line 2:
2: ami = "ami-12345678"
Security and Compliance
3.) Open Policy Agent (OPA)
Một công cụ Policy-as-Code phổ biến cho Terraform là OPA, là một công cụ đa năng yêu thích của mọi người với công nghệ mã nguồn mở giúp áp dụng các chính sách bảo mật và tuân thủ quy định trên toàn bộ cloud-native stacky của bạn, giúp quản lý và duy trì việc thực thi chính sách một cách nhất quán trong môi trường phức tạp và đa dịch vụ.
Khi nào bạn nên sử dụng OPA:
- Thường thì các chính sách OPA được chạy sau khi chạy lệnh terraform plan để xác thực các quy tắc chính sách.
Những lý do chính tại sao bạn nên sử dụng OPA:
Enforce compliance: Đảm bảo tuân thủ các tiêu chuẩn của tổ chức, ngành công nghiệp hoặc pháp lý trong các cấu hình Terraform
Shift-left security: Phát hiện lỗ hổng bảo mật sớm trong quá trình phát triển
Automate governance: Nhúng các kiểm tra chính sách vào các pipeline CI/CD để giảm thiểu các nỗ lực quản trị thủ công
Dưới đây là một ví dụ về chính sách OPA kiểm tra xem một bucket S3 có kích hoạt quyền truy cập công khai không::
package aws.s3
default allow = false
allow {
not bucket_is_public
}
bucket_is_public {
input.bucket_acl == "public-read"
}
bucket_is_public {
input.bucket_policy.allows_public_read
}
For more information, check out this guide for Terraform and OPA or this tutorial for using env0 and OPA for granular policy management.
4.) Terrascan
Terrascan là một công cụ phân tích scans Infrastructure-as-Code của bạn dưới dạng mã nguồn (IaC) để phát hiện các lỗ hổng bảo mật và vi phạm tuân thủ quy định (security vulnerabilities and compliance violations). Nó hỗ trợ nhiều nền tảng như (AWS, Azure, GCP, K8s, Atlantis, v.v.), bao gồm cả Terraform. Terrascan cho phép áp dụng các security best practices, compliance policies, and governance trên toàn bộ triển khai IaC của bạn.
Khi nào bạn nên sử dụng Terrascan:
- Thường thì Terrascan có thể được chạy cục bộ hoặc trong CI/CD trước khi thực hiện terraform plan để xác định các vấn đề bảo mật.
Dưới đây là một ví dụ về việc chạy Terrascan đối với một nhóm bảo mật AWS được định nghĩa trong Terraform:
$ terrascan scan -t aws -i terraform
Violation Details -
Description: Ensure no security groups allow ingress from 0.0.0.0/0 to ALL ports and protocols
File: main.tf
Module Name: root
Plan Root: .\
Line: 9
Severity: HIGH
…
Check out this in-depth Terrascan guide for more information.
5.) Checkov
Checkov là một công cụ tuyệt vời để kiểm tra các tệp Terraform (.tf), phân tích cấu hình và đánh giá chúng so với một bộ các chính sách được xác định trước một cách toàn diện. Nó scan cơ sở hạ tầng do Terraform quản lý và phát hiện các cấu hình sai lầm có thể dẫn đến các vấn đề bảo mật hoặc không tuân thủ các thực hành tốt nhất và quy định.
Khi nào nên sử dụng Checkov:
- Bạn có thể chạy Checkov cục bộ hoặc trong CI/CD trước khi chạy terraform plan để phát hiện các vấn đề bảo mật tiềm ẩn.
Dưới đây là một ví dụ về cách Checkov phát hiện vi phạm bảo mật cho một nhóm bảo mật AWS, cho phép giao thông đến tất cả các cổng được xác định trong tệp Terraform (.tf):
$ checkov -f main.tf
Check: CKV_AWS_277: "Ensure no security groups allow ingress from 0.0.0.0:0 to port -1"
FAILED for resource: aws_security_group.allow_all
File: \main.tf:9-19
Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-networking-policies/ensure-aws-security-group-does-not-allow-all-traffic-on-all-ports
Read this guide for Checkov examples, use cases, and best practices.
6.) Tfsec
Tfsec hoạt động như một Terraform scanning tool. Đây là một công cụ linter tập trung vào bảo mật cho Terraform, scan mã nguồn để phát hiện các lỗ hổng bảo mật, cung cấp một lớp bảo mật bổ sung và giúp duy trì tư thế bảo mật mạnh mẽ.
Tfsec cho phép bạn tạo chính sách theo nhiều định dạng như JSON, YAML và Rego Policies.
Khi nào bạn nên sử dụng Tfsec:
- Tfsec có thể chạy cục bộ hoặc trong môi trường CI/CD tự động trước khi chạy terraform plan.
Lấy ví dụ cùng về việc tắt mã hóa cho bucket AWS S3, hãy quan sát cách Tfsec phát hiện lỗ hổng:
Result #3 HIGH Bucket does not have encryption enabled
.../main.tf:20-32
20 ┌ resource "aws_s3_bucket" "tfsec" {
21 │ bucket = "tfsec-bucket"
22 │ acl = "private"
….
ID aws-s3-enable-bucket-encryption
Impact The bucket objects could be read if compromised
Resolution Configure bucket encryption
Learn more in this Tfsec guide.
Testing and Verification
7.) Terratest
Terratest là một thư viện Go cung cấp các công cụ và mẫu cho việc testing infrastructure, với sự hỗ trợ chính thức cho Terraform, Packer, Docker, Kubernetes, và nhiều hơn nữa. Nó được sử dụng để viết các bài kiểm tra tự động cho IaC
Có 4 bước để kiểm thử Terraform IaC bằng Terratest.
Khi nào nên sử dụng Terratest:
- Chạy Terratest sau khi chạy terraform apply trong CI/CD hoặc locally để xác thực hành vi (validate) của infrastructure’s behavior và đảm bảo rằng code Terraform hoạt động như mong đợi.
Tại sao nên sử dụng Terratest:
Automated testing: Nhúng các bài kiểm tra tự động vào các đường ống CI/CD để phát hiện vấn đề sớm
Programmatic testing: Sử dụng Go cho kiểm tra tài nguyên Terraform chi tiết dựa trên mã nguồn
Comprehensive test coverage: Cung cấp xác thực rộng lớn từ các bài kiểm tra đơn vị đến các bài kiểm tra cơ sở hạ tầng từ đầu đến cuối
Dưới đây là một bài kiểm tra mẫu kiểm tra xem một EC2 của AWS có thể truy cập qua SSH không:
package test
import (
"testing"
"time"
"github.com/gruntwork-io/terratest/modules/aws"
"github.com/gruntwork-io/terratest/modules/terraform"
"github.com/gruntwork-io/terratest/modules/test-structure"
)
func TestEC2Instance(t *testing.T) {
t.Parallel()
// Define the folder where the Terraform code is located
terraformDirectory := "../examples/aws/ec2"
// At the end of the test, run `terraform destroy` to clean up any resources that were created
defer test_structure.RunTestStage(t, "cleanup", func() {
terraform.Destroy(t, terraformOptions)
})
// Deploy the infrastructure with Terraform
terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
TerraformDir: terraformDirectory,
})
test_structure.RunTestStage(t, "deploy", func() {
terraform.InitAndApply(t, terraformOptions)
})
// Get the public IP of the created EC2 instance
publicIp := terraform.Output(t, terraformOptions, "public_ip")
// Test if the EC2 instance is accessible over SSH
test_structure.RunTestStage(t, "validate", func() {
aws.CanSshToEc2Instance(t, publicIp, "ec2-user", nil)
})
}
8.) Terragrunt
Terragrunt là wrapper giúp cung cấp các công cụ bổ sung để duy trì các cấu hình Terraform của bạn theo nguyên tắc DRY (Don’t Repeat Yourself), làm việc với nhiều module Terraform và quản lý trạng thái từ xa. Nó đặc biệt hữu ích trong việc quản lý các triển khai cơ sở hạ tầng quy mô lớn với Terraform.
Dưới đây là một số lý do để sử dụng Terragrunt:
DRY Terraform configurations: Giảm sự lặp lại code trong các dự án Terraform.
Manage remote state easily: Tập trung và tối ưu hóa quản lý trạng thái từ xa cho các module.
Handle dependencies gracefully: Tự động điều phối các phụ thuộc module để thực hiện các hoạt động một cách có trật tự.
Cost Management and Optimization
9.) Infracost
Infracost là một công cụ ước tính chi phí cho các dự án Terraform, điều này rất quan trọng cho kế hoạch ngân sách và tối ưu hóa chi phí, đặc biệt là trong môi trường cloud nơi chi phí tài nguyên có thể biến đổi đáng kể.
Khi nào nên sử dụng Infracost:
- Infracost thường được chạy sau khi bạn triển khai tài nguyên của mình thông qua Terraform để phát hiện chi phí của các tài nguyên.
Dưới đây là đầu ra được tạo ra bởi Infracost chi tiết về chi phí triển khai một instance EC2 của AWS, một instance RDS và một bucket S3:
IaC Synchronization and Management
10.) Driftctl
Driftctl là một công cụ phát hiện lệch hạ tầng mã nguồn mở cho Terraform, theo dõi và cảnh báo về lệch hạ tầng. Driftctl scan cơ sở hạ tầng , so sánh nó với các cấu hình IaC của bạn (như Terraform), và báo cáo những khác biệt.
Khi nào nên sử dụng Driftctl:
- Việc chạy Driftctl trước khi thực hiện terraform apply là hữu ích để hiểu xem có bất kỳ sự khác lệch nào trong môi trường của bạn hay không.
Đầu ra này rõ ràng cho thấy rằng 'driftctl-app-bucket' đã lệch lạc. ACL đã thay đổi từ private (như được xác định trong Terraform) sang public-read (trạng thái hiện tại trong AWS)
$driftctl scan
Scanned resources: (1)
Found unmanaged resources:
aws_s3_bucket:
- driftctl-app-bucket
Found drifted resources:
- aws_s3_bucket.driftctl_bucket:
~ acl: "private" => "public-read"
11.) Terraformer
Terraformer là CLI too được phát triển bởi Google giúp tạo ra các tệp Terraform từ cơ sở hạ tầng hiện có (reverse Terraform), đơn giản hóa quá trình áp dụng Terraform trong môi trường hiện tại và tăng tốc quá trình thiết lập ban đầu. Terraformer hỗ trợ nhiều nhà cung cấp Cloud, bao gồm AWS, Google Cloud, Azure và các nhà cung cấp khác.
Khi nào nên sử dụng Terraformer:
- Thường thì Terraformer được sử dụng trong môi trường cục bộ vì đây là bước ban đầu để đưa các tài nguyên không quản lý vào quản lý của Terraform.
Tại sao sử dụng Terraformer:
Save time and effort: Tối ưu hóa việc áp dụng IaC bằng cách tự động hóa các cấu hình Terraform
Ensure visibility: Nâng cao khả năng nhìn thấy về cơ sở hạ tầng bằng cách tích hợp các tài nguyên không quản lý vào Terraform
Ví dụ, bạn có thể sử dụng Terraformer để nhập các bucket S3 của bạn vào cấu hình Terraform:
terraformer import aws --resources=s3 --regions=us-east-1
Terraformer will scan your AWS account for S3 buckets in the us-east-1 region and generate corresponding .tf files and a terraform.tfstate file.
12.) Pike
Pike là một công cụ phân tích các tài nguyên được quản lý bằng Terraform và tự động tạo ra các quyền IAM cần thiết, nâng cao bảo mật bằng cách đảm bảo chỉ cấp quyền cần thiết tối thiểu.
Khi nào bạn nên sử dụng Pike:
- Bạn có thể chạy Pike trước khi chạy lệnh terraform plan cục bộ để tạo ra quyền tối thiểu cần thiết cho cơ sở hạ tầng của bạn.
Tại sao sử dụng Pike:
Bảo mật: Nâng cao bảo mật bằng cách thúc đẩy nguyên tắc tối thiểu quyền trong các vai trò IAM
Hiệu quả: Tối ưu hóa quản lý quyền bằng cách tự động hóa việc tạo chính sách IAM
Bạn có thể sử dụng Pike để quét một thư mục chứa các tệp Terraform và nó sẽ tạo ra các chính sách IAM cần thiết.
$pike scan -d /terraform-infra/
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"ec2:MonitorInstances",
"ec2:UnmonitorInstances",
"ec2:DescribeInstances",
"ec2:DescribeTags",
...
13.) Terratag (by env0)
Terratag là một công cụ được thiết kế để gán các thẻ hoặc nhãn cho một collection hoàn chỉnh các tệp Terraform hoặc Terragrunt. Nó cho phép áp dụng các thẻ hoặc nhãn cho các tài nguyên trong AWS, GCP và Azure.
Khi nào nên sử dụng Terratag:
- Sử dụng Terratag khi việc duy trì các thẻ trở nên khó khăn thông qua công việc thủ công và bạn tin tưởng vào việc tự động hóa quy trình này.
Tại sao sử dụng Terratag:
Scalability: Tối ưu hóa quy trình gắn thẻ trên quy mô ứng dụng.
Accuracy: Giảm thiểu lỗi của con người khi thêm thẻ.
Retrospective Tagging: Cho phép gắn thẻ lại cho các tài nguyên IaC đã triển khai trước đó.
Management and Reporting: Hỗ trợ quản lý chi phí, tổ chức và báo cáo thông qua việc gắn thẻ.
Visualization and Understanding
14.) Blast Radius
Blast Radius là một công cụ được thiết kế để cung cấp visualizations hình ảnh tương tác của đồ thị phụ thuộc của Terraform. Nó đặc biệt hữu ích để hiểu và truyền đạt kiến trúc và tác động tiềm ẩn của các thay đổi trong cơ sở hạ tầng được quản lý bằng Terraform.
Khi nào nên sử dụng Blast Radius:
- Chạy Blast Radius cục bộ khi lập planning hoặc xem xét các thay đổi (sau khi chạy terraform plan) để hiểu tác động tiềm ẩn trước khi áp dụng các thay đổi bằng Terraform.
Tại sao nên sử dụng Blast Radius:
Understanding complex dependencies: Minh họa các kết nối tài nguyên Terraform để biểu diễn rõ ràng hơn
Risk assessmen: Đánh giá các tác động tiềm ẩn của các thay đổi trên toàn bộ cơ sở hạ tầng của bạn
Optimization: Sử dụng thông tin trực quan để xác định và giải quyết các không hiệu quả trong cấu hình Terraform
Dưới đây là một đồ thị điển hình của cấu hình Terraform, đủ để triển khai một instance EC2 đơn (chạy một máy chủ web) và elastic load balancer .
15.) Terraform Visual
Terraform Visual là một công cụ tạo ra một biểu đồ trực quan của kế hoạch terraform của bạn, giúp dễ dàng hiểu cấu trúc và các thay đổi trong cơ sở hạ tầng được quản lý bằng Terraform.
Khi nào nên sử dụng Terraform Visual:
- Sử dụng Terraform Visual khi xem xét kế hoạch terraform của bạn, đặc biệt là khi liên quan đến các thay đổi phức tạp trong mã nguồn Terraform.
Dưới đây là một biểu đồ mẫu của Terraform Visual mô tả EC2 của AWS, security groups và một bucket S3
16.) InfraMap
Như Blast Radius, InfraMap tạo ra biểu đồ trực quan về cơ sở hạ tầng của bạn dựa trên trạng thái hoặc cấu hình của Terraform, cung cấp một cái nhìn tổng quan về cơ sở hạ tầng của bạn, điều này đặc biệt hữu ích cho các môi trường lớn và phức tạp.
Khi nào nên sử dụng InfraMap:
- Sử dụng InfraMap khi lập kế hoạch cho cơ sở hạ tầng mới hoặc khi xem xét các thay đổi để hiểu về kiến trúc và cách các tài nguyên tương tác với nhau.
Learn more about InfraMap here.
Documentation and Workflow Management
17.) Terraform-docs
Terraform-docs là một công cụ tự động tạo tài liệu từ các module Terraform trong các định dạng đầu ra khác nhau, bao gồm markdown, JSON và các định dạng khác. Điều này đặc biệt hữu ích để duy trì tài liệu cập nhật của đầu vào, đầu ra, nhà cung cấp và tài nguyên của các module Terraform của bạn.
Khi nào nên sử dụng Terraform-docs:
- Chạy Terraform-docs cục bộ mỗi khi bạn cập nhật các module Terraform của mình để đồng bộ tài liệu với mã của bạn.
Tại sao sử dụng Terraform-docs:
Automated documentation: Tự động hóa quy trình tạo tài liệu
Improved understanding: Tài liệu rõ ràng về các module tăng cường sự cộng tác của nhóm
Efficiency: Tối ưu hóa quy trình và giảm thiểu lỗi trong các dự án lớn với nhiều module
18.) TFSwitch
TFSwitch is a CLI tool cho phép dễ dàng chuyển đổi giữa các phiên bản Terraform khác nhau, đơn giản hóa quy trình làm việc trong các môi trường sử dụng nhiều phiên bản Terraform.
Khi nào nên sử dụng TFSwitch:
- Sử dụng TFSwitch cục bộ khi bạn đang làm việc trên nhiều dự án Terraform khác nhau yêu cầu các phiên bản Terraform khác nhau.
Tại sao nên sử dụng TFSwitch:
Ease of use: Dễ dàng chuyển đổi giữa các phiên bản Terraform
Project-specific versioning: Xác định các phiên bản Terraform cho từng dự án để duy trì tính nhất quán
Bạn có thể chạy lệnh tfswitch để hiển thị tất cả các phiên bản như sau:
$ tfswitch
Use the arrow keys to navigate: ↓ ↑ → ←
? Select Terraform version:
▸ 1.1.7 *recent
1.1.6
1.1.5
1.1.4
1.1.3
…
19.) Terramate
Terramate là một công cụ điều phối mã nguồn mở cho Terraform, OpenTofu, Pulumi, Cloudformation, và các công cụ khác, giúp tối ưu hóa và mở rộng các quy trình làm việc với mã nguồn cơ sở hạ tầng như IaC.
Khi nào nên sử dụng Terramate:
- Sử dụng Terramate khi quản lý cơ sở hạ tầng tương tự trên nhiều môi trường (dev, staging, production) để đảm bảo tính nhất quán và giảm thiểu sự trùng lặp.
Check out Terramate documentation for more information.
20.) Atlantis
Atlantis tự động hóa việc xem xét và triển khai Terraform qua các yêu cầu kéo (pull requests), tối ưu hóa sự cộng tác và đảm bảo tính nhất quán trong các triển khai Terraform.
Khi nào nên sử dụng Atlantis:
- Dù đó là môi trường cục bộ hay CI/CD, Atlantis xử lý phần Terraform, đảm bảo rằng plan và apply được thực thi dựa trên các sự kiện của VCS.
Tại sao sử dụng Atlantis:
Automated workflows: Tối ưu hóa các quy trình Terraform bằng cách tự động chạy terraform plan và apply, với kết quả sẵn sàng để xem xét
Collaboration and review: Tăng cường sự cộng tác của nhóm bằng cách tích hợp việc xem xét thay đổi mã vào quy trình yêu cầu kéo
Security and control: Cung cấp một dấu vết kiểm tra chi tiết về người đã thực hiện những gì và khi nào
Read this Atlantis guide for more information.
21.) Terraform Cloud
Terraform Cloud (TFC) là một dịch vụ do HashiCorp quản lý cung cấp các tính năng cộng tác, quản trị và quản lý quy trình tự động, là lựa chọn lý tưởng cho các nhóm đang tìm kiếm một giải pháp Terraform có khả năng mở rộng, dựa trên đám mây.
Khi nào nên sử dụng Terraform Cloud:
- Terraform Cloud hữu ích để cho phép các nhóm cộng tác trên cơ sở hạ tầng và đảm bảo rằng mọi người đều làm việc dựa trên một bộ cấu hình nhất quán và các thay đổi được xem xét và áp dụng theo cách kiểm soát.
Tại sao nên sử dụng Terraform Cloud:
Collaboration and governance: Cung cấp một nền tảng cộng tác với kiểm soát truy cập, module riêng tư và cấu hình chia sẻ
State management: Xử lý trạng thái Terraform một cách an toàn, cung cấp lịch sử phiên bản, khóa và phát hiện lệch
Secrets management: Lưu trữ và quản lý dữ liệu nhạy cảm một cách an toàn
Cost estimation: Cung cấp ước lượng chi phí cho cơ sở hạ tầng của bạn
For more information you can also check out my analysis of Terraform Cloud pricing.
22.) env0
env0 là một nền tảng quản lý IaC tiên tiến được thiết kế để cung cấp sự cộng tác mượt mà và tự động hóa trong các triển khai phức tạp có quy mô lớn.
Khi nào nên sử dụng env0:
Ngoài các tính năng của Terraform Cloud được đề cập ở trên, env0 còn cung cấp kiểm soát chi phí và quyền truy cập động, tính năng bảo mật nâng cao, các công cụ cộng tác và hỗ trợ cho nhiều khung như OpenTofu, Pulumi và AWS CF.
Hơn nữa, env0 sử dụng cấu trúc giá dựa trên việc triển khai, làm cho nó phù hợp hơn cho nhiều hoạt động quy mô lớn, so với cấu trúc giá dựa trên "Resources Under Management" (RUM) của TFC.
Tại sao nên sử dụng env0:
IaC-centric pipelines: Tích hợp mượt mà các công cụ khác nhau vào env0 bằng cách sử dụng các luồng tùy chỉnh với công cụ ưa thích của bạn.
Unlimited concurrency: Cho phép thực hiện chạy đồng thời không giới hạn mà không phải trả thêm chi phí cho các thực thi đồng thời.
IaC FinOps: Cung cấp bảng điều khiển giám sát chi phí và khả năng thiết lập ngưỡng ngân sách, cảnh báo và chính sách chi tiết.
Flexible workflows: Cung cấp tính linh hoạt với kế hoạch PR, triển khai liên tục và các chính sách tùy chỉnh cho nhu cầu cụ thể của nhóm.
Managed self-service: Tối ưu hóa hoạt động với dịch vụ tự quản lý và Chính sách-như-là mã, đơn giản hóa triển khai cơ sở hạ tầng.
Continuous IaC visibility: Đảm bảo thông tin liên tục về cơ sở hạ tầng của bạn, đặc trưng bởi việc phát hiện lệch tự động.
Frequently Asked Questions/FAQs
For additional context, here is a list of questions that will help you understand the need and use cases for the tools I’ve described above.
Q. What is the difference between Terraform lint and validate?
terraform validate checks whether Terraform configurations are syntactically valid and consistent. Meanwhile, linting tools like TFLint extend validation by enforcing best practices and conventions in writing an IaC.
Q. How do you integrate OPA with Terraform?
On a high level, once you’ve installed OPA on your local machine, you write the OPA policy in Rego and generate a JSON output of your terraform plan. After that, you run the OPA policy against that terraform plan JSON to validate the policy rules you defined. You can check the step-by-step tutorial here.
Q. What is the difference between Checkov and Tfsec?
There are a few key differences between the two. The first one is Checkov, which supports a wide range of integrations like Terraform, AWS Cloudformation, Helm Charts, and others, while Tfsec just supports Terraform. To find an in-depth comparison between these two, check out this blog.
Q. Can you run Terragrunt with Terraform Cloud?
Terragrunt indirectly runs Terraform commands, while Terraform Cloud executes them directly, disallowing Terragrunt usage within Terraform Cloud. However, you can use Terragrunt via CLI to trigger Terraform runs on TFC using a remote backend, where runs and state are managed in TFC, but Terragrunt can’t be run from the TFC UI.
Q. Can Terraform detect drifts by itself?
Terraform itself does not inherently detect drifts; it primarily manages infrastructure as defined in the IaC. For more robust and automated drift detection, third-party tools like env0, TFC, Terrateam, Driftctl (and others) are designed to track and manage drifts in Terraform-managed resources specifically.
Written by env0 Team