Prerequisiti
Avere un account AWS
Avere Terraform installato sul computer locale
Conoscenza di base di AWS e Terraform
Configurazione dell'account AWS
Prima di iniziare, dobbiamo configurare il nostro account AWS in modo da poterlo utilizzare con Terraform. Per fare ciò, dobbiamo creare un nuovo gruppo di sicurezza e un nuovo VPC.
Crea un nuovo gruppo di sicurezza
"bash."
> [!IMPORTANTE]
> Assicurati che il tuo account AWS disponga delle autorizzazioni appropriate per creare risorse.
hcl
risorsa "aws_security_group" "my_security_group" {
nome = "mio_gruppo_sicurezza"
description = "Il mio gruppo di sicurezza per il VPC"
# Regole di ingresso
ingresso {
da_porto = 22
a_porto = 22
protocollo="tcp"
blocchi_cidr = ["0.0.0.0/0"]
}
# Regole di uscita
uscita {
da_porta = 0
a_porta = 0
protocollo="-1"
blocchi_cidr = ["0.0.0.0/0"]
}
}
### Crea un nuovo VPC
hcl
risorsa "aws_vpc" "mio_vpc" {
cidr_block = "10.0.0.0/16"
tag = {
Nome = "Il mio VPC"
}
}
## Creazione della rete sottostante
Una volta creato il VPC, possiamo creare la rete sottostante. Per fare ciò, dobbiamo creare una nuova sottorete e una nuova tabella di routing.
### Crea una nuova sottorete
hcl
risorsa "aws_subnet" "my_subnet" {
cidr_block = "10.0.1.0/24"
vpc_id = aws_vpc.my_vpc.id
disponibilità_zona = "noi-ovest-2a"
tag = {
Nome = "La mia sottorete"
}
}
### Crea una nuova tabella di routing
hcl
risorsa "aws_route_table" "my_route_table" {
vpc_id = aws_vpc.my_vpc.id
tag = {
Nome = "La mia tabella di routing"
}
}
## Impostazioni di rete di sicurezza
Una volta creata la rete sottostante, possiamo configurare la rete di sicurezza. Per fare ciò, dobbiamo creare una nuova regola di sicurezza e associarla alla sottorete.
### Crea una nuova regola di sicurezza
hcl
risorsa "aws_security_group_rule" "my_security_rule" {
tipo = "entrata"
da_porto = 22
a_porto = 22
protocollo="tcp"
source_security_group_id = aws_security_group.my_security_group.id
security_group_id = aws_security_group.my_security_group.id
}
### Associa la regola di sicurezza alla sottorete
hcl
risorsa "aws_route_table_association" "my_route_association" {
subnet_id = aws_subnet.my_subnet.id
route_table_id = aws_route_table.my_route_table.id
}
## Configurazione della rete dati
Una volta configurata la rete di sicurezza, possiamo configurare la rete dati. Per fare ciò, dobbiamo creare una nuova istanza EC2 e associarla alla sottorete.
### Crea una nuova istanza EC2
hcl
risorsa "aws_instance" "my_ec2_instance" {
ami="ami-abc123"
tipo_istanza = "t2.micro"
vpc_security_group_ids = [aws_security_group.my_security_group.id]
subnet_id = aws_subnet.my_subnet.id
}
### Associa l'istanza EC2 alla sottorete
hcl
risorsa "aws_network_interface_attachment" "my_network_association" {
istanza_id = aws_instance.my_instance_ec2.id
network_interface_id = aws_network_interface.my_network.id
indice_dispositivo = 0
}
## Configurazione della rete di archiviazione
Una volta configurata la rete dati, possiamo configurare la rete di archiviazione. Per fare ciò, dobbiamo creare un nuovo volume EBS e collegarlo all'istanza EC2.
### Crea un nuovo volume EBS
hcl
risorsa "aws_ebs_volume" "mio_ebs_volume" {
disponibilità_zona = "noi-ovest-2a"
dimensione = 10
}
### Collega il volume EBS all'istanza EC2
hcl
risorsa "aws_volume_attachment" "my_ebs_association" {
nome_dispositivo = "/dev/sdh"
volume_id = aws_ebs_volume.my_ebs_volume.id
istanza_id = aws_instance.my_instance_ec2.id
}
## Reindirizza le impostazioni di rete
Una volta configurata la rete di archiviazione, possiamo configurare la rete di reindirizzamento. Per fare ciò, dobbiamo creare un nuovo gruppo di reindirizzamento e associarlo all'istanza EC2.
### Crea un nuovo gruppo di reindirizzamento
hcl
risorsa "aws_lb_target_group" "my_redirect_group" {
nome = "reindirizzamento-mio-gruppo"
porto = 80
protocollo = "HTTP"
vpc_id = aws_vpc.my_vpc.id
}
### Associa il gruppo di reindirizzamento all'istanza EC2
hcl
risorsa "aws_lb_target_group_attachment" "my_association_redirect" {
target_group_arn = aws_lb_target_group.my_group_redirection.arn
target_id = aws_instance.my_ec2_instance.id
porto = 80
}
## Bilanciamento della configurazione di rete
Una volta configurata la rete di reindirizzamento, possiamo configurare la rete di bilanciamento. Per fare ciò dobbiamo creare un nuovo gruppo di bilanciamento e associarlo all'istanza EC2.
### Crea un nuovo gruppo di bilanciamento
hcl
risorsa "aws_lb" "mio_gruppo_bilanciamento" {
nome = "il mio-gruppo-di-bilanciamento"
interno = falso
load_balancer_type = "applicazione"
gruppi_sicurezza = [aws_security_group.my_security_group.id]
sottoreti = [aws_subnet.my_subnet.id]
}
### Associa il gruppo di bilanciamento all'istanza EC2
hcl
risorsa "aws_lb_listener" "my_balancing_association" {
load_balancer_arn = aws_lb.my_balancer_group.arn
protocollo = "HTTP"
porto = 80
azione_predefinita {
tipo = "avanti"
target_group_arn = aws_lb_target_group.my_group_redirection.arn
}
}
## Monitoraggio della configurazione di rete
Una volta configurata la rete di bilanciamento, possiamo configurare la rete di monitoraggio. Per fare ciò, dobbiamo creare un nuovo gruppo di monitoraggio e associarlo all'istanza EC2.
### Crea un nuovo gruppo di monitoraggio
hcl
risorsa "aws_cloudwatch_metric_alarm" "my_monitoring_group" {
nome_allarme = "il-mio-gruppo-di-monitoraggio"
comparatore_operatore = "MaggioreThanOrEqualToThreshold"
periodi_divalutazione = "1"
metric_name = "CPUUtilizzazione"
spazio dei nomi = "AWS/EC2"
periodo = "300"
statistica = "Media"
soglia = "80"
azioni_abilitate = vero
azioni_allarme = [aws_sns_topic.mi_topic.arn]
}
### Associa il gruppo di monitoraggio all'istanza EC2
hcl
risorsa "aws_sns_topic" "mio_argomento" {
nome = "il mio argomento"
}
```
Conclusione
In questo articolo abbiamo visto come progettare una rete VPC in AWS con Terraform. Abbiamo creato un nuovo VPC, una nuova sottorete, una nuova tabella di routing, una nuova regola di sicurezza, una nuova istanza EC2, un nuovo volume EBS, un nuovo gruppo di reindirizzamento, un nuovo gruppo di bilanciamento e un nuovo gruppo di monitoraggio.