Jak utworzyć instancję EC2 na AWS za pomocą Terraform

Jak utworzyć instancję EC2 na AWS za pomocą Terraform

Wraz ze wzrostem technologii przetwarzania w chmurze więcej branż migruje swoje obciążenia do infrastruktury w chmurze. W wyniku tego wzorca technolodzy odczuwali potrzebę zautomatyzowania procesu wdrażania instancji (i innych zasobów chmurowych). Terraform jest jednym z takich narzędzie open source, które ułatwia ten postęp.

Co obejmiemy

W tym artykule pokaże, w jaki sposób możemy utworzyć instancję EC2 na AWS za pomocą Terraform. Zobaczymy przykład instalacji prostego serwera WWW w tej instancji. Porozmawiajmy najpierw o instalacji Terraform.

Jak możesz zainstalować Terraform

Oficjalne pakiety TerraForm dla różnych systemów operacyjnych, takich jak Dystrybuty Windows, Mac i Linux, takie jak Ubuntu/Debian, Centos/Rhel itp., są dostępne. Ponadto Terraform utrzymuje również skompilowany binarny i można go również opracować ze źródła. Możesz sprawdzić różne procedury instalacyjne na stronie internetowej Terraform. Aby zweryfikować instalację Terraform, uruchom następujące polecenie:

1
$ terraform -version

Tworzenie instancji AWS EC2 za pomocą Terraform

Po zainstalowaniu Terraform w systemie, kontynuuj tworzenie instancji EC2 na AWS. Istnieje kilka plików, które skutecznie zarządzają wdrożeniem Terraform. Chociaż możemy utworzyć pojedynczy plik i zadeklarować wszystkie rzeczy, takie podejście sprawi, że cały scenariusz będzie niezdarny. Najpierw stwórzmy działający katalog, jak widać następująco:

Krok 1. Zacznij od folderu, który pomieści wszystkie pliki konfiguracyjne. Utwórz folder i przesuń w nim, jak pokazano następująco:

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

Krok 2. Utwórzmy nasz pierwszy plik konfiguracyjny: „Zmienne.TF ”, który zawiera informacje o naszym regionie AWS i rodzaju instancji, której chcemy użyć, jak pokazano następująco:

1
$ nano zmienne.tf

Teraz umieść poniższy tekst w nim i zapisz plik, jak pokazano następująco:

1
2
3
4
5
6
7
8
9
10
Zmienna „AWS_REGION”
Opis = "Region AWS w celu wdrożenia instancji EC2 w."
default = "us-east-1"

zmienna „instance_type”
Opis = "Typ instancji dla EC2"
default = "t2.mikro "

Krok 3. Domyślnie, gdy Terraform tworzy nową instancję, domyślna grupa bezpieczeństwa powiązana z instancją zaprzecza całego ruchu. Dlatego utworzymy nowy plik „SECGRP.TF ”, aby utworzyć grupę bezpieczeństwa„ Web-SG ”, która pozwoli na przychodzący ruch„ SSH ”i„ HTTP ”, a także cały ruch wychodzący, jak pokazano następująco:

1
$ nano secgrp.tf

Teraz umieść w nim następujący kod, jak pokazano następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Zasób „aws_security_group” „Web-Sg”
name = „new-secgrp”
wnikanie
from_port = 80
to_port = 80
protokół = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

wnikanie
from_port = 22
to_port = 22
protokół = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

egress
from_port = 0
to_port = 0
protokół = "-1"
cidr_blocks = ["0.0.0.0/0 "]

Krok 4. Utwórz „główny.plik tf ”, który zdefiniuje pożądaną infrastrukturę, jak pokazano następująco:

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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"

Zasób „AWS_INSTANCE” „WebServer”
ami = "AMI-09D56F8956AB235B3"
instance_type = var.instance_type
Key_name = "ec2-keypair-name"
vpc_security_group_ids = [AWS_Security_Group.Web-Sg.ID]
associate_public_ip_address = true
root_block_device
volum_type = "gp2"
volum_size = "30"
delete_on_termination = false

user_data = <#!/bin/bash
Sudo apt-get Aktualizacja
sudo apt -get aktualiza
sudo apt -get instaluj apache2 -y
sudo systemctl restart apache2
sudo chmod 777 -r/var/www/html/
CD/var/www/html/
sudo echo "

To jest nasza strona internetowa testowa wdrożona za pomocą Terraform.

"> indeks.html
EOF
tagi =
Name = "exampleC2Instance"


Wyjście „iPaddress”
wartość = "$ AWS_Instance.serwer internetowy.public_ip "

W poprzednim kodzie nie zapomnij zmienić „nazwy użytkownika” na nazwę użytkownika systemu i „EC2-KeyPair-name” na nazwę pary kluczowej w twoim przypadku. Zobaczmy trochę o parametrach używanych w powyższych plikach:

AWS_INSTANCE: To tworzy zasób instancji EC2. Instancje można tworzyć, zmienić i zniszczyć

JESTEM: Podaj identyfikator AMI, który ma być używany z instancją EC2

instance_type: Ta opcja służy do deklarowania rodzaju instancji do użycia

Nazwa_key: Określa nazwę pary kluczowej do użycia z instancją EC2

VPC_Security_group_ids: Argument za listą grupy bezpieczeństwa do załączania

associate_public_ip_address: Określ, czy dołączyć publiczne IP do instancji w VPC

dane użytkownika: Używane do przekazywania poleceń/danych w instancji podczas jej uruchamiania

Teraz zainicjuj Terraform, uruchamiając następujące polecenie:

1
$ Terraform init

Teraz zastosuj zmiany za pomocą następującego polecenia:

1
$ Terraform Zastosuj

Weryfikacja procedury

Teraz sprawdźmy, czy utworzono pożądaną instancję EC2. Udaj się do konsoli EC2 i sprawdź instancje bieżące, jak pokazano na poniższym obrazku:

Ponieważ nasza instancja została pomyślnie utworzona, zobaczymy teraz, czy wdrożona przez nas strona internetowa działa poprawnie, czy nie. Skopiuj nazwę DNS lub publiczne IP instancji i wprowadź ją w przeglądarce internetowej, jak pokazano następująco:

Dobrze zrobiony! Nasz serwer WWW działa ładnie.

Oczyszczanie zasobów

Podczas testowania infrastruktury lub gdy jej nie wymaga, wyczyść zasoby, uruchamiając następujące polecenie:

1
$ Terraform niszczy

Wniosek

Ten przewodnik nauczył nas o stworzeniu instancji EC2 na AWS za pomocą Terraform. Wykazaliśmy również, jak zapewnić prosty serwer WWW AWS za pomocą Terraform.