Dalam dunia infrastruktur sebagai kode (Infrastructure as Code/IaC), Terraform telah menjadi salah satu alat utama bagi para profesional IT untuk mengelola dan menyusun infrastruktur baik cloud dan on-premise. Saat kita menggunakan Terraform untuk mengelola sumber daya, penting untuk mempertimbangkan bagaimana Anda akan menyimpan dan mengelola state file Terraform Anda.
Apa itu State Terraform?
State Terraform adalah file yang menyimpan informasi tentang sumber daya yang dikelola oleh Terraform. Ini mencakup informasi tentang konfigurasi sumber daya, ID sumber daya, dan status saat ini dari sumber daya tersebut. State ini sangat penting untuk memungkinkan Terraform melacak perubahan yang dilakukan pada infrastruktur Anda dan memutuskan tindakan yang diperlukan untuk mencapai konfigurasi yang diinginkan.
Penyimpanan state Terraform adalah tahap yang kritis dalam mengelola infrastruktur Anda. Ini memastikan keamanan data sensitif yang mungkin terkandung dalam state file, seperti token akses ke cloud provider Anda. Selain itu, Anda ingin memastikan bahwa state file dapat diakses oleh tim Anda dengan aman, bahkan jika Anda berkolaborasi dalam tim yang berbeda atau jika Anda mengelola beberapa proyek.
Prasyarat
Sebelum memulai ada beberapa syarat yang harus terpenuhi yaitu:
- Telah membuat bucket pada Alibaba Cloud OSS
- Memiliki user RAM dengan akses ke bucket yang telah dibuat sebelumnya
- Telah tersedia Terraform
Prosedur
Buka folder yang berisi berkas Terraform, lalu buat 1 berkas baru dengan nama backend.tf lalu ketik seperti di bawah ini, jangan lupa sesuaikan konfigurasinya dengan konfigurasi yang teman-teman punya.
terraform {
backend "oss" {
bucket = "ariyolo-terraform-state"
key = "terraform.tfstate"
prefix = "iac-cloudflare"
endpoint = "oss-ap-southeast-5.aliyuncs.com"
region = "ap-southeast-5"
access_key = "xxxxxxxxxxxxxxxxx"
secret_key = "yyyyyyyyyyyyyyyyy"
}
}
Nama Variabel | Nilai Variabel |
---|---|
bucket | Nama bucket OSS yang telah dibuat sebelumnya di Alibaba Cloud. State file Terraform akan disimpan dalam bucket ini. |
key | Ini adalah nama file state Terraform di dalam bucket OSS. Dalam contoh di atas, saya menggunakan nama “terraform.tfstate” sebagai default, tetapi dapat juga diganti sesuai kebutuhan. |
prefix | Ini digunakan jika kita akan menyimpan ke folder yang lain, biasanya agar rapi orang-orang memisahkan setiap sumber daya ke tiap folder. |
endpoint | Endpoint OSS sesuai dengan wilayah Alibaba Cloud kita. Sebagai contoh karena bucket saya ada di Indonesia maka oss-ap-southeast-5.aliyuncs.com |
region | Ini adalah nama region, untuk Indonesia menggunakan ap-southeast-5 |
access_key dan secret_key | Dua parameter ini adalah kunci akses ke akun Alibaba Cloud Anda. Diperlukan untuk mengautentikasi dan mengotorisasi akses Terraform ke bucket OSS. Pastikan untuk menjaga kerahasiaan keduanya dengan aman dan jangan membagikannya dengan orang lain. |
Sekarang kita harus menginisialisasi state di Alibaba Cloud OSS dengan perintah terraform init -reconfigure
normalnya akan muncul pesan seperti di bawah ini yang menandakan sukses
ariyolo-gt@mjolnir:~/code/iac-cloudflare$ terraform init -reconfigure
Initializing the backend...
Successfully configured the backend "oss"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Reusing previous version of aliyun/alicloud from the dependency lock file
- Reusing previous version of cloudflare/cloudflare from the dependency lock file
- Using previously-installed aliyun/alicloud v1.209.1
- Using previously-installed cloudflare/cloudflare v4.13.0
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Setelah selesai mengonfigurasi proyek sekarang kita sudah bisa melakukan terraform plan dan terraform apply dan state disimpan di Alibaba Cloud OSS. Ini membantu dalam menjaga integritas dan keamanan konfigurasi infrastruktur serta memudahkan kolaborasi dengan tim dalam proyek-proyek Terraform kita.