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



07.08.2019

Kurzinformation it-sa, 8-10...

It-sa is one of the leading international trade fairs for IT security. With around 700...
08.07.2019

Narzędzie EDR

ESET Enterprise Inspector
08.07.2019

Usuwanie skutków awarii

Veeam Availability Orchestrator v2
08.07.2019

Indywidualna konfiguracja

baramundi Management Suite 2019
05.07.2019

Technologia Ceph

SUSE Enterprise Storage 6
05.07.2019

Szybkie i bezpieczne...

Konica Minolta bizhub i-Series
05.07.2019

Edge computing

Atos BullSequana Edge
04.07.2019

Terabitowa ochrona

Check Point 16000 i 26000
04.07.2019

Obsługa wideokonferencji

Poly G7500

Automatyzacja i zarządzanie infrastrukturą w chmurze

Data publikacji: 23-05-2019 Autor: Grzegorz Adamowicz
Porównanie popularnych...

Z infrastruktury jako kodu (IaaC, Infrastructure as a Code) korzystają już inżynierowie systemów i administratorzy. Teraz, oprócz zarządzania konfiguracją serwerów i ich usług (za pomocą Ansible lub Puppet), jesteśmy w stanie zestawić całą sieć w chmurze, zanim uruchomimy jakiekolwiek serwery. Proces, jeśli dobrze zaplanowany i wdrożony, jest powtarzalny i przewidywalny. Dzięki temu możemy tak samo przygotować infrastrukturę dla różnych środowisk.

 

O  ile narzędzi do zarządzania konfiguracją serwerów jest multum, o tyle te do zestawiania i utrzymywania infrastruktury można już policzyć na palcach jednej ręki. Aktualnie najbardziej dynamicznie rozwijającym się rozwiązaniem jest Terraform firmy HashiCorp. Porównanie liczb wyszukiwań znanych programów do zarządzania infrastrukturą pokazuje, że Terraform jest też najpopularniejszy (co widać na rysunku obok).

> ROZPOCZĘCIE PRACY

Praca z Terraformem w połączeniu z AWS jest bardzo prosta, jeśli zaczynamy od początku. Migracja istniejącej infrastruktury wymaga już większego nakładu pracy oraz wiedzy na temat aktualnej konfiguracji usługi i powiązania między nimi.

Aby przygotować się do pracy, wystarczy zaopatrzyć się w klucze API do AWS i ściągniętą najnowszą wersję Terraforma – najlepiej już binarną, skompilowaną dla naszej architektury. Terraforma możemy ściągnąć ze strony terraform.io/downloads.html.

Klucze API możemy wygenerować przy tworzeniu nowego użytkownika w konsoli WWW AWS. Najłatwiej, jeśli będzie to użytkownik z pełnymi prawami administracyjnymi, ale możemy również rozważyć opcję ograniczenia tych praw w sytuacji, gdy chcemy, żeby Terraform mógł zarządzać tylko częścią usług w AWS.

Po ściągnięciu Terraforma na nasz lokalny komputer rozpakowujemy plik archiwum i umieszczamy plik wynikowy (terraform lub terraform.exe) w katalogu, który znajduje się w zmiennej PATH w naszym systemie, lub dodajemy katalog ręcznie. Na przykład jeśli Terraform znajduje się w katalogu /home/użytkownik/tools w systemie Linux, wpiszemy:

 

 

Używamy Terraforma w wersji 0.11.13. Warto przy tym kontrolować wersję Terraforma, którą aktualnie stosujemy, ponieważ składnia HCL, języka, z którego korzysta Terraform do opisania infrastruktury, nieznacznie się zmienia i od czasu do czasu wymaga korekty. Bywa to kłopotliwe, jeśli mamy już sporo kodu, który przez to będziemy musieli poprawić. Przez kontrolowanie wersji możemy te zmiany zaplanować i wykonywać na naszych zasadach.

Największą zmianę w składni programiści Terraforma przewidzieli przy skoku z wersji 0.11 do 0.12. Będą to tzw. breaking changes, które spowodują, że obecny kod przestanie działać i będziemy zmuszeni dokonać wielu zmian.

Kiedy mamy już ściągniętą wersję binarną Terraforma, możemy zacząć przygotowywać bazowy kod i dostęp do AWS. Ta druga rzecz będzie bardzo prosta:

 

 

Teraz możemy utworzyć bazowy plik main.tf, w którym umieścimy informacje dla Terraforma, że będziemy używali AWS i w którym miejscu będziemy przechowywać plik stanu. Ponieważ dopiero zaczynamy i będziemy tylko testowali, czy wszystko działa, plik ten zapiszemy w katalogu lokalnym.

 

terraform {
backend "local" {
path = "state/terraform.tfstate"
}
}
provider "aws" {
region = "eu-west-1"
}

 

Po zapisaniu pliku możemy w końcu zainicjalizować nasze bazowe środowisko:

 


Od tego momentu będziemy już w stanie dodawać kolejne elementy do naszego kodu, które znajdą swoje odzwierciedlenie w infrastrukturze w AWS po wydaniu komendy terraform apply.

Sposób pracy z Terraformem wygląda tak, że przed aplikowaniem zmian (komenda apply) powinniśmy najpierw wykonać komendę plan. Powoduje ona, że Terraform czyta nasz plik stanu i kod, po czym porównuje to ze stanem faktycznym, używając API, aby finalnie wyświetlić nam spodziewane akcje, które zostaną podjęte po uruchomieniu apply.

> OCHRONA PLIKU STANU

W pliku stanu Terraforma znajduje się informacja o wszystkich zasobach (sieciach, maszynach wirtualnych, konfiguracjach usług), którymi zarządza Terraform. Jeśli usługa znajduje się w kodzie, ale nie ma jej w pliku stanu, program spróbuje ją utworzyć w AWS.

Znaczy to, że jeśli usługa, np. maszyna wirtualna EC2, jest uruchomiona w AWS, ale nie ma o tym informacji w pliku stanu, natomiast jest w kodzie, Terraform spróbuje utworzyć kolejną maszynę EC2. Dzieje się tak, ponieważ program nie miał nigdzie informacji o tym zasobie.

W pliku stanu mogą również znaleźć się hasła, np. dla usługi RDS hasło użytkownika administracyjnego jest konieczne do uruchomienia usługi. Z uwagi na to powinniśmy dbać o konsystencję i pilnować wersji pliku stanu. Zalecanym rozwiązaniem jest utworzenie kontenera S3 z włączonym wersjonowaniem i tam utrzymywanie pliku. Nie powinniśmy trzymać pliku stanu razem z kodem Terraforma.

Aby się upewnić, że kilka osób w jednym czasie nie będzie w stanie zmieniać pliku stanu, dodatkowo utworzymy tabelę w DynamoDB (NoSQL), która posłuży nam za rozproszone blokowanie zmian w pliku stanu. Jest to mechanizm wbudowany w Terraforma, więc nie musimy sami implementować tej funkcji.

 

[...]

 

Doświadczony inżynier systemów. Specjalizuje się w automatyzacji procesów i monitoringu aplikacji rozproszonych. Propagator ruchu open source. Organizator wydarzeń związanych z IT. Freelancer. W wolnych chwilach twórca fantastyki i fantastyki naukowej. 

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"