GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear un módulo de Terraform

En este artículo, veremos cómo crear módulos reutilizables en Terraform. Los módulos nos permiten evitar la duplicación de código. Significa que se puede usar el mismo código para crear recursos del mismo tipo. Al usar módulos, no necesita copiar y pegar su código para crear múltiples recursos del mismo tipo.

Por ejemplo, puede poner el código dentro de un módulo de Terraform y reutilizar ese módulo en los entornos de ensayo y producción, de esta manera podremos hacer que ambos entornos reutilicen el mismo código del mismo módulo en lugar de escribir el código varias veces.

En este artículo, escribiremos un módulo para crear un S3 Bucket como ejemplo.

Requisitos previos

  1. Comprensión básica de Terraform.
  2. Terraform instalado en su sistema.
  3. Cuenta de AWS (cree si no tiene una).
  4. 'access_key' y 'secret_key' de un usuario de AWS IAM. (Haga clic aquí para aprender a crear un usuario de IAM con 'access_key' y 'secret_key' en AWS)

Lo que haremos

  1. Escribir nuestro propio módulo
  2. Cree un depósito S3 con el módulo Terraform.
  3. Elimine el recurso creado mediante el módulo Terraform.

Escribir nuestro propio módulo de Terraform

Cree un directorio dedicado donde pueda tener su archivo terraform "main.tf" y un módulo.

Use el siguiente comando para crear un directorio

mkdir -p módulos/aws-s3

Cree un archivo main.tf en módulos/aws-s3 y copie y pegue el siguiente bloque de código que se usará como módulo para crear un S3 Bucket.

módulos vim/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
}


Declare la variable requerida en "modules/aws-s3/variables.tf". Si lo desea, puede especificar los valores predeterminados para las variables. Copie y pegue el siguiente bloque de código para crear el archivo.

módulos vim/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 = {}
}

Ahora, cree el archivo "main.tf" que llamará al módulo que definimos en el paso anterior. Llamar a un módulo significa incluir el contenido de ese módulo en la configuración con valores específicos para su variable. Los módulos se llaman desde dentro de otros módulos usando module bloques:

vim principal.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"
  }
}

Todos los módulos requieren un argumento fuente. Su valor es la ruta a un directorio local de los archivos de configuración del módulo o una fuente de módulo remoto que Terraform debería descargar y usar.

Se puede especificar la misma dirección de origen en varios bloques de módulo para crear varias copias de los recursos definidos dentro, posiblemente con diferentes valores de variables.

Cree "variables.tf" que contendrá la definición de las variables. Esto mantendrá los valores predeterminados que deben pasarse al módulo junto con AWS "access_key" y "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" }

Ahora cree "terraform.tfvars" que contendrá las credenciales de usuario de AWS. Las siguientes claves deben cambiarse con las claves de su usuario de IAM. Antes de especificar estas claves, debe crearlas desde la consola de AWS y no compartir estas claves con nadie.

vim terraform.tfvars

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

Crea un depósito S3 usando el módulo Terraform

Antes de ejecutar los siguientes comandos, asegúrese de haber configurado la clave_acceso y la clave_secreta válidas.

El primer comando que se utilizará es 'terraform init'. Este comando descarga e instala complementos para proveedores utilizados dentro de la configuración. En nuestro caso es AWS.

inicio de terraformación

El segundo comando que se utilizará es 'terraform plan'. Este comando se utiliza para ver los cambios que se producirán en la infraestructura.

plan de terraformación

El comando

'terraform apply' creará los recursos en AWS mencionados en el archivo main.tf. Se le pedirá que proporcione su entrada para crear los recursos.

Aplicar terraformación

Cuando ejecuta el comando anterior, al completarlo con éxito, puede ver que se agregó 1 nuevo recurso y 0 se destruyó.

Puedes ir a la consola de AWS S3 para verificar si el S3 Bucket está creado o no.

Elimine el S3 Bucket creado usando Terraform

Si ya no necesita un recurso que creó usando la configuración mencionada en el archivo main.tf, puede usar el comando "terraform destroy" para eliminar todos esos recursos. Aquí, el depósito S3 se eliminará al ejecutar el siguiente comando.

terraformar destruir

Conclusión

En este artículo, vimos los pasos para escribir nuestro propio módulo y crear un depósito S3 usándolo. Ahora el mismo módulo se puede usar para crear múltiples S3 Buckets, para hacerlo solo necesitamos cambiar los valores de las variables y reutilizar el mismo módulo.


Linux
  1. Cómo crear una copia de seguridad

  2. Cómo crear una instancia RDS en AWS usando Terraform

  3. Cómo crear un rol de IAM en AWS usando Terraform

  4. Cómo crear un subdominio

  5. Cómo crear un subdominio

Cómo crear un dominio adicional

Cómo crear un subdominio en cPanel

Cómo crear enlaces simbólicos en Linux

Cómo crear alias de Bash

Cómo crear un archivo en Linux

Cómo crear un archivo Tar Gz