Mulai dari sini setelah lu selesai quickstart Terraform atau quickstart Pulumi. Semua di bawah ini nganggep lu udah punya satu resource yang jalan.
Layout Terraform
Terraform baca semua file.tf di satu directory sebagai satu konfigurasi, jadi batasan file itu buat manusia, bukan buat tools-nya. Layout yang bisa scale:
versions.tf:
main.tf cuma tinggal provider block doang begitu credential-nya udah dari environment (liat Authentication):
variables.tf buat apa aja yang beda-beda tiap run atau tiap orang:
outputs.tf buat apa aja yang lu atau tools lain butuhin setelah apply:
neolite.tf, storage.tf, baremetal.tf. Terraform gak peduli; reviewer lu yang bakal peduli.
.gitignore:
Layout Pulumi
Project Pulumi itu program biasa di bahasa lu, plus dua file yang Pulumi sendiri baca:Pulumi.yaml:
index.ts jadi neolite.ts, storage.ts, terus di-import balik, itu konvensi bahasa, bukan requirement dari Pulumi. Lakuin persis kayak misahin program lain begitu udah kepanjangan buat satu layar.
.gitignore buat project TypeScript:
venv//__pycache__/ buat Python, build output-nya Go, atau yang setara di bahasa target lu. Pulumi.yaml dan semua Pulumi.<stack>.yaml tetep di-track.)
Penamaan
Kedua provider share terminologi yang diperkenalin di Infrastructure as Code tuh apa?: nama resource pake code formatting,disk_size di Terraform vs diskSize di Pulumi. Bawa itu ke penamaan punya lu juga:
- Satu resource block/declaration per satu hal di dunia nyata, dinamain sesuai apa itu (
web, bukanresource1). - Pertahanin konvensi suffix
-keybuat keypair (web-key) biar jelas kebacanya deket VM yang punya keypair itu. - Kalau repository yang sama juga nyimpen application code, taro infrastruktur di folder
infra/top-level sendiri deketan samaapp/, bukan campur di dalam directory-nya app.
Semua contoh code di halaman lain dokumentasi ini ditulis sebagai satu file flat, karena itu paling enak dibaca di halaman reference. Itu pilihan dokumentasi, bukan rekomendasi, begitu project lu udah beneran.
Langkah berikutnya
- Environments - layout yang sama, tiga konfigurasi beda buat dev, staging, dan production