Dalam tutorial ini, Anda akan mempelajari cara mulai menggunakan Terraform untuk membuat server web dasar di Compute Engine.
Dalam tutorial ini, Anda akan melakukan beberapa hal berikut:
- Menggunakan Terraform untuk membuat VM di Google Cloud.
- Mulai server Python Flask dasar.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Bersiaplah untuk memulai tutorial.
Pilih atau buat project
-
Di konsol Google Cloud, buka halaman Pemilih project.
-
Pilih atau buat project Google Cloud.
Siapkan izin
Pastikan Anda memiliki izin Compute Engine yang diperlukan pada akun pengguna Anda:
compute.instances.*
compute.firewalls.*
Pelajari lebih lanjut tentang peran dan perizinan
Mengaktifkan API
Aktifkan API Compute Engine.
Memulai Cloud Shell
Cloud Shell adalah mesin virtual Compute Engine.
Kredensial layanan yang terkait dengan mesin virtual ini bersifat otomatis. Sehingga, Anda tidak perlu menyiapkan atau mendownload kunci akun layanan.
Terraform terintegrasi dengan Cloud Shell dan Cloud Shell secara otomatis mengautentikasi Terraform. Sehingga, Anda dapat memulai dengan lebih sedikit penyiapan.
Membuat VM Compute Engine
Pertama, tentukan setelan VM dalam file konfigurasi Terraform. Selanjutnya, jalankan perintah Terraform untuk membuat VM di project Anda.
Membuat direktori
Buat direktori baru. Di direktori baru, buat file
main.tf
untuk konfigurasi Terraform. Isi file ini menjelaskan semua
resource Google Cloud yang akan dibuat dalam project.
Dalam Cloud Shell:
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
Membuat jaringan dan subnet Virtual Private Cloud
Di bagian ini, Anda akan membuat jaringan dan subnet Virtual Private Cloud (VPC) untuk antarmuka jaringan VM.
Tambahkan resource Terraform berikut ke file main.tf
yang Anda buat:
Membuat resource VM Compute Engine
Di bagian ini, Anda akan membuat satu instance Compute Engine yang menjalankan Debian. Dalam tutorial ini, Anda menggunakan jenis mesin terkecil yang tersedia. Nantinya, Anda dapat mengupgrade ke jenis mesin yang lebih besar.
Tambahkan resource Terraform google_compute_instance
berikut ke file main.tf
yang Anda buat.
Kode contoh menetapkan zona Google Cloud ke us-west1-a
. Anda dapat mengubahnya
ke zona yang berbeda.
Lakukan inisialisasi Terraform
Pada tahap ini, Anda dapat menjalankan terraform init
untuk menambahkan plugin yang diperlukan dan
membangun direktori .terraform
.
terraform init
Output:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
Memvalidasi konfigurasi Terraform
Secara opsional, Anda dapat memvalidasi kode Terraform yang telah Anda bangun sejauh ini. Jalankan
terraform plan
yang melakukan hal berikut:
- Memverifikasi bahwa sintaksis
main.tf
benar - Menampilkan pratinjau resource yang akan dibuat
terraform plan
Output:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
Terapkan konfigurasi:
Untuk membuat VM, jalankan terraform apply
.
terraform apply
Saat diminta, masukkan yes
.
Terraform memanggil Google Cloud API untuk menyiapkan VM baru. Periksa halaman instance VM untuk melihat VM yang baru.
Menjalankan server web di Google Cloud
Langkah selanjutnya adalah membuat aplikasi web, men-deploy-nya ke VM, dan membuat aturan firewall untuk mengizinkan permintaan klien ke aplikasi web.
Menambahkan aturan firewall SSH kustom
Aturan firewall default-allow-ssh
di jaringan default
memungkinkan Anda
menggunakan SSH untuk terhubung ke VM. Jika lebih suka menggunakan aturan firewall
kustom, Anda dapat menambahkan resource berikut di akhir file main.tf
:
Jalankan terraform apply
untuk membuat aturan firewall.
Menghubungkan ke VM menggunakan SSH:
Validasikan bahwa semuanya telah disiapkan dengan benar pada tahap ini dengan menghubungkan ke VM menggunakan SSH.
Buka halaman VM Instances.
Temukan VM dengan nama
flask-vm
.Di kolom Connect, klik SSH.
Jendela terminal SSH dalam browser akan terbuka untuk VM yang sedang berjalan.
Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke VM.
Membangun aplikasi Flask
Anda akan membangun aplikasi Python Flask untuk tutorial ini. Sehingga, Anda dapat memiliki satu file yang mendeskripsikan server web dan endpoint pengujian Anda.
Di terminal SSH dalam browser, buat file dengan nama
app.py
.nano app.py
Tambahkan kode berikut ke file
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')
Jalankan
app.py
:python3 app.py
Flask melayani traffic di
localhost:5000
secara default.Buka koneksi SSH kedua:
- Buka halaman VM Instances.
- Temukan VM dengan nama
flask-vm
, lalu klik SSH.
Pada koneksi SSH kedua, jalankan
curl
untuk mengonfirmasi bahwa salam yang Anda konfigurasikan diapp.py
ditampilkan.curl http://0.0.0.0:5000
Output dari perintah ini adalah
Hello Cloud
.
Membuka port 5000 di VM
Untuk terhubung ke server web dari komputer lokal, VM harus memiliki port 5000 terbuka. Dengan Google Cloud, Anda dapat membuka port ke traffic menggunakan aturan firewall.
Tambahkan resource Terraform google_compute_firewall
berikut di akhir file main.tf
Anda.
Di Cloud Shell, jalankan terraform apply
untuk membuat aturan firewall.
Menambahkan variabel output untuk URL server web
Di akhir
main.tf
, tambahkan variabel output Terraform untuk menghasilkan URL server web:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }
Jalankan
terraform apply
.terraform apply
Saat diminta, masukkan
yes
. Terraform mencetak alamat IP eksternal VM dan port 5000 ke layar, sebagai berikut:Web-server-URL = "http://IP_ADDRESS:5000"
Anda dapat menjalankan
terraform output
untuk menampilkan output ini kapan saja:terraform output
Klik URL dari langkah sebelumnya dan lihat pesan "Hello Cloud!" .
Ini berarti server Anda sedang berjalan.
Pemecahan masalah
Jika API yang diperlukan tidak diaktifkan, Terraform akan menampilkan error. Pesan error menyertakan link untuk mengaktifkan API. Setelah mengaktifkan API, Anda dapat menjalankan kembali
terraform apply
.Jika Anda tidak dapat terhubung ke VM melalui SSH:
- Pastikan untuk menambahkan aturan firewall SSH.
- Pastikan VM Anda menyertakan argumen
tags = ["ssh"]
.
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat menghapus semua yang telah dibuat agar tidak menimbulkan biaya lebih lanjut.
Terraform memungkinkan Anda menghapus semua resource yang ditentukan dalam file konfigurasi dengan
menjalankan perintah terraform destroy
:
terraform destroy
Masukkan yes
untuk mengizinkan Terraform menghapus resource Anda.