DevOps-bootcamp · Lektion

Provisionering av EC2-instanser

Skriv Terraform-konfigurationer för att distribuera och hantera virtuella Amazon EC2-maskiner, inklusive inställningar för nätverk och säkerhetsgrupper.

Lektion 2 av 411 steg

Provisionering av EC2-instanser är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

EC2-instanser med Terraform

Välkommen! I den här lektionen får du lära dig att provisionera och hantera virtuella Amazon EC2-datorer med Terraform.

EC2 (Elastic Compute Cloud) tillhandahåller skalbara virtuella servrar i molnet. Med Infrastructure as Code (IaC) och Terraform för EC2 kan du definiera dina servrar i kod, vilket säkerställer konsekventa och upprepningsbara distributioner.

Definiera en EC2-instans

Kärnresursen för en EC2-instans i Terraform är aws_instance. Du måste ange minst två viktiga argument:

  • ami: Den Amazon Machine Image (operativsystem och programvara) som ska användas.
  • instance_type: Hårdvarukonfigurationen (t.ex. t2.micro för instanser som berättigar till free tier).

Så här ser ett grundläggande aws_instance-block ut:

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

  tags = {
    Name = "MyWebServer"
  }
}

Starta din första EC2-instans

Låt oss sätta ihop allt för att starta en enkel EC2-instans. Den här konfigurationen definierar AWS-providern och EC2-instansen.

För att distribuera sparar du detta som en .tf-fil och kör sedan terraform init, terraform plan och 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"
  }
}

Skydda din EC2-instans: säkerhetsgrupper

Säkerhetsgrupper fungerar som virtuella brandväggar för dina EC2-instanser. De styr vilken inkommande (ingress) och utgående (egress) nätverkstrafik som får nå din instans eller lämna den.

Det är viktigt att konfigurera dem korrekt för att skydda dina servrar mot obehörig åtkomst och samtidigt tillåta nödvändiga tjänster, som SSH eller HTTP.

Skapa en säkerhetsgrupp

Du definierar en säkerhetsgrupp med resursen aws_security_group. Vi lägger till en ingress-regel som tillåter SSH-åtkomst (port 22) från alla håll (0.0.0.0/0).

Du måste ange ett befintligt vpc_id som säkerhetsgruppen ska ligga 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"
  }
}

Koppla en säkerhetsgrupp till EC2

Nu uppdaterar vi vår aws_instance så att den använder den nya säkerhetsgruppen. Vi refererar till säkerhetsgruppens ID med aws_security_group.allow_ssh.id.

Kom ihåg att ersätta vpc_id i säkerhetsgruppen med ett faktiskt VPC-ID från ditt AWS-konto för att konfigurationen ska kunna köras.

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-nätverk: VPC:er och subnät

Varje EC2-instans finns i ett Virtual Private Cloud (VPC) och ett specifikt subnät i denna VPC. En VPC är ett isolerat virtuellt nätverk, och subnät är logiska delar av din VPC (t.ex. offentliga eller privata).

Som standard kan EC2 startas i en standard-VPC eller ett standardsubnät. För bättre kontroll och organisation anger du ofta vilket subnät instansen ska använda.

Skapa ett grundläggande nätverk

För att få full kontroll över EC2-instansens nätverk definierar vi en minimal VPC och ett offentligt subnät. Detta kräver även en Internet Gateway för offentlig åtkomst och en Route Table för att styra trafiken.

Den här kompletta konfigurationen säkerställer att din EC2-instans kan kommunicera med 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 i ditt anpassade nätverk

Nu kombinerar vi alla delar: en anpassad VPC, ett subnät, en säkerhetsgrupp och vår EC2-instans. EC2-instansen startas i vårt specifika offentliga subnät och får automatiskt en offentlig IP-adress.

Den här kompletta konfigurationen ger dig detaljerad kontroll över din EC2-distribution och gör den tillgänglig 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-konfiguration

Vilka av följande argument krävs för att definiera en grundläggande aws_instance-resurs i Terraform?

Sammanfattning: EC2 med Terraform

Bra jobbat! Ni har lärt er hur man provisionerar Amazon EC2-instanser med Terraform.

  • Vi definierade EC2-instanser med resursen aws_instance.
  • Vi skyddade dem med aws_security_group, som styr nätverkstrafiken.
  • Vi konfigurerade ett enkelt anpassat nätverk (VPC, subnät, internetgateway och routningstabell) som värd för våra EC2-instanser.
  • Ni har nu grunderna för att distribuera och hantera era virtuella servrar som kod!
Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Provisionering av EC2-instanser” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Provisionering av EC2-instanser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Provisionering av EC2-instanser”?

Skriv Terraform-konfigurationer för att distribuera och hantera virtuella Amazon EC2-maskiner, inklusive inställningar för nätverk och säkerhetsgrupper. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Provisionering av EC2-instanser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Konfiguration av AWS Provider
  2. Provisionering av EC2-instanser
  3. Hantera S3-buckets och IAM
  4. Konfigurera VPC och nätverk
← Tillbaka till DevOps-bootcamp