GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit modul Terraform

V tomto článku uvidíme, jak vytvořit opakovaně použitelné moduly v Terraformu. Moduly nám umožňují vyhnout se duplicitě kódu. To znamená, že stejný kód lze použít k vytvoření zdrojů stejného typu. Při použití modulů nemusíte kopírovat a vkládat kód, abyste vytvořili více zdrojů stejného typu.

Můžete například vložit kód do modulu Terraform a tento modul znovu použít ve zkušebním a produkčním prostředí. Tímto způsobem budeme moci obě prostředí znovu použít stejně kód ze stejného modulu namísto psaní kódu vícekrát.

V tomto článku napíšeme modul pro vytvoření S3 Bucket jako příklad.

Předpoklady

  1. Základní porozumění Terraformu.
  2. Terraform nainstalovaný ve vašem systému.
  3. Účet AWS (vytvořte si jej, pokud jej nemáte).
  4. 'access_key' a 'secret_key' uživatele AWS IAM. (Kliknutím sem se dozvíte, jak vytvořit uživatele IAM pomocí 'access_key' a 'secret_key' na AWS, )

Co uděláme

  1. Napište si vlastní modul
  2. Vytvořte kbelík S3 pomocí modulu Terraform.
  3. Smažte vytvořený zdroj pomocí modulu Terraform.

Napište náš vlastní modul Terraform

Vytvořte vyhrazený adresář, kde můžete mít svůj terraform soubor "main.tf" a modul.

K vytvoření adresáře použijte následující příkaz

mkdir -p modules/aws-s3

Vytvořte soubor main.tf pod modules/aws-s3 a zkopírujte a vložte následující blok kódu, který bude použit jako modul k vytvoření bloku S3.

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
}


Deklarujte požadovanou proměnnou v „modules/aws-s3/variables.tf“. Pokud chcete, můžete zadat výchozí hodnoty proměnných. Zkopírujte a vložte následující blok kódu pro vytvoření souboru.

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 = {}
}

Nyní vytvořte soubor "main.tf", který bude volat modul, který jsme definovali ve výše uvedeném kroku. Volání modulu znamená zahrnutí obsahu tohoto modulu do konfigurace s konkrétními hodnotami pro jeho proměnnou. Moduly se volají z jiných modulů pomocí module bloky:

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"
  }
}

Všechny moduly vyžadují zdrojový argument. Jeho hodnota je buď cesta k místnímu adresáři konfiguračních souborů modulu, nebo vzdálený zdroj modulu, který by měl Terraform stáhnout a použít.

Stejnou zdrojovou adresu lze zadat ve více blocích modulu, aby se vytvořilo více kopií zdrojů definovaných v rámci, případně s různými hodnotami proměnných.

Vytvořte soubor "variables.tf", který bude obsahovat definici proměnných. To bude obsahovat výchozí hodnoty, které je třeba předat modulu spolu s AWS „access_key“ a „secret_key“.

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" }

Nyní vytvořte soubor „terraform.tfvars“, který bude obsahovat přihlašovací údaje uživatele AWS. Následující klíče je třeba změnit pomocí klíčů vašeho uživatele IAM. Před zadáním těchto klíčů je musíte vytvořit z konzoly AWS a s nikým tyto klíče nesdílet.

vim teraform.tfvars

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

Vytvořte kbelík S3 pomocí modulu Terraform

Před spuštěním následujících příkazů se ujistěte, že jste nakonfigurovali platný access_key a secret_key.

Prvním příkazem, který se má použít, je 'terraform init'. Tento příkaz stáhne a nainstaluje pluginy pro poskytovatele používané v rámci konfigurace. V našem případě je to AWS.

terraform init

Druhý příkaz, který se má použít, je 'terraform plan'. Tento příkaz se používá k zobrazení změn, ke kterým dojde v infrastruktuře.

plán terraform

příkaz 'terraform apply' vytvoří prostředky na AWS uvedené v souboru main.tf. Budete vyzváni, abyste poskytli svůj vstup pro vytvoření zdrojů.

platí terraform

Když provedete výše uvedený příkaz, po úspěšném dokončení uvidíte, že 1 nový zdroj byl přidán a 0 byl zničen.

Můžete přejít do konzole AWS S3 a ověřit, zda je segment S3 vytvořen či nikoli.

Smazat vytvořený S3 Bucket pomocí Terraform

Pokud již nepotřebujete zdroj, který jste vytvořili pomocí konfigurace uvedené v souboru main.tf, můžete pomocí příkazu "terraform zničit" všechny tyto zdroje smazat. Zde bude segment S3 odstraněn po provedení následujícího příkazu.

terraform zničit

Závěr

V tomto článku jsme viděli kroky k vytvoření vlastního modulu a vytvoření bloku S3 pomocí něj. Nyní lze stejný modul použít k vytvoření více segmentů S3, k tomu stačí změnit hodnoty proměnných a znovu použít stejný modul.


Linux
  1. Jak vytvořit instanci RDS na AWS pomocí Terraform

  2. Jak vytvořit roli IAM v AWS pomocí Terraform

  3. Jak vytvořit Git Tagy

  1. Jak vytvořit zálohu

  2. Jak vytvořit subdoménu

  3. Jak vytvořit subdoménu

  1. Jak vytvořit soubor v Ansible

  2. Jak vytvořit tabulku v MySQL

  3. Jak vytvořit odkaz na adresář