Terraform som Infrastructure as Code · leksjon

Klargjøring av EC2-instanser

Skriv Terraform-konfigurasjoner for å distribuere og administrere virtuelle Amazon EC2-maskiner, inkludert innstillinger for nettverk og sikkerhetsgrupper.

Leksjon 2 av 411 trinn

Klargjøring av EC2-instanser er en gratis leksjon i Terraform som Infrastructure as Code på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Terraform som Infrastructure as Code, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

EC2-instanser med Terraform

Velkommen! I denne leksjonen lærer De å klargjøre og administrere virtuelle Amazon EC2-maskiner ved hjelp av Terraform.

EC2 (Elastic Compute Cloud) tilbyr skalerbare virtuelle servere i skyen. Når De bruker Infrastructure as Code (IaC) med Terraform for EC2, kan De definere serverne i kode og sikre konsistente, repeterbare distribusjoner.

Definere en EC2-instans

Kjerneressursen for en EC2-instans i Terraform er aws_instance. De må angi minst to viktige argumenter:

  • ami: Amazon Machine Image (operativsystem og programvare) som skal brukes.
  • instance_type: Maskinvarekonfigurasjonen (for eksempel t2.micro for instanser som kvalifiserer til gratisnivået).

Slik ser en grunnleggende aws_instance-blokk ut:

resource "aws_instance" "web_server" {
  ami           = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
  instance_type = "t2.micro"

  tags = {
    Name = "MyWebServer"
  }
}

Start Deres første EC2-instans

La oss sette alt sammen for å starte en enkel EC2-instans. Denne konfigurasjonen definerer AWS-provider-en og EC2-instansen.

For å distribuere den lagrer De dette som en .tf-fil og kjører deretter terraform init, terraform plan og terraform apply i terminalen.

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"
  }
}

Sikre EC2: sikkerhetsgrupper

Sikkerhetsgrupper fungerer som virtuelle brannmurer for EC2-instansene Deres. De styrer hvilken innkommende (ingress) og utgående (egress) nettverkstrafikk som tillates til eller fra instansen.

Det er avgjørende å konfigurere dem riktig for å beskytte serverne Deres mot uautorisert tilgang, samtidig som nødvendige tjenester, som SSH eller HTTP, tillates.

Opprette en sikkerhetsgruppe

De definerer en sikkerhetsgruppe ved hjelp av ressursen aws_security_group. Vi legger til en ingress-regel som tillater SSH-tilgang (port 22) fra alle steder (0.0.0.0/0).

De må angi en eksisterende vpc_id som sikkerhetsgruppen skal ligge i.

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"
  }
}

Knytte sikkerhetsgruppen til EC2

La oss nå oppdatere aws_instance slik at den bruker denne nye sikkerhetsgruppen. Vi refererer til sikkerhetsgruppens ID ved hjelp av aws_security_group.allow_ssh.id.

Husk å erstatte vpc_id i sikkerhetsgruppen med en faktisk VPC-ID fra AWS-kontoen Deres for at konfigurasjonen skal kunne kjøres.

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"
  }
}

EC2-nettverk: VPC-er og subnett

Alle EC2-instanser befinner seg i en Virtual Private Cloud (VPC) og et bestemt subnett i denne VPC-en. En VPC er et isolert virtuelt nettverk, og subnett er logiske inndelinger av VPC-en (for eksempel offentlige eller private).

Som standard kan EC2 starte i en standard-VPC eller et standard-subnett. For bedre kontroll og organisering angir man ofte hvilket subnett instansen skal bruke.

Opprette et grunnleggende nettverk

For å få full kontroll over nettverket til EC2-en vår definerer vi en minimal VPC og et offentlig subnett. Dette krever også en Internet Gateway for offentlig tilgang og en Route Table for å dirigere trafikken.

Dette komplette oppsettet sørger for at EC2-en kan kommunisere med internett.

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 i Deres tilpassede nettverk

Nå kombinerer vi alle delene: en tilpasset VPC, et subnett, en sikkerhetsgruppe og EC2-instansen vår. EC2-instansen starter i det bestemte offentlige subnettet vårt og får automatisk en offentlig IP-adresse.

Denne komplette konfigurasjonen gir Dem detaljert kontroll over EC2-distribusjonen og gjør den tilgjengelig via 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"
  }
}

Kontroll av EC2-konfigurasjon

Hvilke av følgende argumenter er nødvendige for å definere en grunnleggende aws_instance-ressurs i Terraform?

Oppsummering: EC2 med Terraform

Godt jobbet! De har lært hvordan De kan klargjøre Amazon EC2-instanser ved hjelp av Terraform.

  • Vi definerte EC2-instanser ved hjelp av ressursen aws_instance.
  • Vi sikret dem med aws_security_group, som styrer nettverkstrafikken.
  • Vi satte opp et enkelt tilpasset nettverk (VPC, subnett, internet gateway og rutetabell) for EC2.
  • De har nå grunnlaget for å distribuere og administrere virtuelle servere som kode!
Gratis å komme i gang

Lær deg Terraform som Infrastructure as Code med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Klargjøring av EC2-instanser» gratis?

Ja – hele teksten i «Klargjøring av EC2-instanser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Terraform som Infrastructure as Code-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

Hva lærer jeg i «Klargjøring av EC2-instanser»?

Skriv Terraform-konfigurasjoner for å distribuere og administrere virtuelle Amazon EC2-maskiner, inkludert innstillinger for nettverk og sikkerhetsgrupper. Du øver på Terraform som Infrastructure as Code med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Terraform som Infrastructure as Code?

Ingen tidligere erfaring er nødvendig. Terraform som Infrastructure as Code på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Klargjøring av EC2-instanser»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Terraform som Infrastructure as Code-leksjonen?

Ja. Alle Terraform som Infrastructure as Code-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Konfigurering av AWS Provider
  2. Klargjøring av EC2-instanser
  3. Håndtering av S3-bøtter og IAM
  4. Konfigurering av VPC og nettverk
← Tilbake til Terraform som Infrastructure as Code