GNU/Linux >> Belajar Linux >  >> Linux

Cara membuat modul Terraform

Pada artikel ini, kita akan melihat cara membuat modul yang dapat digunakan kembali di Terraform. Modul memungkinkan kita untuk menghindari duplikasi kode. Ini berarti kode yang sama dapat digunakan untuk membuat sumber daya dari jenis yang sama. Dengan menggunakan modul, Anda tidak perlu menyalin-menempelkan kode untuk membuat banyak sumber daya dengan jenis yang sama.

Misalnya, Anda dapat memasukkan kode ke dalam modul Terraform dan menggunakan kembali modul tersebut di lingkungan staging dan produksi, dengan cara ini kita akan dapat membuat kedua lingkungan menggunakan kembali secara sama kode dari modul yang sama alih-alih menulis kode beberapa kali.

Pada artikel ini, kita akan menulis modul untuk membuat Bucket S3 sebagai contoh.

Prasyarat

  1. Pemahaman dasar tentang Terraform.
  2. Terraform terpasang di sistem Anda.
  3. Akun AWS (Buat jika Anda belum memilikinya).
  4. 'access_key' &'secret_key' dari Pengguna AWS IAM. (Klik di sini untuk belajar membuat pengguna IAM dengan 'access_key' &'secret_key' di AWS, )

Apa yang akan kami lakukan

  1. Tulis modul kami sendiri
  2. Buat bucket S3 menggunakan Modul Terraform.
  3. Hapus resource yang dibuat menggunakan Modul Terraform.

Tulis modul Terraform kita sendiri

Buat direktori khusus tempat Anda dapat memiliki file dan modul terraform "main.tf".

Gunakan perintah berikut untuk membuat direktori

mkdir -p modules/aws-s3

Buat file main.tf di bawah modules/aws-s3 dan salin tempel blok kode berikut yang akan digunakan sebagai modul untuk membuat Bucket 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
}


Deklarasikan variabel yang diperlukan di "modules/aws-s3/variables.tf". Jika mau, Anda dapat menentukan nilai default ke variabel. Copy paste blok kode berikut untuk membuat file.

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

Sekarang, buat file "main.tf" yang akan memanggil modul yang kita definisikan pada langkah di atas. Memanggil modul berarti menyertakan konten modul tersebut ke dalam konfigurasi dengan nilai tertentu untuk variabelnya. Modul dipanggil dari dalam modul lain menggunakan module blok:

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

Semua modul memerlukan argumen sumber. Nilainya adalah jalur ke direktori lokal file konfigurasi modul, atau sumber modul jarak jauh yang harus diunduh dan digunakan Terraform.

Alamat sumber yang sama dapat ditentukan dalam beberapa blok modul untuk membuat beberapa salinan sumber daya yang ditentukan di dalamnya, mungkin dengan nilai variabel yang berbeda.

Buat "variables.tf" yang akan berisi definisi variabel. Ini akan menyimpan nilai default yang perlu diteruskan ke modul bersama dengan "access_key" dan "secret_key" AWS.

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

Sekarang buat "terraform.tfvars" yang akan menyimpan Kredensial Pengguna AWS. Kunci berikut perlu diubah dengan kunci pengguna IAM Anda. Sebelum menentukan kunci ini, Anda harus membuatnya dari AWS Console dan tidak membagikan kunci ini kepada siapa pun.

vim terraform.tfvars

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

Buat bucket S3 menggunakan Modul Terraform

Sebelum Anda menjalankan perintah berikut, pastikan Anda telah mengonfigurasi access_key dan secret_key yang valid.

Perintah pertama yang digunakan adalah 'terraform init'. Perintah ini mengunduh dan menginstal plugin untuk penyedia yang digunakan dalam konfigurasi. Dalam kasus kami ini adalah AWS.

terraform init

Perintah kedua yang digunakan adalah 'terraform plan'. Perintah ini digunakan untuk melihat perubahan yang akan terjadi pada infrastruktur.

rencana terraform

Perintah 'terraform apply' akan membuat sumber daya pada AWS yang disebutkan dalam file main.tf. Anda akan diminta untuk memberikan masukan untuk membuat sumber daya.

terraform berlaku

Saat Anda menjalankan perintah di atas, setelah berhasil diselesaikan, Anda dapat melihat bahwa 1 sumber daya baru telah ditambahkan dan 0 telah dihancurkan.

Anda dapat membuka konsol AWS S3 untuk memverifikasi apakah Bucket S3 dibuat atau tidak.

Hapus Bucket S3 yang dibuat menggunakan Terraform

Jika Anda tidak lagi memerlukan sumber daya yang Anda buat menggunakan konfigurasi yang disebutkan dalam file main.tf, Anda dapat menggunakan perintah "terraform destroy" untuk menghapus semua sumber daya tersebut. Di sini, ember S3 akan dihapus setelah menjalankan perintah berikut.

penghancuran terraform

Kesimpulan

Dalam artikel ini, kita melihat langkah-langkah untuk menulis modul kita sendiri dan membuat bucket S3 menggunakannya. Sekarang modul yang sama dapat digunakan untuk membuat beberapa Bucket S3, untuk melakukannya kita hanya perlu mengubah nilai variabel dan menggunakan kembali modul yang sama.


Linux
  1. Cara Membuat Cadangan

  2. Cara membuat Tag Git

  3. Cara membuat subdomain

  1. Cara membuat instans RDS di AWS menggunakan Terraform

  2. Cara membuat Peran IAM di AWS menggunakan Terraform

  3. Cara Membuat Subdomain

  1. Cara Membuat File di Ansible

  2. Cara Membuat Tabel di MySQL

  3. Cara membuat tautan ke direktori