Mengelola infrastruktur sebagai kode: kombinasi Terraform dan Ansible, alur GitOps untuk perubahan yang diaudit, dan penerapan SDLC ke pekerjaan operasi agar konsisten dan dapat diulang

Sepanjang series ini, kita membangun satu per satu: provisioning (episode 9), cloud (episode 13), K8s (episode 15), hingga keandalan (episode 24). Episode 25 ini menyatukan semuanya dalam satu filosofi yang menjadi standar operasi modern: infrastructure as code (IaC) — infrastruktur dikelola sebagai kode yang bisa di-review, di-version control, dan diaudit, bukan sebagai klik-klik manual.
Mengapa episode ini penting? Karena kode adalah sumber kebenaran: jika infrastruktur ada di kode, kalian bisa membangun ulang kapan saja, tahu persis apa yang berubah (dari git history), dan bisa me-review setiap perubahan seperti review kode aplikasi. Episode ini membahas kombinasi Terraform + Ansible, konsep GitOps, dan bagaimana SDLC diterapkan ke operasi.
Terraform dan Ansible saling melengkapi, bukan bersaing:
| Aspek | Terraform | Ansible |
|---|---|---|
| Fokus | Provision sumber daya (infra) | Configure di dalam sumber daya (OS/app) |
| State | Stateful (terraform.tfstate) | Stateless (idempotent per run) |
| Objek | Cloud resource, network, DNS | Paket, file, service, user |
| Siklus | Create/update/destroy resource | Pastikan kondisi sesuai |
Pembagian tugas yang ideal:
Terraform membuat sumber daya (VM, jaringan, cloud), lalu Ansible mengonfigurasi di dalamnya (paket, file, service, user). Prinsipnya: IaC untuk hal yang "lahir dan mati" (infra), configuration management untuk hal yang "hidup di dalam" (state OS).
Terraform — provision instance:
provider "aws" {
region = "ap-southeast-1"
}
resource "aws_instance" "web" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.micro"
vpc_security_group_ids = [aws_security_group.web.id]
tags = {
Name = "web-prod"
}
provisioner "remote-exec" {
inline = [
"sudo apt update",
"sudo apt install -y ansible"
]
}
}Ansible — konfigurasi di dalamnya:
- name: Konfigurasi web server
hosts: web-prod
become: true
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
- name: Deploy site
ansible.builtin.template:
src: default.conf.j2
dest: /etc/nginx/sites-available/default
notify: reload nginx
handlers:
- name: reload nginx
ansible.builtin.service:
name: nginx
state: reloadedAlur terpadu:
terraform plan
terraform apply -auto-approve
ansible-playbook -i inventory/prod playbooks/web.ymlGitOps mengambil prinsip IaC satu langkah lebih jauh: git adalah satu-satunya sumber kebenaran, dan semua perubahan infrastruktur lewat pull request yang di-review. Ciri-ciri alur GitOps:
Keuntungannya bagi System Engineer: rollback = revert commit, dan audit (episode 20) = baca git history. Tidak ada lagi "siapa yang mengubah konfigurasi itu?" — jawabannya selalu ada di git.
Infrastruktur kini dirawat seperti perangkat lunak — lengkap dengan SDLC:
| Fase | Praktik Operasi |
|---|---|
| Planning | Issue/ticket untuk setiap perubahan |
| Coding | Konfigurasi/playbook di git, branch per fitur |
| Testing | terraform plan, ansible --check, uji di staging |
| Deployment | Pipeline CI/CD, rollback otomatis |
| Monitoring | Verifikasi post-deploy via dashboard (episode 10) |
| Maintenance | Review berkala, upgrade versi tooling |
Praktik yang wajib dibiasakan:
terraform plan -out=tfplan # lihat perubahan sebelum terjadi
ansible-playbook --check web.yml # simulasi, tanpa perubahan nyata--check (Ansible) dan plan (Terraform) adalah "compile" infrastruktur — mendeteksi masalah sebelum menyentuh produksi.
Skenario lab minimal (bisa dengan provider lokal, misal KVM + Ansible saja):
# 1. Repo git untuk konfigurasi
git init infra && cd infra
mkdir -p terraform ansible
# 2. Tulis Terraform untuk provision (atau manual sekali)
# 3. Tulis Ansible playbook (web.yml di atas)
# 4. Simpan inventory & jalankan dengan check dulu
ansible-playbook --check -i inventory playbooks/web.yml
# 5. Terapkan & verifikasi
ansible-playbook -i inventory playbooks/web.yml
curl http://<host>/
# 6. Commit sebagai sumber kebenaran
git add . && git commit -m "feat: provision web server dengan IaC"Tip
Mulailah dari yang kecil: version-control satu playbook Ansible yang sudah kalian pakai (episode 9), lalu tambahkan Terraform untuk cloud (episode 13). IaC adalah perubahan budaya — adopsi bertahap lebih efektif daripada proyek besar yang menyeramkan.
apply tanpa plan/--check — perubahan destruktif terlanjur terjadi.Inti yang harus dibawa pulang:
plan/--check), deploy, monitor.Di episode 26 selanjutnya kita melihat peta besar: ekosistem & tren modern 2026 — ke mana arah profesi dan teknologi. Sampai jumpa di episode 26!