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.
Provisionering av EC2-instanser är en gratis lektion i Terraform som Infrastructure as Code på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Terraform som Infrastructure as Code, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Terraform som Infrastructure as Code 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.microfö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!
Lär dig Terraform som Infrastructure as Code 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
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Provisionering av EC2-instanser” gratis?
Ja – hela texten till ”Provisionering av EC2-instanser” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Terraform som Infrastructure as Code, kan Ni uppgradera till CoddyKit PRO. Kursen i Terraform som Infrastructure as Code 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å Terraform som Infrastructure as Code 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 Terraform som Infrastructure as Code?
Du behöver inga förkunskaper. Utbildningen i Terraform som Infrastructure as Code 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 Terraform som Infrastructure as Code-lektionen?
Ja. Varje Terraform som Infrastructure as Code-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
- Konfiguration av AWS Provider
- Provisionering av EC2-instanser
- Hantera S3-buckets och IAM
- Konfigurera VPC och nätverk