Infrastructure as Code (IaC) adalah proses penyediaan dan pengelolaan infrastruktur aplikasi software menggunakan code, bukan antarmuka pengguna grafis (GUI) atau skrip command line.
Penyediaan infrastruktur aplikasi biasanya mencakup penyiapan dan pengelolaan virtual machine, koneksi database, penyimpanan, dan elemen infrastruktur lainnya. Mengelola infrastruktur ini secara manual memakan waktu dan rentan terhadap error, terutama saat mengelola aplikasi dalam skala besar.
IaC memungkinkan Anda menentukan infrastruktur dengan file konfigurasi, sehingga Anda dapat membangun, mengubah, dan mengelola infrastruktur dengan cara yang aman dan dapat diulang. Anda dapat menentukan konfigurasi resource yang bisa dibuat versi, digunakan kembali, dan dibagikan. IaC memungkinkan Anda menentukan kondisi infrastruktur yang Anda inginkan. Kemudian, Anda dapat men-deploy konfigurasi yang sama beberapa kali untuk membuat lingkungan pengembangan, pengujian, dan produksi yang dapat direproduksi.
IaC memungkinkan Anda menangani penyediaan dan konfigurasi infrastruktur dengan cara yang sama seperti saat Anda menangani kode aplikasi. Anda dapat menyimpan logika konfigurasi penyediaan di kontrol sumber dan memanfaatkan pipeline continuous integration dan continuous deployment (CI/CD).
Manfaat IaC
Menggunakan IaC untuk menyiapkan dan mengelola infrastruktur aplikasi adalah praktik terbaik untuk sejumlah kasus penggunaan umum. Google mengelola sistemnya dengan IaC, dan menetapkannya sebagai praktik standar secara internal.
IaC menawarkan manfaat berikut:
- Anda dapat menentukan infrastruktur berdasarkan kebutuhan dan menggunakan kembali konfigurasi yang sama untuk membuat beberapa lingkungan secara konsisten.
- Anda dapat mengotomatiskan pembuatan dan pengelolaan resource cloud, termasuk untuk lingkungan deployment dan pengujian.
- Anda dapat memperlakukan perubahan infrastruktur seperti Anda memperlakukan perubahan aplikasi. Misalnya, Anda dapat memastikan bahwa perubahan pada konfigurasi ditinjau dan divalidasi secara otomatis. Mengelola lingkungan produksi melalui proses yang dikontrol perubahan menggunakan IaC adalah praktik terbaik.
- Anda dapat menyimpan histori semua perubahan konfigurasi. Perubahan dapat diaudit dan dikembalikan.
- Anda dapat memiliki satu sumber tepercaya untuk infrastruktur cloud Anda.
Fitur IaC untuk Google Cloud
Google Cloud terintegrasi erat dengan banyak alat IaC. Pilih salah satu alat berikut, bergantung pada kasus penggunaan Anda:
Terraform
Secara umum, untuk mengonfigurasi dan mengelola infrastruktur Google Cloud menggunakan kode, gunakan penyedia Terraform untuk Google Cloud.
HashiCorp Terraform adalah alat IaC yang memungkinkan Anda menentukan resource di cloud dan infrastruktur lokal dalam file konfigurasi yang dapat dibaca manusia, yang dapat Anda versikan, gunakan kembali, dan bagikan. Anda kemudian dapat menggunakan alur kerja yang konsisten untuk menyediakan dan mengelola semua infrastruktur selama siklus prosesnya. Untuk mengetahui informasi selengkapnya, baca Ringkasan Terraform di Google Cloud.
Infrastructure Manager
Jika ingin mengotomatiskan deployment konfigurasi Terraform, gunakan Infrastructure Manager (Infra Manager).
Infra Manager mengotomatiskan deployment dan pengelolaan resource infrastruktur Google Cloud menggunakan Terraform. Dengan Infra Manager, Anda dapat men-deploy secara terprogram ke Google Cloud, sehingga Anda dapat menggunakan layanan ini, bukan mempertahankan toolchain yang berbeda agar dapat berfungsi dengan Terraform di Google Cloud. Untuk informasi selengkapnya, lihat Ringkasan Pengelola Infra.
Terraform Cloud dan Terraform Enterprise
Jika Anda memerlukan manajemen perubahan penuh dengan Terraform di seluruh organisasi Anda, gunakan Terraform Cloud atau Terraform Enterprise.
Terraform Cloud adalah aplikasi software as a service (SaaS) yang menjalankan Terraform di lingkungan jarak jauh yang stabil, serta menyimpan state dan secret dengan aman. Terraform Cloud juga terintegrasi dengan Terraform CLI dan terhubung ke sistem kontrol versi (VCS) umum seperti GitHub, GitLab, dan Bitbucket. Saat Anda menghubungkan ruang kerja Terraform Cloud ke repositori VCS, commit dan perubahan baru dapat secara otomatis memicu paket Terraform. Terraform Cloud juga menawarkan API sehingga Anda dapat mengintegrasikannya ke dalam alur kerja yang ada.
Terraform Enterprise dapat Anda gunakan untuk menyiapkan distribusi Terraform yang dihosting sendiri. Layanan ini menawarkan batas resource yang dapat disesuaikan dan ideal untuk organisasi dengan persyaratan keamanan dan kepatuhan yang ketat.
Untuk mengetahui informasi selengkapnya, lihat halaman Terraform Editions dalam dokumentasi Hashicorp.
Cloud Development Kit untuk Terraform
Jika Anda ingin membuat infrastruktur dengan bahasa pemrograman bertujuan umum, bukan menggunakan Hashicorp Configuration Language (HCL), gunakan Cloud Development Kit for Terraform (CDKTF).
Dengan CDKTF, Anda dapat mengonfigurasi Terraform menggunakan bahasa pemrograman untuk menentukan dan menyediakan infrastruktur Google Cloud, serta memungkinkan Anda menggunakan toolchain yang ada untuk proses seperti pengujian dan pengelolaan dependensi.
Pulumi
Pulumi adalah alat lain yang dapat Anda gunakan untuk menyediakan infrastruktur menggunakan bahasa pemrograman. Anda dapat menggunakan penyedia Google Cloud untuk Pulumi guna menulis kode infrastruktur menggunakan bahasa pemrograman seperti TypeScript, Python, Go, C#, Java, atau YAML.
Pengontrol Konfigurasi dan Konektor Konfigurasi
Untuk mengelola resource Google Cloud melalui Kubernetes, gunakan Pengontrol Konfigurasi dan Config Connector.
Dengan Config Controller dan Config Connector, Anda dapat mengonfigurasi layanan dan resource Google Cloud menggunakan alat Kubernetes. Anda dapat menggunakan alat GitOps seperti Config Sync dan Kubernetes API, serta dapat mengonfigurasi dan menggunakan primitif engineering platform seperti operator dan webhook akses.
Untuk mengetahui informasi selengkapnya, lihat Ringkasan Config Controller dan ringkasan Config Connector.
Crossplane
Opsi lain untuk mengelola resource Google Cloud melalui Kubernetes adalah dengan menggunakan Crossplane.
Crossplane menghubungkan cluster Kubernetes ke resource eksternal non-Kubernetes, dan memungkinkan tim platform membuat Kubernetes API kustom agar dapat menggunakan resource tersebut. Crossplane berfungsi sebagai pengontrol Kubernetes untuk mengamati status resource eksternal dan memberikan penerapan status. Dengan menginstal Crossplane di cluster Kubernetes, pengguna hanya dapat berkomunikasi dengan Kubernetes. Crossplane mengelola komunikasi ke resource eksternal, seperti Google Cloud. Jika ada yang mengubah atau menghapus resource di luar Kubernetes, Crossplane akan membalikkan perubahan atau membuat ulang resource yang dihapus.
Untuk informasi selengkapnya, lihat dokumentasi Crossplane.
Ansible
Jika Anda ingin mengotomatiskan penyediaan, pengelolaan konfigurasi, deployment aplikasi, orkestrasi, dan proses IT lainnya, gunakan Ansible. Untuk informasi selengkapnya, lihat Ansible untuk Google Cloud.
Langkah selanjutnya
- Pelajari Terraform lebih lanjut
- Pelajari cara membuat server web dasar di Compute Engine menggunakan Terraform
- Pelajari cara menyimpan status Terraform di bucket Cloud Storage