GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie ein Terraform-Modul

In diesem Artikel erfahren Sie, wie Sie wiederverwendbare Module in Terraform erstellen. Module ermöglichen es uns, Codeduplizierung zu vermeiden. Dies bedeutet, dass derselbe Code verwendet werden kann, um Ressourcen desselben Typs zu erstellen. Durch die Verwendung von Modulen müssen Sie Ihren Code nicht kopieren und einfügen, um mehrere Ressourcen desselben Typs zu erstellen.

Zum Beispiel können Sie den Code in ein Terraform-Modul einfügen und dieses Modul in den Staging- und Produktionsumgebungen wiederverwenden, auf diese Weise können wir beide Umgebungen gleich wiederverwenden Code aus demselben Modul, anstatt den Code mehrmals zu schreiben.

In diesem Artikel schreiben wir als Beispiel ein Modul zum Erstellen eines S3-Buckets.

Voraussetzungen

  1. Grundlegendes Verständnis von Terraform.
  2. Terraform auf Ihrem System installiert.
  3. AWS-Konto (erstellen, wenn Sie noch keins haben).
  4. 'access_key' &'secret_key' eines AWS IAM-Benutzers. (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer mit „access_key“ und „secret_key“ auf AWS erstellen, )

Was wir tun werden

  1. Schreib unser eigenes Modul
  2. Erstellen Sie einen S3-Bucket mit dem Terraform-Modul.
  3. Löschen Sie die erstellte Ressource mit dem Terraform-Modul.

Schreiben Sie unser eigenes Terraform-Modul

Erstellen Sie ein dediziertes Verzeichnis, in dem Sie Ihre Terraform-Datei "main.tf" und ein Modul haben können.

Verwenden Sie den folgenden Befehl, um ein Verzeichnis zu erstellen

mkdir -p modules/aws-s3

Erstellen Sie eine main.tf-Datei unter modules/aws-s3 und kopieren und fügen Sie den folgenden Codeblock ein, der als Modul zum Erstellen eines S3-Buckets verwendet wird.

vim modules/aws-s3/main.tf

resource "aws_s3_bucket" "s3_bucket" {
  bucket = var.bucket_name
  acl    = "public-read"
  policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::${var.bucket_name}/*"
            ]
        }
    ]
}
EOF 
  website {
    index_document = "index.html"
    error_document = "error.html"
  }
   tags = var.tags
}


Deklarieren Sie die erforderliche Variable in "modules/aws-s3/variables.tf". Wenn Sie möchten, können Sie die Standardwerte für die Variablen angeben. Kopieren Sie den folgenden Codeblock und fügen Sie ihn ein, um die Datei zu erstellen.

vim modules/aws-s3/variables.tf

variable "bucket_name" {
  description = "Name of the s3 bucket. Must be unique."
  type = string
}

variable "tags" {
  description = "Tags to set on the bucket."
  type = map(string)
  default = {}
}

Erstellen Sie nun die Datei "main.tf", die das Modul aufruft, das wir im obigen Schritt definiert haben. Ein Modul aufzurufen bedeutet, den Inhalt dieses Moduls mit bestimmten Werten für seine Variable in die Konfiguration aufzunehmen. Module werden aus anderen Modulen mit module aufgerufen Blöcke:

vim main.tf

provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}


module "website_s3_bucket" {
  source = "./modules/aws-s3"

  bucket_name = "${var.bucket_name}"

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

Alle Module erfordern ein Quellargument. Sein Wert ist entweder der Pfad zu einem lokalen Verzeichnis der Konfigurationsdateien des Moduls oder eine entfernte Modulquelle, die Terraform herunterladen und verwenden soll.

Die gleiche Quelladresse kann in mehreren Modulblöcken angegeben werden, um mehrere Kopien der darin definierten Ressourcen zu erstellen, möglicherweise mit unterschiedlichen Variablenwerten.

Erstellen Sie "variables.tf", das die Definition von Variablen enthalten wird. Diese enthält die Standardwerte, die zusammen mit AWS „access_key“ und „secret_key“ an das Modul übergeben werden müssen.

vim variables.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" } variable "bucket_name" { description = "(Required) Creates a unique bucket name" type = "string" default = "test-bucket-rahul-delete" }

Erstellen Sie jetzt „terraform.tfvars“, die die AWS-Benutzeranmeldeinformationen enthält. Die folgenden Schlüssel müssen mit den Schlüsseln Ihres IAM-Benutzers geändert werden. Bevor Sie diese Schlüssel angeben, müssen Sie sie über die AWS-Konsole erstellen und diese Schlüssel mit niemandem teilen.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XX54GLLNG"
secret_key = "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"

Erstellen Sie einen S3-Bucket mit dem Terraform-Modul

Bevor Sie die folgenden Befehle ausführen, vergewissern Sie sich, dass Sie den gültigen access_key und secret_key konfiguriert haben.

Der erste zu verwendende Befehl ist „terraform init“. Dieser Befehl lädt Plugins für Anbieter, die in der Konfiguration verwendet werden, herunter und installiert sie. In unserem Fall ist es AWS.

Terraform-Init

Der zweite zu verwendende Befehl ist 'terraform plan'. Dieser Befehl wird verwendet, um die Änderungen anzuzeigen, die an der Infrastruktur stattfinden werden.

Terraformplan

Der Befehl „terraform apply“ erstellt die in der main.tf-Datei erwähnten Ressourcen auf der AWS. Sie werden aufgefordert, Ihre Eingaben zum Erstellen der Ressourcen zu machen.

Terraform anwenden

Wenn Sie den obigen Befehl ausführen, können Sie nach erfolgreichem Abschluss sehen, dass 1 neue Ressource hinzugefügt und 0 zerstört wurde.

Sie können zur AWS S3-Konsole gehen, um zu überprüfen, ob der S3-Bucket erstellt wurde oder nicht.

Löschen Sie den erstellten S3-Bucket mit Terraform

Wenn Sie eine Ressource, die Sie mit der in der main.tf-Datei erwähnten Konfiguration erstellt haben, nicht mehr benötigen, können Sie den Befehl "terraform Destroy" verwenden, um alle diese Ressourcen zu löschen. Hier wird der S3-Bucket beim Ausführen des folgenden Befehls gelöscht.

Terraform zerstören

Schlussfolgerung

In diesem Artikel haben wir die Schritte gesehen, um unser eigenes Modul zu schreiben und damit einen S3-Bucket zu erstellen. Jetzt kann dasselbe Modul verwendet werden, um mehrere S3-Buckets zu erstellen, dazu müssen wir nur die Werte von Variablen ändern und dasselbe Modul wiederverwenden.


Linux
  1. So erstellen Sie eine RDS-Instance auf AWS mit Terraform

  2. So erstellen Sie eine IAM-Rolle in AWS mit Terraform

  3. So erstellen Sie Git-Tags

  4. So erstellen Sie eine Subdomain

  5. So erstellen Sie eine Subdomain

So erstellen Sie eine Addon-Domain

So erstellen Sie eine Subdomain in cPanel

So erstellen Sie symbolische Links in Linux

So erstellen Sie Bash-Aliase

So erstellen Sie eine Datei unter Linux

So erstellen Sie eine Tar-Gz-Datei