GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengelola Status Terraform di Bucket AWS S3

Dalam artikel ini, kita akan melihat apa itu Terraform state dan bagaimana mengelolanya di S3 Bucket. Kita juga akan melihat apa itu "lock" di Terraform dan bagaimana menerapkannya. Untuk mengimplementasikan ini, kita perlu membuat Bucket S3 dan Tabel DynamoDB di AWS.

Sebelum melanjutkan, mari kita pahami dasar-dasar status Terraform dan Kunci.

  • Status Terraform (file terraform.tstate): 
    File status berisi informasi tentang resource yang ada yang ditentukan dalam file konfigurasi terraform. Misalnya, jika Anda telah membuat Instance EC2 menggunakan konfigurasi terraform, maka file status berisi info tentang sumber daya sebenarnya yang dibuat di AWS.
  • S3 sebagai Backend untuk menyimpan file Negara :
    Jika kita bekerja dalam tim, sebaiknya simpan file status terraform dari jarak jauh agar orang-orang dari tim dapat mengaksesnya. Untuk menyimpan status dari jarak jauh, kami memerlukan dua hal:bucket s3 untuk menyimpan file status dan resource backend s3 terraform.
  • Kunci
    Jika kami menyimpan file status dari jarak jauh sehingga banyak orang dapat mengaksesnya, kami mengambil risiko beberapa orang mencoba membuat perubahan pada file yang sama pada waktu yang sama persis. Jadi kita perlu memiliki mekanisme yang akan “mengunci” status jika saat ini sedang digunakan oleh pengguna lain. Kita dapat mencapainya dengan membuat tabel dynamoDB untuk digunakan terraform.

Di sini, kita akan melihat semua langkah langsung mulai dari membuat Bucket S3 secara manual, menambahkan kebijakan yang diperlukan ke dalamnya, membuat Tabel DynamoDB menggunakan Terraform, dan mengonfigurasi Terraform untuk menggunakan S3 sebagai Backend dan DynamoDB untuk menyimpan kunci.

Prasyarat

  1. Pemahaman dasar tentang Terraform.
  2. Pemahaman dasar tentang Bucket S3.
  3. Terraform terpasang di sistem Anda.
  4. Akun AWS (Buat jika Anda belum memilikinya).
  5. '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. Buat Bucket S3 dan Lampirkan Kebijakan ke dalamnya.
  2. Buat Tabel DynamoDB menggunakan Terraform
  3. Buat EC2 menggunakan file konfigurasi Terraform.
  4. Hapus instance EC2 yang dibuat menggunakan Terraform.

Buat Bucket S3 dan lampirkan Kebijakan ke dalamnya.

Klik di sini untuk mempelajari cara membuat Bucket S3 di Akun AWS. Setelah Anda membuat Bucket, lampirkan Kebijakan berikut ke dalamnya.

{ "Versi":"2012-10-17", "Pernyataan":[ { "Sid":"Stmt1560164441598", "Efek":"Izinkan", "Kepala Sekolah":"*", "Tindakan":[ "s3:PutObject*", "s3:List*", "s3:Get*", "s3:Delete*" ], "Resource":[ "arn:aws:s3:::state-lock-rahul" , "arn:aws:s3:::state-lock-rahul/*" ] } ]}

Konfigurasikan  "AWS_ACCESS_KEY_ID" dan "AWS_SECRET_ACCESS_KEY" sehingga Anda dapat mengakses akun dari CLI.

Gunakan perintah berikut untuk mengekspor nilai "AWS_ACCESS_KEY_ID" dan "AWS_SECRET_ACCESS_KEY

ekspor AWS_ACCESS_KEY_ID=AKIAQ6GAIA5XC2XMMM7Keluarkan AWS_SECRET_ACCESS_KEY=BqmubAkz1L2OOsxcvJLjl3usE0XIn5WNtY+Qaxfbecho $AWS_ACCESS_KEY_pre_IDecho $AWS> 

Setelah Anda mengonfigurasi kredensial, Anda cukup mengujinya dengan membuat daftar bucket menggunakan perintah berikut.

aws s3 ls

Buat Tabel DynamoDB menggunakan Terraform

Buat 'variables.tf' yang berisi deklarasi variabel yang diperlukan.

variabel vim.tf

variabel "wilayah" { description ="Wilayah AWS VPC"}

Buat 'main.tf' yang bertanggung jawab untuk membuat Tabel DynamoDB. Main.tf ini akan membaca nilai variabel dari variabel.tf. Tabel ini akan digunakan untuk menyimpan kunci.

penyedia "aws" { region ="${var.region}"}
sumber daya "aws_dynamodb_table" "terraform_locks" {
name ="rahul-test-dynamodb-table"
billing_mode ="PAY_PER_REQUEST"
hash_key ="LockID"
atribut {
name ="LockID"
type ="S"
}
}

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.

  init terraform

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

Sekarang, Anda dapat membuka Dasbor DynamoDB di konsol untuk memeriksa apakah Tabel telah dibuat atau belum.

Sampai saat ini, kami telah membuat Bucket S3 secara manual dari Konsol S3 dan Tabel DynamoDB menggunakan Terraform. Kami belum mengonfigurasi Bucket S3 sebagai Backend untuk menyimpan status dan Tabel DynamoDB untuk menyimpan kunci.

Untuk mencapai tujuan kita, kita harus memodifikasi file main.tf Terraform kita. Setelah memodifikasi kode dan menjalankannya, status lokal yang sudah ada sebelumnya akan disalin ke S3 Backend.

Perbarui main.tf kami yang ada dengan kode berikut.

vim main.tf

provider "aws" { region ="${var.region}"} terraform { backend "s3" { bucket ="state-lock-rahul" key ="test/terraform.tfstate" region ="eu-west -3" dynamodb_table ="rahul-test-dynamodb-table" }} resource "aws_dynamodb_table" "terraform_locks" { name ="rahul-test-dynamodb-table" billing_mode ="PAY_PER_REQUEST" hash_key =atribut "LockID" { name =" LockID" type ="S" }}

Sekarang, jika Anda mencoba perintah "terraform plan" untuk melihat sumber daya baru apa yang akan dibuat, perintah tersebut akan gagal dengan kesalahan berikut.

Anda akan diminta untuk menginisialisasi ulang backend.

Untuk menginisialisasi ulang backend, gunakan perintah "terraform init". Pada langkah ini, file status lokal Anda akan disalin ke Bucket S3.

terraform init

Anda dapat mengamati output seperti yang ditunjukkan pada tangkapan layar di bawah setelah menjalankan perintah "terraform init", Terraform telah diaktifkan untuk menggunakan Tabel DynamoDb untuk memperoleh  kunci. Setelah Penguncian diaktifkan, tidak ada dua operasi yang sama pada sumber daya yang sama yang dapat dilakukan secara paralel.

Anda dapat membuka Dasbor S3 dari AWS Console untuk melihat apakah terraform.tfstate telah disalin atau tidak.

Sekarang, sekali lagi Anda dapat membuat sumber daya baru dan melihat statusnya akan disimpan di Bucket S3. Untuk membuat tabel Uji DynamoDB baru, perbarui file main.tf dengan kode berikut.

vim main.tf

variable "region" { description ="Region of AWS VPC"}Rahuls-MacBook-Pro:terraform rahul$ cat main.tf provider "aws" { region ="${var.region}"}terraform { backend " s3" { bucket ="state-lock-rahul" key ="test/terraform.tfstate" region ="eu-west-3" dynamodb_table ="rahul-test-dynamodb-table" }}sumber daya "aws_dynamodb_table" "terraform_locks" { name ="rahul-test-dynamodb-table" billing_mode ="PAY_PER_REQUEST" hash_key ="LockID" atribut { name ="LockID" type ="S" }}sumber daya "aws_dynamodb_table" "test-table" { name ="rahul -test-table" billing_mode ="PAY_PER_REQUEST" hash_key ="LockID" atribut { name ="LockID" type ="S" }}

Kali ini, tidak perlu menjalankan "terraform init" karena tidak ada perubahan di Backend ke Penyedia.

Anda cukup menggunakan perintah "terraform plan" untuk melihat resource baru yang akan dibuat.

rencana terraform

Sekarang, jalankan perintah berikut untuk membuat Tabel Uji DynamoDb baru.

terraform berlaku

Pada tangkapan layar di atas, Anda dapat melihat bahwa Penguncian telah diaktifkan, file .tfstate sedang disalin ke S3.

Sekarang, di konsol Anda dapat melihat bahwa tabel baru telah dibuat

Sekarang jika Anda tidak lagi memerlukan resource yang Anda buat menggunakan Terraform, gunakan perintah berikut untuk menghapus resource.

penghancuran terraform

Segera setelah Anda menghapus sumber daya, Anda dapat melihat bahwa tabel yang digunakan untuk mengunci juga telah dihapus. Jika Anda tidak memerlukan Bucket S3 juga, Anda dapat menghapusnya dari konsol.

Kesimpulan

Dalam artikel ini, kita belajar tentang perlunya menggunakan status jarak jauh dan mengunci di Terraform. Kami melihat langkah-langkah untuk menggunakan Bucket S3 sebagai Backend untuk menyimpan Status Terraform dan Tabel DynamoDb untuk mengaktifkan Penguncian.


Linux
  1. Bagaimana Mengelola Kemampuan File Linux

  2. Cara Mengelola Kata Sandi Akun di Linux

  3. Cara membuat instans RDS di AWS menggunakan Terraform

  1. Cara membuat Peran IAM di AWS menggunakan Terraform

  2. Cara menggunakan AWS CLI untuk mengelola Amazon S3

  3. Cara Mengelola Partisi Swap di Linux

  1. Cara Meluncurkan Instans AWS EC2 Menggunakan Terraform

  2. Cara membuat modul Terraform

  3. Cara mengelola instans AWS EC2 menggunakan aws-cli