Menyediakan Instans EC2
Tulis konfigurasi Terraform untuk menerapkan dan mengelola mesin virtual Amazon EC2, termasuk pengaturan jaringan dan grup keamanan.
Menyediakan Instans EC2 adalah pelajaran Terraform Infrastructure as Code gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Terraform Infrastructure as Code, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.
Instans EC2 dengan Terraform
Selamat datang! Dalam pelajaran ini, Anda akan mempelajari cara menyediakan dan mengelola mesin virtual Amazon EC2 menggunakan Terraform.
EC2 (Elastic Compute Cloud) menyediakan server virtual yang dapat diskalakan di cloud. Menggunakan Infrastruktur sebagai Kode (IaC) dengan Terraform untuk EC2 berarti Anda dapat menentukan server dalam kode, sehingga penerapan menjadi konsisten dan dapat diulang.
Menentukan Instans EC2
Sumber daya inti untuk instans EC2 dalam Terraform adalah aws_instance. Anda perlu menentukan setidaknya dua argumen utama:
ami: Amazon Machine Image (OS dan perangkat lunak) yang akan digunakan.instance_type: Konfigurasi perangkat keras (misalnya,t2.micrountuk instans yang memenuhi syarat tingkat gratis).
Berikut tampilan dasar blok aws_instance:
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyWebServer"
}
}Luncurkan EC2 Pertama Anda
Mari satukan semuanya untuk meluncurkan instans EC2 sederhana. Konfigurasi ini menentukan penyedia AWS dan instans EC2.
Untuk menerapkannya, simpan sebagai berkas .tf, lalu jalankan terraform init, terraform plan, dan terraform apply di terminal Anda.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Amazon Linux 2 AMI for us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyBasicWebServer"
}
}Amankan EC2 Anda: Grup Keamanan
Grup Keamanan berfungsi sebagai firewall virtual untuk instans EC2 Anda. Grup ini mengontrol lalu lintas jaringan masuk (ingress) dan keluar (egress) yang diizinkan mencapai atau meninggalkan instans Anda.
Konfigurasi yang benar sangat penting untuk melindungi server Anda dari akses tanpa izin sekaligus mengizinkan layanan yang diperlukan, seperti SSH atau HTTP.
Membuat Grup Keamanan
Anda menentukan grup keamanan menggunakan sumber daya aws_security_group. Kita akan menambahkan aturan ingress untuk mengizinkan akses SSH (port 22) dari mana saja (0.0.0.0/0).
Anda perlu menentukan vpc_id yang sudah ada sebagai lokasi grup keamanan tersebut.
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
description = "SSH from anywhere"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1" # All protocols
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "allow_ssh_sg"
}
}Menghubungkan Grup Keamanan ke EC2
Sekarang, mari perbarui aws_instance kita agar menggunakan grup keamanan baru ini. Kita merujuk ID grup keamanan menggunakan aws_security_group.allow_ssh.id.
Ingatlah untuk mengganti vpc_id dalam grup keamanan dengan ID VPC yang sebenarnya dari akun AWS Anda agar konfigurasi ini dapat dijalankan.
provider "aws" {
region = "us-east-1"
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic_example"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
tags = {
Name = "WebServerWithSSH"
}
}Jaringan EC2: VPC & Subnet
Setiap instans EC2 berada di dalam Virtual Private Cloud (VPC) dan subnet tertentu di dalam VPC tersebut. VPC adalah jaringan virtual yang terisolasi, sedangkan subnet adalah pembagian logis dari VPC Anda (misalnya, publik atau privat).
Secara bawaan, EC2 mungkin diluncurkan di VPC/subnet bawaan. Untuk mendapatkan kontrol dan pengaturan yang lebih baik, Anda biasanya menentukan subnet yang harus digunakan oleh instans Anda.
Membuat Jaringan Dasar
Untuk mengendalikan jaringan EC2 kita sepenuhnya, mari tentukan VPC minimal dan subnet publik. Ini juga memerlukan Gateway Internet untuk akses publik dan Tabel Rute untuk mengarahkan lalu lintas.
Penyiapan lengkap ini memastikan EC2 Anda dapat berkomunikasi dengan internet.
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "main-vpc-lesson"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true # Instances in this subnet get a public IP
tags = {
Name = "public-subnet-lesson"
}
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-gw-lesson"
}
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0" # Traffic to the internet
gateway_id = aws_internet_gateway.gw.id
}
tags = {
Name = "public-rt-lesson"
}
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}EC2 dalam Jaringan Khusus Anda
Sekarang, kita akan menggabungkan semua bagian: VPC khusus, subnet, grup keamanan, dan instans EC2 kita. EC2 akan diluncurkan di subnet publik khusus kita dan secara otomatis memperoleh IP publik.
Konfigurasi lengkap ini memberi Anda kontrol terperinci atas penerapan EC2 dan membuatnya dapat diakses melalui SSH.
provider "aws" {
region = "us-east-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = { Name = "main-vpc-lesson" }
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true
tags = { Name = "public-subnet-lesson" }
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = { Name = "main-gw-lesson" }
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
tags = { Name = "public-rt-lesson" }
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_lesson"
description = "Allow SSH inbound traffic"
vpc_id = aws_vpc.main.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
associate_public_ip_address = true
tags = {
Name = "FullWebServerLesson"
}
}Pemeriksaan Konfigurasi EC2
Manakah dari argumen berikut yang penting untuk mendefinisikan sumber daya aws_instance dasar di Terraform?
Rangkuman: EC2 dengan Terraform
Kerja bagus! Anda telah mempelajari cara menyediakan instans Amazon EC2 menggunakan Terraform.
- Kami mendefinisikan instans EC2 menggunakan sumber daya
aws_instance. - Kami mengamankannya dengan
aws_security_groupuntuk mengontrol lalu lintas jaringan. - Kami menyiapkan jaringan khusus dasar (VPC, subnet, gateway internet, tabel rute) untuk menampung EC2 kami.
- Sekarang Anda memiliki dasar untuk menerapkan dan mengelola server virtual sebagai kode!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menyediakan Instans EC2” gratis?
Ya — teks lengkap “Menyediakan Instans EC2” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Terraform Infrastructure as Code, upgrade ke CoddyKit PRO. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menyediakan Instans EC2”?
Tulis konfigurasi Terraform untuk menerapkan dan mengelola mesin virtual Amazon EC2, termasuk pengaturan jaringan dan grup keamanan. Kamu berlatih Terraform Infrastructure as Code dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Terraform Infrastructure as Code?
Tidak diperlukan pengalaman sebelumnya. Terraform Infrastructure as Code di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Menyediakan Instans EC2” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Terraform Infrastructure as Code ini?
Ya. Setiap pelajaran Terraform Infrastructure as Code menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konfigurasi Penyedia AWS
- Menyediakan Instans EC2
- Mengelola Bucket S3 dan IAM
- Mengonfigurasi VPC dan Jaringan