GNU/Linux >> Belajar Linux >  >> Linux

Buat Virtual Private Cloud (VPC) di AWS menggunakan Terraform

Pada artikel ini, saya akan menunjukkan cara membuat VPC bersama dengan Subnet, Gateway Internet, Gateway NAT, dan Tabel Rute. Kami akan membuat 1 VPC dengan 4 Subnet:2 Private dan 2 Public, 2 NAT Gateway, 1 Internet Gateway, dan 4 Route Table.

Sebelum melanjutkan, saya berasumsi bahwa Anda memiliki pemahaman dasar tentang Terraform dan VPC di AWS. Untuk mempelajari VPC dan pembuatannya dari konsol AWS, Anda dapat mengklik di sini dan untuk mempelajari dasar-dasar Terraform, Anda dapat menelusuri "Apa itu Terraform dan bagaimana cara menginstalnya di Instans AWS EC2?"

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 file konfigurasi Terraform untuk membuat VPC dengan resource dependen lainnya.
  2. Buat VPC dan resource dependen lainnya menggunakan file konfigurasi Terraform
  3. Hapus VPC yang dibuat dan resource dependen lainnya menggunakan Terraform

Tulis file konfigurasi Terraform untuk membuat VPC dengan resource dependen lainnya.

Buat direktori khusus tempat Anda dapat membuat file konfigurasi terraform.

Gunakan perintah berikut untuk membuat direktori dan mengubah direktori kerja Anda saat ini ke direktori tersebut.

mkdir terraform
cd terraform/

Saya menggunakan "vim" sebagai editor untuk menulis dalam file. Anda dapat menggunakan editor pilihan Anda dan menyalin-tempel konfigurasi berikut untuk membuat variabel.tf, terraform.tfvars, dan main.tf

Buat 'main.tf', yang bertanggung jawab untuk membuat VPC di AWS dengan resource dependen. Main.tf ini akan membaca nilai variabel dari variabel.tf dan terraform.tfvars.

vim main.tf 
provider "aws" { region ="${var.region}" access_key ="${var.access_key}" secret_key ="${var.secret_key}"}# sumber daya VPC:Ini akan membuat 1 VPC dengan 4 Subnet, 1 Internet Gateway, 4 Tabel Rute. resource "aws_vpc" "default" { cidr_block =var.cidr_block enable_dns_support =true enable_dns_hostnames =true}resource "aws_internet_gateway" "default" { vpc_id =aws_vpc.default.id}resource "aws_route_table" "private" { count. private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id}resource "aws_route" "private" { count =length(var.private_subnet_cidr_blocks) route_table_id =aws_route_table.private[count.index].id destination_cidr_aw_block ="naid. .default[count.index].id}resource "aws_route_table" "public" { vpc_id =aws_vpc.default.id}resource "aws_route" "public" { route_table_id =aws_route_table.public.id destination_cidr_block ="0.0.0.0/0" gateway_id =aws_internet_gateway.default.id}resource "aws_subnet" "private" { count =length(var.private_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.private_subnet_cidr_blocks[count.index ] availability_zone =var.availability_zones[count.index]}resource "aws_subnet" "public" { count =length(var.public_subnet_cidr_blocks) vpc_id =aws_vpc.default.id cidr_block =var.public_subnet_cidr_blocks[count.index] availability_zone [count.index] map_public_ip_on_launch =true}resource "aws_route_table_association" "private" { count =length(var.private_subnet_cidr_blocks) subnet_id =aws_subnet.private[count.index].id route_table_id =aws_route_table.indexvate_table} resource "aws_route_table_association" "public" { count =length(var.public_subnet_cidr_blocks) subnet_id =aws_subnet.public[count.index].id route_table_id =aws_route_table.public.id}# Sumber daya NAT:Ini akan membuat 2 gateway NAT di 2 Subnet Publik untuk 2 Subnet Pribadi yang berbeda.resource "aws_eip" "nat" { count =length(var.public_subnet_cidr_blocks) vpc =true}resource "aws_nat_gateway" "default" { bergantung_on =["aws_i nternet_gateway.default"] count =length(var.public_subnet_cidr_blocks) alokasi_id =aws_eip.nat[count.index].id subnet_id =aws_subnet.public[count.index].id}   

Buat 'variables.tf' yang berisi deklarasi dan definisi variabel.

variabel vim.tf
variable "access_key" { description ="Access key to AWS console" }variable "secret_key" { description ="Secret key to AWS console" }variable "region" { default ="eu-west-3" type =string description ="Wilayah VPC"}variabel "cidr_block" { default ="10.0.0.0/16" type =string description ="CIDR block for the VPC"}variabel "public_subnet_cidr_blocks" { default =["10.0.0.0/24 ", "10.0.2.0/24"] type =list description ="Daftar blok CIDR subnet publik"}variabel "private_subnet_cidr_blocks" { default =["10.0.1.0/24", "10.0.3.0/24"] type =list description ="List of private subnet CIDR blocks"}variabel "availability_zones" { default =["eu-west-3a", "eu-west-3b"] type =list description ="List of availability zones"}  

Buat 'terraform.tfvars' yang berisi definisi variabel access_key dan secret_key yang didefinisikan dalam file di atas. Kami telah menyimpan deklarasi kedua variabel ini dalam file 'terraform.tfvars'.

Kunci berikut perlu diubah dengan kunci pengguna IAM Anda.

vim terraform.tfvars 
access_key ="AKIAQ6GAIA5XIHHM2GJM"secret_key ="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"

Sekarang, Anda harus memiliki 3 file, yaitu, variabel.tf, terraform.tfvars, dan main.tf

Buat VPC dan sumber daya dependen lainnya menggunakan file konfigurasi 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.

init terraform

Perintah kedua yang akan digunakan adalah 'rencana terraform'. 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 menjalankan perintah di atas,  Anda dapat melihat bahwa 20 resource baru telah ditambahkan dan 0 telah dimusnahkan di output.

Anda dapat membuka konsol AWS VPC untuk memverifikasi apakah VPC dibuat bersama dengan Subnet, Gateway NAT Tabel Rute, dan Gateway Internet.

Hapus VPC yang dibuat dan resource dependen lainnya menggunakan Terraform

Jika Anda tidak lagi memerlukan resource yang Anda buat menggunakan konfigurasi yang disebutkan di file main.tf, Anda dapat menggunakan perintah "terraform destroy" untuk menghapus semua resource tersebut.

penghancuran terraform

Saat Anda menjalankan perintah di atas,  Anda dapat melihat bahwa 20 resource yang telah dibuat dimusnahkan di output. Anda dapat memverifikasi hal yang sama dengan mengunjungi AWS di Dasbor VPC.

Kesimpulan

Pada artikel ini, kita melihat langkah-langkah untuk membuat VPC dengan 4 Subnet, 4 Tabel Rute, 2 Gateway NAT, dan 1 Internet Gateway. Kami juga melihat bagaimana sumber daya yang diciptakan dapat dihancurkan.


Linux
  1. Buat instans EC2 di AWS menggunakan Terraform

  2. Cara membuat instans RDS di AWS menggunakan Terraform

  3. Cara membuat Peran IAM di AWS menggunakan Terraform

  1. Cara Membuat Jaringan VPC (Virtual Private Cloud) di GCP

  2. Cara Mengonfigurasi VPC (Virtual Private Cloud) Anda sendiri di AWS

  3. Cara Meluncurkan Instans AWS EC2 Menggunakan Terraform

  1. Cara membuat Mesin Virtual (VM) di Google Cloud Platform (GCP)

  2. Kelola AWS VPC menggunakan aws-cli

  3. Cara menggunakan Cloudformation untuk membuat VPC di AWS