Terraform è lo strumento "Infrastructure as Code (IaC)". Viene utilizzato per costruire, gestire e modificare l'infrastruttura in modo sicuro e ripetibile modo.
Viene utilizzato per gestire ambienti con un linguaggio di configurazione chiamato HashiCorp Configuration Language (HCL) per implementazioni automatizzate leggibili dall'uomo.
Terraform può essere utilizzato per gestire l'infrastruttura su più cloud come AWS, GCP e altri. Terraform crea un file di stato che è la fonte di verità per le configurazioni delle risorse. Ciò significa che ogni volta che vengono create risorse, questo file di stato viene aggiornato con lo stato delle risorse create.
In questo articolo vedremo i passaggi per installare Terraform su Ubuntu e utilizzarlo per creare un VPC su AWS cloud.
Per saperne di più su Terraform fai clic qui.
Prerequisiti
- Account AWS (crea se non ne hai uno).
- Un'istanza EC2 (fai clic qui per imparare a creare un'istanza EC2)
- Accesso root ai server.
- 'access_key' &'secret_key' di un utente AWS IAM. (Fai clic qui per imparare a creare un utente IAM con 'access_key' e 'secret_key' su AWS, )
Cosa faremo
- Installa Terraform
- Scrivi i file di configurazione di Terraform.
- Crea un VPC utilizzando i file di configurazione di Terraform
- Elimina il VPC creato utilizzando Terraform
Installa Terraform
L'installazione di Terraform è piuttosto semplice e diretta. Puoi trovare il pacchetto adatto al tuo sistema da qui.
Prima di scaricare il file installiamo il pacchetto 'wget' e 'unzip' se non disponibile sul sistema utilizzando i seguenti comandi.
apt-get update -y
apt-get install wget unzip -y
Creiamo una directory dedicata 'terraform' sotto '/opt/' dove possiamo scaricare il pacchetto
cd /opt/
mkdir terraform
cd terraform/
Scarica il pacchetto terraform usando il comando 'wget' e decomprimilo.
wget https://releases.hashicorp.com/terraform/0.12.18/terraform_0.12.18_linux_amd64.zip
unzip terraform_0.12.18_linux_amd64.zip
ls -lt
Dopo aver decompresso il pacchetto scaricato, vedrai un binario 'terraform'. Sposta questo binario in /usr/local/bin/.
Puoi verificare se l'installazione è andata a buon fine o non utilizzando il comando terraform ma controllandone la versione.
mv terraform /usr/local/bin/
terraform -v
Scrivi i file di configurazione di Terraform
Crea una directory dedicata dove puoi creare file di configurazione terraform
mkdir terraform
cd terraform/
Utilizza un editor a tua scelta e copia e incolla le seguenti configurazioni per creare variabili.tf, terraform.tfvars e main.tf
Crea 'main.tf' che è responsabile della creazione di VPC su AWS. La configurazione seguente creerà un VPC, un gateway Internet, una tabella di percorsi, una zona di disponibilità e un gruppo di sicurezza. Questo main.tf leggerà i valori delle variabili da variables.tf e terraform.tfvars.
vim main.tf
provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "gateway" {
vpc_id = "${aws_vpc.vpc.id}"
}
resource "aws_route" "route" {
route_table_id = "${aws_vpc.vpc.main_route_table_id}"
destination_cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.gateway.id}"
}
data "aws_availability_zones" "available" {}
resource "aws_subnet" "main" {
count = "${length(data.aws_availability_zones.available.names)}"
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "10.0.${count.index}.0/24"
map_public_ip_on_launch = true
availability_zone = "${element(data.aws_availability_zones.available.names, count.index)}"
}
resource "aws_security_group" "default" {
name = "http-https-allow"
description = "Allow incoming HTTP and HTTPS and Connections"
vpc_id = "${aws_vpc.vpc.id}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
Crea 'variables.tf' che contiene la dichiarazione delle variabili.
vim variabili.tf
variable "access_key" {
description = "Access key to AWS console"
}
variable "secret_key" {
description = "Secret key to AWS console"
}
variable "region" {
description = "Region of AWS VPC"
}
Crea 'terraform.tfvars' che contiene la definizione della variabile definita nel file sopra.
vim terraform.tfvars
region = "eu-west-3"
access_key = "AKIAQ6GAIA5XDX32PVJ6"
secret_key = "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"
Ora dovresti avere 3 file, vale a dire, variables.tf, terraform.tfvars e main.tf
Crea un VPC utilizzando i file di configurazione di Terraform
Il primo comando da utilizzare è 'terraform init'. Questo comando scarica e installa i plug-in per i provider utilizzati nella configurazione. Nel nostro caso è aws.
terraforma init
Il secondo comando da usare è 'terraform plan'. Questo comando viene utilizzato per vedere le modifiche che avverranno sull'infrastruttura.
piano terraforma
Il comando 'terraform apply' creerà le risorse sugli aws menzionati nel file main.tf. Ti verrà chiesto di fornire il tuo input per creare le risorse.
Applicazione della piattaforma
Puoi accedere alla console AWS VPC per verificare se il VPC è stato creato.
Elimina il VPC creato utilizzando Terraform
Se conosci più risorse richieste che hai creato utilizzando la configurazione menzionata nel file main.tf, puoi utilizzare il comando "terraform destroy" per eliminare tutte quelle risorse.
terraform distruggi
Conclusione
In questo articolo abbiamo visto i passaggi per installare Terraform. Abbiamo anche visto la configurazione richiesta per creare un VPC insieme ad alcune altre risorse correlate. Ora abbiamo anche familiarità con la dichiarazione e la definizione delle variabili.