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 akan menggunakan komponen Google Cloudyang 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
- 
      In the Google Cloud console, go to the project selector page. 
- 
        Select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
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
Enable the Compute Engine API.
Roles required to enable APIs
          To enable APIs, you need the Service Usage Admin IAM
          role (roles/serviceusage.serviceUsageAdmin), which
          contains the serviceusage.services.enable permission. Learn how to grant
          roles.
        
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.tfbenar
- 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:5000secara default.
- Buka koneksi SSH kedua: - Buka halaman VM Instances.
- Temukan VM dengan nama flask-vm, lalu klik SSH.
 
- Pada koneksi SSH kedua, jalankan - curluntuk mengonfirmasi bahwa salam yang Anda konfigurasikan di- app.pyditampilkan.- curl http://0.0.0.0:5000 - Output dari perintah ini adalah - Hello Cloud.
Buka port 5000 di VM
Untuk terhubung ke server web dari komputer lokal, VM harus memiliki port 5000 terbuka. Google Cloud memungkinkan Anda 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 outputuntuk 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.