Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



14.07.2021

Platforma AQUILA

IBM zaprezentował platformę opartą na sztucznej inteligencji służącą do kompleksowej, w...
14.07.2021

Przenoszenie Javy do chmury

JBoss Enterprise
14.07.2021

Nowe okna

Windows 11
14.07.2021

Monitoring sieci

nVision 12.5
14.07.2021

Automatyczna ochrona

Nowości w FortiEDR
14.07.2021

Seria monitorów...

Firma Newline prezentuje serię monitorów interaktywnych MIRA.
14.07.2021

Modularne routery IoT

Cisco Catalyst
14.07.2021

Nowy poziom pracy

Radeon PRO W6000
14.07.2021

SI w monitoringu

Kamery i-PRO S-Series

Wstęp do pracy z Terraform

Data publikacji: 27-05-2021 Autor: Marcel Kamiński

Nowe technologie oraz kształtujące się trendy w branży IT powodują, że wiele usług jest przenoszonych z serwerów lokalnych do chmur. Chmura daje nam dużą niezależność od awarii naszego sprzętu, pozwalają też na łatwy dostęp do wielu zasobów, takich jak duża moc obliczeniowa czy magazyny danych. Pozwalają również łatwo zarządzać i przydzielać dostęp do zbudowanej w nich infrastruktury.

 

Na rynku nie brakuje dostawców chmury – zajmują się nią nie tylko technologiczni giganci, ale także mniejsze, dobrze rokujące firmy. W obu przypadkach zasady działania i zarządzanie są podobne. Każdy dostawca chmury zachęca do jej używania, kusząc niskimi kosztami lub w części darmowymi usługami. Dostawcy dbają również o to, aby systemy zarządzania były intuicyjne oraz łatwe w użyciu.

Przy niewielkich wdrożeniach i tworzeniu jednego środowiska konfiguracja przy użyciu konsoli jest najszybszym i polecanym rozwiązaniem. Sytuacja zdecydowanie się zmienia, gdy musimy obsłużyć kilka środowisk, na przykład jedno do testów, drugie do rozwijania oprogramowania, a trzecie do utrzymywania wersji oprogramowania dla klienta. W takim przypadku zarządzanie wieloma skomplikowanymi strukturami przy użyciu konsoli jest nieoptymalne i powoduje duże ryzyko popełnienia błędu. Wiele firm dostrzegło lukę w postaci braku oprogramowania wspomagającego zarządzanie tego typu środowiskami w chmurze. Jednym z najpopularniejszych rozwiązań jest Terraform firmy HashiCorp.

Terraform oferuje łatwe zarządzanie infrastrukturą, jest wieloplatformowy i działa zgodnie z zasadą „configuration as code”. Sposób zapisywania konfiguracji jest przejrzysty i pozwala w pełni panować nad tworzoną infrastrukturą. Ponadto Terraform minimalizuje problemy wynikające z nieuwagi, które zdarzają się w konsoli, np. gdy podczas szukania jakiegoś ustawienia niechcący coś przełączymy. Dużą zaletą Terraform jest także to, że ma świetnie opracowaną dokumentację.

Do zapisu konfiguracji (kodu) używany jest język HCL (HashiCorp Configuration Language). Zapisany kod można przenosić, kopiować oraz edytować za pomocą popularnych edytorów kodu, np. Visual Studio Code. Terraform daje nam możliwość zarządzania każdym aspektem chmury. Pozwala również, w pewnym stopniu, łączyć dystrybucje i w łatwy sposób migrować pomiędzy środowiskami różnych dostawców chmury. Opisanie wszystkich jego możliwości w jednym artykule jest niemożliwe. W tym omówieniu zajmiemy się prostym projektem serwera Ubuntu, na którym umieścimy stronę internetową zawierającą tekst, aby można było sprawdzić w przeglądarce, czy wszystko działa. Cały projekt utworzymy w chmurze AWS, pamiętajmy jednak, że przedstawiony proces wygląda podobnie w przypadku innych rozwiązań, na przykład w Microsoft Azure.

 

> INSTALACJA TERRAFORM

Po utworzeniu konta AWS instalujemy Terraform – pliki instalacyjne na Windowsa, Linuksa, macOS-a, a nawet systemy z rodziny *BSD i Solarisa znajdziemy po adresem terraform.io. Należy pamiętać, aby plik wykonywalny został umieszczony w folderze, którego adres znajduje się w zmiennej PATH. Cały zamysł Terraform opiera się na wtyczkach nazywanych providerami, które pozwalają zarządzać odpowiednimi zasobami w rozwiązaniach różnych firm. Do popularnych providerów należą między innymi: AWS, Google Cloud, Azure, GitHub, Docker, Heroku, Kubernetes. Całą listę obsługiwanych firm i ich produktów wraz z wtyczkami znaleźć można pod adresem bit.ly/3uTOhXa.

 

> WSTĘPNA KONFIGURACJA

Na początku tworzymy plik z rozszerzeniem .tf, w którym umieścimy kod HCL. W naszym testowym scenariuszu będzie to plik main.tf. Następnie z listy providerów wybieramy AWS i klikamy przycisk Use provider. Spowoduje to wyświetlenie pod tym przyciskiem ramki zawierającej krótki kod, który musimy wkleić do naszego pliku, aby móc używać Terraform do konfiguracji AWS-a. Następnie w linii z komentarzem wprowadzamy dwie zmienne, które pozwolą połączyć się z naszym kontem AWS oraz opcjonalnie możemy zdefiniować region chmury.

terraform {
   required_providers {
    aws = {
     source = "hashicorp/aws"
     version = "~> 3.0"
   }
  }
}

provider "aws" {
  region = "us-east-1"
  access_key = "klucz1"
  secret_key = "klucz2"
}

Oba klucze generujemy poprzez aplikację webową AWS. Po zalogowaniu wyszukujemy EC2 (elastyczną chmurę obliczeniową), najlepiej w wyszukiwarce. To właśnie w jej zakresie będziemy konfigurować nasze komponenty. Gdy znajdziemy się na głównej stronie EC2, musimy znaleźć pozycję Network & Security i wybrać przycisk Create key pair, co pozwoli wygenerować zestaw kluczy. Warto zapisać je w bezpiecznym miejscu, gdyż klucz można zobaczyć tylko raz. Aby później łatwo skonfigurować projekt, warto pobrać zestaw kluczy w formacie pem. W  razie zgubienia kluczy należy je usunąć i utworzyć nowe, zmieniając je również w Terraform.

> ZASOBY AWS

Aby utworzyć prosty projekt, będziemy musieli poznać kilka zasobów AWS.

  1. VPC – Virtual Private Cloud, czyli logiczna, prywatna przestrzeń w chmurze, w której mamy możliwość uruchomienia zasobów AWS, takich jak wirtualne serwery EC2 czy też bazy danych. Każde VPC jest niezależne i ma własną adresację IPv4 lub IPv6, którą będziemy definiować. Warto pamiętać, że domyślnie przestrzeń jest zamknięta i nie ma do niej dostępu z żadnej innej sieci oraz z internetu.
  2. AWS internet gateway – to AWS-owy odpowiednik bramy sieciowej, która jest komponentem VPC i umożliwia komunikację pomiędzy VPC a internetem.
  3. AWS route table – odpowiednik tabeli routingu, która zawiera zestaw zasad określających, dokąd kierowany jest ruch sieciowy z podsieci lub bramy.
  4. AWS Subnet – podsieć. W tradycyjnych rozwiązaniach jest to logicznie odseparowany obszar w naszej sieci, a w przypadku AWS jest on odseparowany w ramach VPC.
  5. AWS route table association – zadeklarowane połączenie między tabelą routingu a podsiecią, bramą internetową lub wirtualną bramą prywatną.
  6. AWS security group – zestaw zasad, które określają, jak ma przebiegać ruch wychodzący i wchodzący do danej sieci. Jej konfiguracja przypomina konfigurację firewalla.
  7. AWS network interface – interfejs sieciowy, do którego możemy przypisać np. zdarzenia lub grupę zasad.
  8. AWS eip (elastic ip) – adres, który pozwala zidentyfikować naszą strukturę. Jest on zmienny i pochodzi z puli adresów dostępnych w AWS. Gdy tylko wyłączymy naszą usługę lub ją zahibernujemy, to może się on zmienić.
  9. AWS public ip – adres publiczny, który umożliwia dostęp z internetu do naszej struktury.
  10. AWS instance – obraz maszyny wirtualnej, której ustawienia lub treść możemy ładować nawet z naszego komputera.


Można zauważyć, że wszystkie logiczne i wirtualne komponenty są tworzone na wzór standardowych rozwiązań. Zazwyczaj komponenty o podobnej nazwie w sieci fizycznej oraz w chmurze pełnią tę samą rolę.

 

[...]

 

Autor jest studentem informatyki na uniwersytecie w Irlandii, pasjonatem programowania oraz cyberbezpieczeństwa.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"