0Pricing
DevOps Bootcamp · Pelajaran

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 DevOps Bootcamp 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 DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp 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.micro untuk 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_group untuk 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 DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp 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 DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp 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

  1. Konfigurasi Penyedia AWS
  2. Menyediakan Instans EC2
  3. Mengelola Bucket S3 dan IAM
  4. Mengonfigurasi VPC dan Jaringan
← Kembali ke DevOps Bootcamp