Infrastructure as Code¶
Infrastructure as Code (IaC) adalah praktik mengelola dan menyediakan infrastruktur melalui file konfigurasi yang dapat dibaca mesin, bukan melalui proses manual atau interaktif.
| Nama | Deskripsi | Dokumentasi | Tutorial |
|---|---|---|---|
| Ansible | Alat otomasi open-source yang umum digunakan untuk manajemen konfigurasi dan otomasi infrastruktur. | Docs | Getting Started |
| AWS CDK | Kerangka kerja open-source untuk mendefinisikan infrastruktur cloud menggunakan bahasa pemrograman dan menyediakannya melalui AWS CloudFormation. | Docs | CDK Workshop |
| Chef | Platform open-source untuk manajemen konfigurasi dan otomasi infrastruktur. | Docs | Chef Tutorials |
| Pulumi | Platform Infrastructure as Code yang memungkinkan pendefinisian sumber daya cloud menggunakan bahasa pemrograman umum. | Docs | Getting Started |
| Terraform | Alat untuk menyediakan dan mengelola sumber daya infrastruktur di seluruh penyedia cloud dan pusat data. | Docs | Terraform Tutorials |
| OpenTofu | Fork open-source Terraform yang digerakkan komunitas, kompatibel dengan konfigurasi dan penyedia Terraform yang ada. | Docs | |
| Azure ARM / Bicep | Alat Infrastructure as Code Azure bawaan untuk mendefinisikan dan mendeploy sumber daya Azure menggunakan template deklaratif. | Docs | Bicep Getting Started |
| Google Cloud Deployment Manager | Layanan Infrastructure as Code Google Cloud bawaan untuk mendefinisikan dan mendeploy sumber daya menggunakan template deklaratif. | Docs | Getting Started |
| AWS CloudFormation | Layanan Infrastructure as Code AWS bawaan untuk memodelkan dan menyediakan sumber daya menggunakan template deklaratif. | Docs | Getting Started |
Perbandingan Alat¶
Deklaratif vs Imperatif¶
- Deklaratif - Mendefinisikan kondisi akhir yang diinginkan (Terraform, Pulumi, AWS CDK, Azure ARM / Bicep, Google Cloud Deployment Manager)
- Imperatif - Mendefinisikan langkah-langkah yang diperlukan untuk mencapai kondisi (Ansible, Chef)
Dukungan Bahasa¶
- HCL - Terraform, OpenTofu
- YAML - Ansible
- JSON / YAML - AWS CloudFormation
- YAML (config) / Python, Jinja2 (template) - Google Cloud Deployment Manager
- Bicep / JSON - Azure ARM, Bicep
- Bahasa Pemrograman - Pulumi (Python, TypeScript, Go, C#), AWS CDK (TypeScript, Python, Java, C#)
- Ruby - Chef
Dukungan Penyedia Cloud¶
- Multi-cloud - Terraform, Pulumi, Ansible
- Berfokus AWS - AWS CDK, CloudFormation
- Berfokus Azure - Azure ARM, Bicep
- Berfokus Google - Google Cloud Deployment Manager
- Tidak terikat penyedia - Chef, Ansible
Punya saran, tambahan, praktik terbaik, atau referensi? Silakan berkontribusi untuk membantu orang lain belajar!