Ansible vs Terraform di 2026: Infrastructure as Code dan Pertanyaan Wawancara DevOps
Perbandingan Ansible vs Terraform di 2026: configuration management vs provisioning, kapan menggunakan masing-masing, pertimbangan OpenTofu, dan persiapan wawancara DevOps.

Ansible vs Terraform merupakan salah satu pertanyaan perbandingan yang paling sering muncul dalam wawancara DevOps, namun pembingkaian pertanyaan ini sendiri mengungkapkan kesalahpahaman: kedua tool ini menyelesaikan masalah yang berbeda. Ansible 2.20 menangani configuration management dan deployment aplikasi, sementara Terraform 1.15 menyediakan (provisioning) resource infrastruktur. Memahami kapan masing-masing unggul, di mana keduanya overlap, dan bagaimana keduanya saling melengkapi membedakan DevOps engineer senior dari mereka yang masih mempelajari fundamental.
Terraform mengelola state infrastruktur secara deklaratif (VM, jaringan, database). Ansible mengkonfigurasi apa yang berjalan di atas infrastruktur tersebut secara prosedural (package, service, file). Sebagian besar environment production menggunakan keduanya.
Deklaratif vs Prosedural: Perbedaan Fundamental
Terraform menggunakan pendekatan deklaratif. File konfigurasi mendeskripsikan state akhir yang diinginkan, dan Terraform menghitung perubahan yang diperlukan untuk mencapainya. Pendekatan ini bekerja dengan baik untuk infrastruktur yang perlu dibuat, dimodifikasi, atau dihapus sebagai satu kesatuan.
# main.tf
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.medium"
tags = {
Name = "web-server"
Environment = "production"
}
}
resource "aws_security_group" "web" {
name = "web-sg"
description = "Allow HTTP and HTTPS"
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}Menjalankan terraform apply akan membuat kedua resource jika belum ada, atau memperbarui agar sesuai dengan konfigurasi. Menjalankannya lagi tanpa perubahan tidak menghasilkan operasi apa pun: Terraform membandingkan konfigurasi dengan state file-nya dan tidak menemukan yang perlu dilakukan.
Ansible menggunakan pendekatan prosedural dengan task yang dieksekusi secara berurutan. Meskipun modul Ansible sering bersifat idempoten (menjalankannya dua kali menghasilkan hasil yang sama), playbook itu sendiri mendeskripsikan urutan aksi daripada state akhir.
# webserver.yml
- name: Configure web server
hosts: webservers
become: true
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
update_cache: true
- name: Copy nginx configuration
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Restart nginx
- name: Ensure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restartedSetiap task berjalan secara berurutan. Pola notify/handler memberikan beberapa perilaku deklaratif: handler hanya berjalan sekali di akhir, terlepas dari berapa banyak task yang memicunya.
State Management: Topik Wawancara yang Kritis
Terraform memelihara state file yang memetakan konfigurasi ke resource nyata. State ini melacak ID resource, dependensi, dan metadata. Tanpa state file, Terraform tidak dapat menentukan apa yang ada atau apa yang perlu diubah.
| Aspek | Terraform | Ansible |
|---|---|---|
| Penyimpanan state | Wajib (file lokal atau remote backend) | Tidak ada secara default |
| Deteksi drift | Built-in via terraform plan | Memerlukan pengecekan eksplisit |
| Pelacakan resource | Otomatis melalui state | Berbasis inventory |
| Rollback | Destroy dan recreate dari state | Tidak ada rollback native |
Ansible tidak memiliki state file yang setara. Ansible terhubung ke sistem target dan mengeksekusi task, mengandalkan state sistem saat ini dan idempotensi modul. Hal ini membuat Ansible lebih sederhana untuk memulai tetapi lebih sulit untuk melacak perubahan dari waktu ke waktu.
Pertanyaan wawancara yang umum menanyakan tentang keamanan state file. State Terraform dapat berisi data sensitif: password database, API key, identifier resource. Deployment production menyimpan state secara remote (S3, Azure Blob, Terraform Cloud) dengan enkripsi dan kontrol akses.
# backend.tf
terraform {
backend "s3" {
bucket = "company-terraform-state"
key = "prod/infrastructure.tfstate"
region = "us-east-1"
encrypt = true
dynamodb_table = "terraform-locks"
}
}Tabel DynamoDB menyediakan locking, mencegah dua engineer memodifikasi state secara bersamaan.
Kapan Menggunakan Masing-masing Tool
Terraform unggul dalam provisioning infrastruktur cloud: virtual machine, managed database, load balancer, IAM role, VPC. Tool ini menangani dependensi antar resource secara otomatis dan mendukung semua provider cloud utama melalui sintaks HCL yang konsisten.
Ansible unggul dalam mengkonfigurasi sistem yang sudah ada: menginstal package, mengelola user, men-deploy kode aplikasi, mengorkestrasikan deployment multi-langkah. Ansible terhubung melalui SSH (atau WinRM untuk Windows) tanpa memerlukan agent di mesin target.
Zona overlap menyebabkan kebingungan. Keduanya dapat menginstal software di VM. Terraform dapat menggunakan provisioner untuk menjalankan script setelah pembuatan resource. Ansible dapat membuat resource cloud melalui modul seperti amazon.aws.ec2_instance. Namun menggunakan masing-masing tool di luar kekuatannya menyebabkan masalah maintainability.
Menggunakan provisioner Terraform secara ekstensif untuk configuration management menciptakan infrastruktur yang rapuh. Provisioner hanya berjalan pada waktu pembuatan, bukan pada apply berikutnya. Gunakan Terraform untuk infrastruktur, kemudian serahkan ke Ansible untuk konfigurasi.
Alur Kerja Gabungan di Production
Sebagian besar organisasi menggunakan kedua tool secara bersamaan. Terraform menyediakan infrastruktur dan menghasilkan output detail koneksi. Ansible mengonsumsi output tersebut untuk mengkonfigurasi sistem.
# outputs.tf
output "web_server_ips" {
value = aws_instance.web[*].private_ip
description = "Private IPs of web servers"
}
output "db_endpoint" {
value = aws_rds_instance.main.endpoint
description = "RDS endpoint for application config"
}Pipeline CI/CD menjalankan Terraform terlebih dahulu, menangkap output, menghasilkan inventory Ansible secara dinamis, kemudian menjalankan playbook terhadap infrastruktur baru.
# ansible/inventory/aws_ec2.yml
plugin: amazon.aws.aws_ec2
regions:
- us-east-1
filters:
tag:Environment: production
instance-state-name: running
hostnames:
- private-ip-address
groups:
webservers: "'web' in tags.Role"
databases: "'db' in tags.Role"Inventory dinamis ini melakukan query ke AWS secara langsung, mengelompokkan instance berdasarkan tag mereka. Tidak diperlukan manajemen IP manual.
Siap menguasai wawancara DevOps Anda?
Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.
OpenTofu: Fork yang Mengubah Lanskap
HashiCorp merelisensikan Terraform di bawah Business Source License (BSL) pada Agustus 2023. Komunitas merespons dengan mem-fork Terraform 1.5 menjadi OpenTofu, yang sekarang dihosting di bawah Linux Foundation.
Per Agustus 2026, OpenTofu 1.11.6 tetap menjadi pengganti drop-in untuk sebagian besar workflow Terraform. Sintaks HCL yang sama, ekosistem provider yang sama, format state yang sama. OpenTofu telah menambahkan fitur yang tidak ada di binary open-source Terraform: enkripsi state, provider for_each, dan evaluasi variabel awal.
Untuk persiapan wawancara, pahami perbedaan lisensi. BSL mengizinkan penggunaan internal tetapi membatasi pembuatan produk yang bersaing. Organisasi yang khawatir tentang vendor lock-in atau dengan persyaratan compliance tertentu mungkin lebih memilih lisensi MPL 2.0 OpenTofu. Akuisisi HashiCorp oleh IBM pada Desember 2024 menambahkan variabel lain pada diskusi hubungan vendor.
Pertanyaan Wawancara DevOps yang Umum
Q: Apakah Ansible dapat menggantikan Terraform?
Tidak secara efektif. Ansible dapat membuat resource cloud, tetapi tidak memiliki manajemen state. Menjalankan playbook yang sama dua kali mungkin membuat resource duplikat. State file Terraform melacak apa yang ada dan menghitung perubahan minimal. Gunakan Ansible untuk apa yang menjadi keunggulannya: configuration management.
Q: Bagaimana menangani secret di Terraform?
Jangan pernah commit secret ke version control. Gunakan environment variable, integrasi Vault, atau secret manager provider cloud. Tandai variabel sebagai sensitive untuk mencegahnya muncul di log:
# variables.tf
variable "db_password" {
type = string
sensitive = true
description = "Database password from Vault or environment"
}Q: Apa itu idempotensi Ansible?
Operasi idempoten menghasilkan hasil yang sama baik dijalankan sekali maupun berkali-kali. Modul apt dengan state: present menginstal package jika tidak ada dan tidak melakukan apa-apa jika sudah terinstal. Menulis playbook yang idempoten mencegah perubahan yang tidak diinginkan pada eksekusi berikutnya.
Q: Bagaimana menguji kode infrastruktur?
Terraform: terraform validate memeriksa sintaks, terraform plan melihat preview perubahan, dan tool seperti Terratest menjalankan integration test. Ansible: ansible-lint menangkap masalah, mode --check melakukan dry run, dan Molecule menguji role terhadap container.
Untuk persiapan wawancara Terraform yang lebih mendalam, lihat Terraform Interview Questions: Infrastructure as Code Complete Guide. Praktikkan hands-on dengan modul Terraform Basics dan Ansible Configuration Management.
Kompatibilitas Versi dan Ekosistem
Versi stabil saat ini per Agustus 2026:
| Tool | Versi | Tanggal Rilis | Fitur Utama |
|---|---|---|---|
| Ansible | 2.20.5 | April 2026 | Manajemen collection yang ditingkatkan |
| Terraform | 1.15.8 | Juli 2026 | Dukungan Windows ARM64, fungsi convert |
| OpenTofu | 1.11.6 | April 2026 | Enkripsi state, provider for_each |
Arsitektur collection Ansible memisahkan fungsionalitas inti dari modul spesifik provider. Collection amazon.aws menerima update secara independen dari Ansible core. Hal ini penting untuk version pinning dalam pipeline CI/CD.
Versioning provider Terraform mengikuti prinsip serupa. Lock file (terraform.lock.hcl) memastikan versi provider yang konsisten di antara anggota tim dan sistem CI.
# versions.tf
terraform {
required_version = ">= 1.15.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.60"
}
}
}Memilih di Antara Keduanya: Framework Keputusan
Pertanyaannya jarang tentang Ansible atau Terraform. Pertanyaannya adalah tool mana yang menangani tanggung jawab mana.
| Use Case | Tool yang Direkomendasikan |
|---|---|
| Provision VM, database, jaringan | Terraform |
| Konfigurasi OS, instal package | Ansible |
| Kelola resource Kubernetes | Terraform atau kubectl/Helm |
| Deploy kode aplikasi | Ansible atau CI/CD native |
| Buat IAM role dan policy | Terraform |
| Kelola akun user di server | Ansible |
| Setup infrastruktur monitoring | Terraform (buat resource) + Ansible (konfigurasi agent) |
Untuk gambaran lengkap tentang bagaimana tool-tool ini cocok dalam workflow deployment modern, lihat CI/CD Pipeline Interview Questions.
Yang Harus Diketahui Engineer Senior tentang Ansible dan Terraform
- Terraform mengelola state infrastruktur secara deklaratif; Ansible mengkonfigurasi sistem secara prosedural. Menggunakan keduanya bersama menghasilkan infrastruktur yang maintainable.
- Keamanan state file penting. Simpan state Terraform secara remote dengan enkripsi dan locking yang diaktifkan.
- OpenTofu menyediakan alternatif berlisensi MPL untuk Terraform dengan fitur tambahan. Migrasi straightforward untuk sebagian besar workflow.
- Idempotensi tidak otomatis. Tulis playbook yang menghasilkan hasil konsisten pada eksekusi berulang.
- Inventory dinamis mengeliminasi manajemen host manual. Query provider cloud secara langsung untuk infrastruktur terkini.
- Version pinning mencegah kejutan. Lock versi provider di Terraform; pin versi collection di Ansible.
- Testing kode infrastruktur memerlukan pendekatan berbeda:
terraform planuntuk preview perubahan, mode--checkuntuk Ansible dry run, framework integration test untuk keduanya.
Mulai berlatih!
Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.
Bisakah kamu menemukan bug di DevOps?
Satu potongan kode nyata, satu bug tersembunyi, satu percobaan per hari. Tanpa akun untuk mencoba.

Ditulis oleh
Anthony Fillion-MailletPendiri SharpSkill
Developer fullstack selama lebih dari 10 tahun. Ia menjalankan SharpSkill dan bertanggung jawab atas semua yang diterbitkan di sini.
Diperbarui 22 Agustus 2026
Bagikan
Artikel terkait

Manajemen Secrets Kubernetes 2026: External Secrets, Vault, dan Pertanyaan Interview
Panduan lengkap manajemen secrets Kubernetes dengan External Secrets Operator dan HashiCorp Vault. Termasuk konfigurasi produksi, rotasi otomatis, dan pertanyaan interview DevOps.

Docker Compose 2026: Aplikasi Multi-Container, Jaringan, dan Pertanyaan Interview DevOps
Pelajari Docker Compose untuk aplikasi multi-container dengan networking, volumes, dan deployment produksi. Dilengkapi pertanyaan interview DevOps.

Kubernetes Helm Charts 2026: Panduan Lengkap Packaging, Deployment, dan Pertanyaan Interview
Pelajari Helm Charts Kubernetes secara mendalam dengan tutorial praktis tentang pembuatan chart, templating, deployment, dan pertanyaan interview yang sering ditanyakan.