Terraform by Hashicorp to infrastruktura i narzędzie kodowe, które można wykorzystać do zarządzania różnymi usługami AWS. Jest podobny do usługi AWS CloudFormation z większą liczbą funkcji i korzyści. Dzięki Terraform możemy zaplanować zmiany, które należy zastosować przed ich faktycznym zastosowaniem.
Co obejmujemy?
W tym przewodniku wykorzystamy funkcje Terraform do tworzenia grup bezpieczeństwa. W tym SG pozwolimy na przykład tylko ruch HTTP i ruch SSH. Następnie dołączymy tę grupę bezpieczeństwa do instancji AWS z serwerem WWW, a następnie sprawdzimy, czy załączone SGS działają zgodnie z oczekiwaniami.
Czego potrzebujemy?
Aby wykonać ten przewodnik, powinieneś mieć konto AWS i dostęp do poświadczeń AWS w lokalnym systemie, z którego uruchamiasz Terraform. Powinieneś także zainstalować terraform w swoim systemie. Możesz odwołać się do oficjalnego przewodnika Terraform, aby dowiedzieć się, jak zainstalować Terraform.
Bity o grupach bezpieczeństwa
Grupy bezpieczeństwa są bardzo ważną częścią usługi EC2. To, co robią, to po prostu kontrolować ruch przychodzący i wychodzący z zasobów, z którymi są powiązane. Na przykład po utworzeniu instancji i dołączeniu grupy bezpieczeństwa, reguła przychodząca decyduje, jaki rodzaj ruchu może osiągnąć instancję. Podobnie reguła wychodząca decyduje, jaki rodzaj ruchu może wyjść z instancji.
Istnieje domyślna grupa bezpieczeństwa, która jest dostarczana z każdym nowo utworzonym VPC (wirtualna chmura prywatna). Następnie możemy dalej tworzyć nowe SG (skrót od grup bezpieczeństwa), ale te SG można dołączyć tylko z zasobami należącymi do tego VPC.
Można dołączyć jedną lub wiele grup bezpieczeństwa w momencie uruchomienia instancji. Do grupy bezpieczeństwa można dołączyć wiele reguł, które można również zmodyfikować później.
Tworzenie grupy bezpieczeństwa
W tej sekcji utworzymy grupę bezpieczeństwa, która umożliwia jedynie ruch wychodzący „HTTP” (Zestaw), i.mi. ruch z instancji i pozwól, aby cały ruch przychodzący (wnikowy) i.mi. ruch przybywa do instancji.
Notatka: Gdy nowa grupa bezpieczeństwa jest tworzona w VPC, ma domyślnie reguła „Zezwól na wszystko”. Gdy nowa grupa bezpieczeństwa jest utworzona w VPC, ta domyślna reguła jest usuwana przez Terraform, ale możesz ponownie skonfigurować tę zasadę.
Teraz tworzymy działający katalog dla naszego projektu Terraform, który będzie utrzymywał wszystkie nasze kolejne pliki. Otwórz edytor tekstu i utwórz następujący plik:
$ nano secgrp.tf
Umieść następujący kod w tym pliku i zapisz go:
Zasób „aws_security_group” „demo-sg”
Nazwa = „sec-grp”
Opis = "Zezwalaj na ruch HTTP i SSH przez Terraform"
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 "]
Dwa zdefiniowane powyżej bloki wnikowe pozwalają protokołom HTTP i SSH z dowolnego miejsca IPv4.
Wyjście umożliwia cały ruch wychodzący.
Opis niektórych wcześniej używanych argumentów:
wyjście: Blok zawierający konfigurację reguł wyjścia.
ingres: Blok zawierający konfigurację reguł wnikania.
opis: Opisuje tytuł grupy bezpieczeństwa. Jest to opcjonalne, a wartość domyślną jest „zarządzana przez Terraform”.
From_port: Oznacza numer portu startowy.
do portu: Oznacza port końcowy.
protokół: Specyfikacja protokołu. Jeśli ta wartość pola wynosi „-1”, wartości from_port i to_port powinny wynosić „0”.
Wdrażanie grupy bezpieczeństwa
Teraz, gdy utworzyliśmy grupę bezpieczeństwa, sprawdzimy, czy faktycznie działa. W tym celu tworzymy instancję EC2 i instalujemy prosty serwer WWW z komunikatem „Tutoriale Linuxhint Terraform”. Otwórz edytor tekstu i utwórz plik „WebServer.TF ”.
$ Nano Webserver.tf
Teraz umieść w nim następujący kod:
Dostawca „AWS”
region = „US-East-1”
access_key = „Your-Access-Key”
secret_key = „Your-Secret-Key”
Zasób „AWS_INSTANCE” „WebServer”
ami = "AMI-09D56F8956AB235B3"
instance_type = „t2.mikro ”
key_name = "your-keypair-nazwa"
vpc_security_group_ids = [AWS_Security_Group.Demo-SG.ID]
associate_public_ip_address = true
root_block_device
volum_type = "gp2"
volum_size = "8"
delete_on_termination = true
user_data = "$ plik („ UserData.cii")"
tagi =
Name = "exampleC2WebServer"
Zastąp „Your-Keyypair-nazwa”, „Your-Secret-Key”, „Your-Access-Key” z wartościami w twoim przypadku. Następnie utwórz plik „UserData.sh ”dla kodu wdrażania serwera WWW.
$ nano UserData.cii
Wklej następującą zawartość:
#!/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 "Samouczki Linuxhint Terraform.
"> indeks.html
Uruchamianie serwera WWW
Nadszedł czas, aby zainicjować katalog Terraform za pomocą następującego polecenia:
$ Terraform init
Warto również sprawdzić składnię naszych plików projektu, uruchamiając następujące polecenie:
$ Terraform potwierdza
Teraz budujemy infrastrukturę za pomocą polecenia „Terraform Apply”:
$ Terraform Zastosuj
Opcjonalnie możemy wyświetlić podgląd zmian za pomocą polecenia „Plan Terraform”. Po zakończeniu polecenia Zastosuj sprawdź konsolę EC2, aby zweryfikować instancję EC2 i jego grupę bezpieczeństwa.
Aby sprawdzić status serwera WWW, otwórz przeglądarkę internetową i wklej nazwę DNS instancji.
Podobnie wypróbuj SSH w instancji, aby sprawdzić, czy jesteśmy w stanie zalogować się z naszym kluczem prywatnym.
Wniosek
W tym przewodniku widzieliśmy proces tworzenia grupy bezpieczeństwa. Dołączyliśmy go również do instancji EC2, aby sprawdzić, czy działa zgodnie z oczekiwaniami. Zarówno protokół SSH, jak i HTTP działają poprawnie.