Jak stworzyć VPC AWS za pomocą Terraform

Jak stworzyć VPC AWS za pomocą Terraform

AWS zapewnia usługi wirtualnej chmury prywatnej (VPC) do tworzenia logicznie izolowanej sieci wirtualnej w chmurze. Tutaj możemy uruchomić instancje EC2 i RDS i tworzyć grupy bezpieczeństwa i inne zasoby. Podobnie jak wiele innych zadań, możemy również stworzyć VPC za pomocą Terraform.

Co obejmiemy

Ten przewodnik pokaże, jak utworzyć VPC AWS (wirtualna chmura prywatna) za pomocą Terraform.

Czego będziesz potrzebować

  1. Konto AWS
  2. Dostęp do Internetu
  3. Podstawy Terraform

Tworzenie AWS VPC za pomocą Terraform

Teraz, gdy zainstalowaliśmy Terraform na naszym komputerze lokalnym, możemy kontynuować nasze zadanie pracy z VPC. Tutaj przedstawiliśmy konfigurację VPC dla naszej sprawy:

Mamy jedną prywatną i jedną publiczną podsieć z odpowiednią tabelą tras. Publiczna podsieć ma również dołączoną do niej bramę NAT. Konfiguracja Terraform dla różnych komponentów jest przechowywana w różnych plikach jako:

  1. zmienne.TF: Definicja zmiennych używanych w plikach
  2. VPC.TF: dla zasobów VPC
  3. wejście.TF: dla zasobów bramy
  4. podsieci.TF: do definiowania publicznych i prywatnych podsieci
  5. Trail Table.TF: dla publicznych i prywatnych zasobów tabeli tras
  6. główny.tf

Jak wspomniano wcześniej, Terraform używa kilku plików konfiguracyjnych do udostępniania zasobów, a każdy z tych plików musi znajdować się w odpowiednim folderze/katalogu roboczym. Utwórzmy katalog w tym celu:

Krok 1. Utwórz folder, który pomieści pliki konfiguracyjne, a następnie przejdź do tego folderu:

1
$ mkdir linuxhint-terraform && cd Linuxhint-Terraform

Krok 2. Utwórzmy nasz pierwszy plik konfiguracyjny: „Zmienne.TF ”, który będzie zawierał informacje o naszym regionie AWS i rodzaju instancji, której chcemy użyć:

1
$ nano zmienne.tf

Teraz umieść następujący tekst w środku i zapisz plik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Zmienna „AWS_REGION”
Opis = "Region AWS do utworzenia VPC w."
default = "us-east-1"

Zmienna „VPC-CIDR”
cidr_block = "172.168.0.0/16 "

zmienna „pubsubcidr”
cidr_block = "172.168.0.0/24 "

zmienna „prisubcidr”
cidr_block = "172.168.1.0/24 "

Krok 3. Utwórz VPC.TF:

1
$ nano VPC.tf

Teraz umieść następujący tekst w środku i zapisz plik:

1
2
3
4
5
Zasób „AWS_VPC” „MY-VPC”
cidr_block = var.VPC-CIDR

Krok 4. Utwórz bramę.plik tf i zdefiniuj bramę internetową i bramę Nat tutaj:

1
$ Nano Gateway.tf

Teraz umieść następujący tekst w środku i zapisz plik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Utwórz zasoby bramy internetowej i dołącz go do VPC
Zasób „aws_internet_gateway” „IGW”
VPC_ID = AWS_VPC.My-VPC.ID

# Utwórz EIP dla IGW
Zasób „AWS_EIP” „MYEIP”
VPC = prawda

# Utwórz zasób bramy NAT i dołącz go do VPC
Zasób „AWS_NAT_GATEWAY” „Nat-GW”
alokacja_id = AWS_EIP.Myeip.ID
Subnet_id = AWS_SUBNET.MyPublicsubnet.ID

Krok 5. Utwórz podsieci.TF dla prywatnych i publicznych podsieci wewnątrz VPC:

1
$ Nano Subnets.tf

Teraz umieść następujący tekst w środku i zapisz plik:

1
2
3
4
5
6
7
8
9
Zasób „aws_subnet” „myPrivatesubnet”
VPC_ID = AWS_VPC.My-VPC.ID
cidr_block = var.Prisubcidr

Zasób „AWS_SUBNET” „MyPublicsubnet”
VPC_ID = AWS_VPC.My-VPC.ID
cidr_block = var.Pubsubcidr

Krok 6. Utwórz tabelę tras.TF dla prywatnych i publicznych podsieci:

1
$ nano Table.tf

Teraz umieść następujący tekst w środku i zapisz plik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Tworzenie RT dla prywatnej podsieci
Zasób „aws_route_table” „privrt”
VPC_ID = AWS_VPC.My-VPC.ID
trasa
cidr_block = "0.0.0.0/0 "
NAT_GATEway_id = AWS_NAT_GATEWAY.Nat-GW.ID


# Tworzenie RT dla podsieci publicznej
Zasób „AWS_Route_Table” „Publrt”
VPC_ID = AWS_VPC.My-VPC.ID
trasa
cidr_block = "0.0.0.0/0 "
Gateway_id = AWS_Internet_gateway.IGW.ID


#Asociating Public RT z publicznymi podsieciami
Zasób „aws_route_table_association” „pubrtass”
Subnet_id = AWS_SUBNET.MyPublicsubnet.ID
trasy_table_id = AWS_Route_Table.PUBRT.ID

#Asoociing the Private RT z prywatnymi podsieciami
Zasób „aws_route_table_association” „prirtass”
Subnet_id = AWS_SUBNET.MyPrivatesubnet.ID
trasy_table_id = AWS_Route_Table.privrt.ID

Krok 7. Zrób „główny.plik tf, który będzie zawierał definicję naszej infrastruktury:

1
$ nano main.tf

Teraz umieść w nim następującą konfigurację:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Terraform
wymagane_providers
AWS =
Źródło = "Hashicorp/AWS"
wersja = "~> 3.27 "


wymagane_wersja = "> = 0.14.9 "

Dostawca „AWS”
region = var.AWS_REGION
shared_credentials_file = "/home/user_name/.AWS/poświadczenia "
profilu = "profilu1"

Zmodyfikuj "Nazwa użytkownika”W powyższym kodzie z nazwą użytkownika w twoim przypadku. Zobaczmy trochę o parametrach używanych w poprzednich plikach:

  • shared_credentials_file: Jest to ścieżka pliku zawierająca poświadczenia użytkowników AWS.
  • profil: Określa profil użytkownika do użycia do pracy z AWS.
  • AWS_VPC: Zasób do budowy VPC.
  • cidr_block: Zapewnia blok IPv4 CIDR dla VPC.
  • aws_internet_gateway: Zasób do tworzenia bramy internetowej dla VPC.
  • AWS_EIP: Zasób do produkcji elastycznej IP (EIP).
  • aws_nat_gateway: Zasób do tworzenia bramy NAT dla VPC.
  • Alokacja_id: Atrybut identyfikatora alokacji wyżej generowanego EIP.
  • Subnet_id: Atrybut identyfikatora podsieci podsieci, w którym wdrażany jest brama NAT.
  • AWS_SUBNET: Zasób do tworzenia podsieci VPC.
  • AWS_Route_Table: Zasób do tworzenia tabeli tras VPC.
  • trasa: Argument zawierający listę obiektów trasy.
  • nat_gateway_id: Argument oznaczający identyfikator bramy VPC NAT.
  • Gateway_id: Opcjonalny argument dla VPC Internet Gateway.
  • AWS_Route_Table_Association: Zasób do tworzenia związku między tabelą tras (publicznych lub prywatnych) a 1) bramą internetową i 2) wirtualną bramą prywatną.
  • trasy_table_id: Identyfikator tabeli trasy, z którym kojarzymy podsieć.

Inicjowanie katalogu Terraform

Aby pobrać i zainstalować dostawcę, który zdefiniowaliśmy w naszej konfiguracji i innych plikach, musimy zainicjować katalog zawierający ten plik:

1
$ Terraform init

Budowanie infrastruktury

Aby zastosować zmiany, które zaplanowaliśmy powyżej, uruchom następujące polecenie:

1
$ Terraform Zastosuj

Wprowadź „Tak” na terminalu po wyświetleniu monitu.

Weryfikacja procedury

Teraz sprawdźmy, czy pożądany VPC jest utworzony, czy nie. Udaj się do konsoli VPC i sprawdź dostępne VPC:

Widzimy, że nasz VPC jest tworzony pomyślnie.

Po wykonaniu tego zadania usuń zasoby, aby uniknąć niepotrzebnych opłat:

1
$ Terraform niszczy

Wprowadź „Tak”, aby zastosować działanie.

Wniosek

W tym przewodniku dowiedzieliśmy się o tworzeniu VPC na AWS za pomocą Terraform. Następną rzeczą, którą możesz zrobić, to spróbować zapewnić instancję RDS lub EC2 za pomocą Terraform.