Ricerca nel sito web

Che cos'è Terraform e come installarlo e utilizzarlo su AWS EC2


Terraform è lo strumento \Infrastructure as Code (IaC)\. Viene utilizzato per costruire, gestire e modificare l'infrastruttura in modo sicuro e ripetibile.

Viene utilizzato per gestire gli ambienti con un linguaggio di configurazione chiamato HashiCorp Configuration Language (HCL) per distribuzioni 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 della 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 cloud AWS.

Per saperne di più su Terraform fai clic qui.

Prerequisiti

  1. Account AWS (crealo se non ne hai uno).
  2. Un'istanza EC2 (fai clic qui per imparare a creare un'istanza EC2)
  3. Accesso root ai server.
  4. access_key e secret_key di un utente AWS IAM. (Fai clic qui per sapere come creare un utente IAM con access_key e secret_key su AWS, )

Cosa faremo

  1. Installa Terraform
  2. Scrivi file di configurazione Terraform.
  3. Crea un VPC utilizzando i file di configurazione Terraform
  4. Elimina il VPC creato utilizzando Terraform

Installa Terraforma

L'installazione di Terraform è piuttosto semplice e diretta. Puoi trovare il pacchetto adatto per il tuo sistema da qui.

Prima di scaricare il file installiamo il pacchetto wget e unzip se non disponibile sul sistema usando 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 utilizzando 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

Una volta decompresso il pacchetto scaricato, vedrai un terraform binario. Sposta questo binario in /usr/local/bin/.

Puoi verificare se l'installazione è andata a buon fine o meno utilizzando il comando terraform ma controllandone la versione.

mv terraform /usr/local/bin/
terraform -v

Scrivi file di configurazione Terraform

Crea una directory dedicata in cui puoi creare file di configurazione terraform

mkdir terraform
cd terraform/

Utilizza un editor di tua scelta e copia e incolla le seguenti configurazioni per creare variable.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 routing, 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 il file variable.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 precedente.

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 Terraform

Il primo comando da utilizzare è terraform init. Questo comando scarica e installa i plug-in per i provider utilizzati all'interno della configurazione. Nel nostro caso è aws.

 terraform init

Il secondo comando da utilizzare è terraform plan. Questo comando viene utilizzato per vedere i cambiamenti che avverranno sull'infrastruttura.

 terraform plan

Il comando terraform apply creerà le risorse su aws menzionate nel file main.tf. Ti verrà chiesto di fornire il tuo contributo per creare le risorse.

si applicano terraform

Puoi andare 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 destroy

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 conosciamo anche la dichiarazione e la definizione delle variabili.