Jeżeli coś trzeba zrobić co najmniej trzy razy - warto to zautomatyzować. Pomaga w tym Infrastructure as Code, czyli automatyzacja powoływania infrastruktury przy pomocy kodu. Terraform jest doskonałym przykładem rozwiązania, które pozwala automatyzować administrowanie Platformą OChK i innymi chmurami publicznymi.
Jak powstało Infrastructure as Code?
Około 2006 roku powstała koncepcja Infrastructure as Code (IaC) - automatyzacja powoływania infrastruktury przy pomocy kodu. IaC powstał w odpowiedzi na pojawienie się chmur obliczeniowych, w których zarządzanie przy pomocy interfejsu webowego okazało się niezwykle skomplikowane i czasochłonne w przypadku dużych projektów. Samo zapanowanie nad zmianami konfiguracyjnymi w istniejących środowiskach stanowiło nie lada wyzwanie, nie mówiąc już o szybkim i bezpiecznym kreowaniu nowych zasobów.
Ponieważ usług chmurowych zaczęło przybywać w błyskawicznym tempie, problem zaczął stawać się masowy i dotyczył już nie tylko wielkich, międzynarodowych firm. Branża IT zaczęła się zastanawiać w jaki sposób dałoby się zapisywać w jednolity sposób konfigurację usług i zarządzać ich zmianą w chmurach. Tak powstała idea Infrastructure as Code, która z założenia jest zgodna z najnowszymi dobrymi praktykami prowadzenia projektów informatycznych i zarządzania zmianą.
Jak działa Infrastructure as Code?
Podstawą idei IaC jest opisywanie wykorzystywanych zasobów w pliku tekstowym w postaci deklaratywnej. Co przez to rozumiemy? Przykładowo: w sposób wystandaryzowany opisujemy w pliku tekstowym, że będziemy chcieli powołać pięć maszyn wirtualnych z określoną liczbą dysków, pamięci oraz procesorów. Mają być połączone z internetem oraz komunikować między sobą.
Tak stworzony plik tekstowy przekazujemy do narzędzia, które rozumie zawarte w nim deklaracje i tworzy zasoby w chmurze. Co więcej, po kolejnym zmodyfikowaniu pliku tekstowego i ponownym uruchomieniu narzędzia, wszystkie zasoby w chmurze zostaną zmodyfikowane, dodane lub usunięte zgodnie ze zmianami w pliku. Właśnie to stanowi sedno filozofii IaC. Jednym z najczęściej używanych narzędzi realizujących koncepcję IaC jest Terraform.
Co to jest Terraform?
Terraform to jedno z najpotężniejszych narzędzi do automatyzacji pracy w chmurach, stworzone przez amerykańską firmę HashiCorp. Terraform umożliwia zarządzanie zasobami w chmurze, ale sam z siebie nie obsługuje konkretnych chmur. Każdy dostawca chmurowy tworzy swojego providera (rodzaj wtyczki) do Terraforma, który umożliwia obsługę jego środowiska chmurowego.
Autorska Platforma OChK ma własnego providera podobnie jak Google Cloud czy Microsoft Azure. Dzięki providerom można w pełni zautomatyzowany sposób zarządzać swoimi zasobami na różnych platformach chmurowych.
Dlaczego warto korzystać z Terraform?
Z Terraform warto korzystać od samego początku pracy w środowisku chmury obliczeniowej. Kluczowe korzyści z użytkowania tego narzędzia to:
- Automatyzacja powoływania zasobów - mając opisane środowisko w postaci pliku tekstowego, bardzo łatwo możemy wykreować drugie, identyczne środowisko np. do testów, developmentu itd. Oszczędność czasu wynikająca z tego, że robi to skrypt zamiast człowieka, jest bardzo duża. Nie tylko oszczędzamy czas, ale mamy jeszcze pewność, że środowiska są identyczne. To kolejna oszczędność, bo w wielu przypadkach po ręcznym wykreowaniu kopii środowiska trzeba rozpocząć proces poszukiwania błędów, niekiedy równie kosztowny, jak pierwotny proces jego kreowania.
- Pełna dokumentacja zmian - dzięki deklaratywnemu podejściu możemy śledzić i kontrolować zmiany między nowymi wydaniami, a także śledzić jak skalowało się nasze środowisko. Możemy też w prosty sposób je audytować, bo zamiast żmudnej inwentaryzacji całej infrastruktury, mamy wszystko w jednym miejscu. Nie mówiąc już o procesie cofania zmian - podejście deklaratywne umożliwia przywrócenie środowiska do tego samego stanu, w jakim było jakiś czas temu. Wystarczy, że poszczególne definicje środowiska będziemy odkładać w Git tak, jak poszczególne wydania systemu.
- Skalowalność i skrócony czas powoływania zasobów - załóżmy, że szykujemy się na duży pik zamówień (np. okres świąteczny). W takim przypadku zmieniając plik tekstowy i uruchamiając Terraforma jesteśmy w stanie w krótkim czasie przeskalować odpowiednio środowisko, a po piku wrócić do stanu poprzedniego. To kolejna oszczędność - w chmurze nie zostaną zbędne zasoby, za które płacimy, bo ktoś zapomniał je usunąć.
W zależności od charakteru biznesu dzięki Terraform można pójść jeszcze o krok dalej w optymalizacji wykorzystania zasobów - nie tylko obsłużyć zwiększone zapotrzebowanie np. w trakcie przedświątecznych zakupów, ale nawet dostosować środowisko do zmian dobowych. Jeżeli organizacja nie pracuje poza godzinami biurowymi może wyłączyć lub zniszczyć zasoby. Terraform pozwala precyzyjnie określić, które zasoby mają być wyłączane po godzinach pracy i włączane po ponownym jej rozpoczęciu.
Jak widać wszystkie zalety korzystania z Terraforma łączy jedna cecha: pozwala redukować koszty i oszczędzać czas. Z jednej strony mogą to być oszczędności w nakładzie pracy na administrowanie zasobami IT: w środowisku on-premise zarządzanym manualnie, administrator jest w stanie zapewnić utrzymanie maksymalnie kilkunastu maszyn wirtualnych. W dobrze skonfigurowanym środowisku chmurowym, wspieranym przez Terraform można zapewnić utrzymanie dla ponad 1000 maszyn wirtualnych. Z drugiej strony - pozwala on na zmniejszenie rachunku od dostawcy chmury publicznej, dzięki wyłączaniu niepotrzebnych zasobów.
A oto obszary, w których Terraform jest wykorzystywany najczęściej:
Kreowanie Landing Zone - po odpowiednim opracowaniu założeń, samo kreowanie Landing Zone warto już powierzyć właśnie Terraformowi - to narzędzie wydaje się być wręcz idealne do powołania struktury nowego projektu, nadawania takich samych uprawnień oraz dostępów do zasobów. Projektowanie procesów CI/CD, czyli procesów zarządzania zmianą i nowymi wydaniami w oferowanych przez nas usługach. Podejście DevOps i GitOps wręcz natywnie asymiluje zarządzanie zmianami przy pomocy Terraform.
Zarządzanie Hybrid Cloud - dzięki Terraform możemy z jednego miejsca zarządzać zasobami we wszystkich chmurach bez żmudnego logowania się do konsoli każdej z nich. Możemy też stworzyć mechanizmy automatycznej migracji środowisk między chmurami. Możliwości jest coraz więcej między innymi dzięki rozwojowi narzędzi wspierających.
Kiedy zatem najlepiej wykorzystać Terraform we własnym biznesie? Najlepiej od samego początku tj. od uruchomienia pierwszego zasobu w chmurze obliczeniowej. Wraz z rozwojem organizacji w łatwy sposób będzie można uzupełniać zmiany w architekturze. Dzięki takiemu podejściu w dużo prostszy sposób będziemy w stanie z czasem dokonać gruntownych zmian w architekturze lub wykorzystać Terraforma w opisany powyżej sposób.
Możliwe jest również wykorzystanie Terraforma w istniejących już systemach wykreowanych w chmurze, wymaga to jednak inwentaryzacji tych zasobów i zaimportowania ich do Terraform.
Jeśli po lekturze tego artykułu, uważasz, że warto wypróbować Terraform w Twoim biznesie zapraszamy do kontaktu. Pomagamy zarówno w stawianiu pierwszych kroków na Platformie OChK, jak i konfiguracji Terraforma. Starannie wykonana praca na początku przygody w chmurze daje w efekcie wygodę administrowania i niebagatelne oszczędności w dłuższej perspektywie.
Oto linki do dokumentacji dotyczącej Terraform oraz providerów dla poszczególnych chmur:
Dokumentacja TerraformDokumentacja providera Terraform Platforma OChKDokumentacja providera Terraform Google CloudDokumentacja providera Terraform Microsoft Azure